[ { "site": "12306", "name": "login", "description": "Open 12306 login and wait until the browser session is authenticated", "access": "write", "domain": "12306.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_name" ], "type": "js", "modulePath": "12306/auth.js", "sourceFile": "12306/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "12306", "name": "me", "description": "Show the logged-in 12306 account summary. Sensitive fields (real name, email, mobile, birth date) are masked by default; pass --include-sensitive to opt in.", "access": "read", "domain": "kyfw.12306.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "include-sensitive", "type": "boolean", "default": false, "required": false, "help": "Reveal unmasked real name / email / mobile / birth date. The 12306 ID-number mask is server-side and never decoded." } ], "columns": [ "username", "real_name", "email", "mobile", "birth_date", "sex", "country", "user_type", "member", "active" ], "type": "js", "modulePath": "12306/me.js", "sourceFile": "12306/me.js", "navigateBefore": "https://kyfw.12306.cn" }, { "site": "12306", "name": "orders", "description": "List in-progress 12306 orders (not yet ridden, refunded, or completed) for the logged-in user", "access": "read", "domain": "kyfw.12306.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "include-sensitive", "type": "boolean", "default": false, "required": false, "help": "Reveal unmasked passenger names in order rows. Masked by default." } ], "columns": [ "order_id", "order_date", "train_code", "from_station", "to_station", "departure", "passengers", "status", "amount" ], "type": "js", "modulePath": "12306/orders.js", "sourceFile": "12306/orders.js", "navigateBefore": "https://kyfw.12306.cn" }, { "site": "12306", "name": "passengers", "description": "List the logged-in user's saved 12306 passengers. Sensitive fields are masked by default; pass --include-sensitive to opt in.", "access": "read", "domain": "kyfw.12306.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max passengers to return (1-50)" }, { "name": "include-sensitive", "type": "boolean", "default": false, "required": false, "help": "Reveal unmasked real names and birth dates. The 12306 ID-number / mobile masks are server-side and never decoded." } ], "columns": [ "name", "sex", "born_year", "id_type", "id_no", "mobile", "passenger_type", "country" ], "type": "js", "modulePath": "12306/passengers.js", "sourceFile": "12306/passengers.js", "navigateBefore": "https://kyfw.12306.cn" }, { "site": "12306", "name": "price", "description": "Look up 12306 ticket prices by seat class for one train on a given date and segment (anonymous, no login required)", "access": "read", "domain": "kyfw.12306.cn", "strategy": "public", "browser": false, "args": [ { "name": "train-no", "type": "str", "required": true, "positional": true, "help": "Internal train_no from `12306 trains` (e.g. 24000000G10L)" }, { "name": "from", "type": "str", "required": true, "help": "Origin station (Chinese name, telecode, or pinyin) - must be a stop of this train" }, { "name": "to", "type": "str", "required": true, "help": "Destination station - must be a stop of this train" }, { "name": "date", "type": "str", "required": true, "help": "Departure date in YYYY-MM-DD" }, { "name": "seat-types", "type": "str", "default": "OM9PA1A3A4FWZ", "required": false, "help": "Seat-type letters to query (default covers the common classes). Examples: OM9 (二等/一等/商务), A1A3A4 (硬座/硬卧/软卧)." } ], "columns": [ "seat_code", "seat_name", "price", "currency" ], "type": "js", "modulePath": "12306/price.js", "sourceFile": "12306/price.js" }, { "site": "12306", "name": "stations", "description": "Search 12306 (China Railway) stations by Chinese name, telecode, or pinyin keyword", "access": "read", "domain": "kyfw.12306.cn", "strategy": "public", "browser": false, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Chinese substring (上海), telecode (AOH), or pinyin (shanghai)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum results (1-50)" } ], "columns": [ "name", "code", "pinyin", "abbr", "city" ], "type": "js", "modulePath": "12306/stations.js", "sourceFile": "12306/stations.js" }, { "site": "12306", "name": "train", "description": "List every station a 12306 train calls at, with arrival / departure / stopover time (anonymous, no login required)", "access": "read", "domain": "kyfw.12306.cn", "strategy": "public", "browser": false, "args": [ { "name": "train-no", "type": "str", "required": true, "positional": true, "help": "Internal train_no from `12306 trains` (e.g. 24000000G10L), not the public code (G1)" }, { "name": "from", "type": "str", "required": true, "help": "Origin station for the segment: Chinese name, telecode, or pinyin" }, { "name": "to", "type": "str", "required": true, "help": "Destination station for the segment" }, { "name": "date", "type": "str", "required": true, "help": "Departure date in YYYY-MM-DD" } ], "columns": [ "station_no", "station_name", "arrive_time", "start_time", "stopover_time" ], "type": "js", "modulePath": "12306/train.js", "sourceFile": "12306/train.js" }, { "site": "12306", "name": "trains", "description": "List trains between two 12306 stations on a given date (anonymous, no login required)", "access": "read", "domain": "kyfw.12306.cn", "strategy": "public", "browser": false, "args": [ { "name": "from", "type": "str", "required": true, "positional": true, "help": "Origin station: Chinese name (北京), telecode (BJP), or pinyin (beijing)" }, { "name": "to", "type": "str", "required": true, "positional": true, "help": "Destination station: same forms as " }, { "name": "date", "type": "str", "required": true, "help": "Departure date in YYYY-MM-DD" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Maximum rows (1-100)" } ], "columns": [ "code", "from_station", "to_station", "start_time", "arrive_time", "duration", "available", "business_seat", "first_seat", "second_seat", "soft_sleeper", "hard_sleeper", "hard_seat", "no_seat", "train_no" ], "type": "js", "modulePath": "12306/trains.js", "sourceFile": "12306/trains.js" }, { "site": "12306", "name": "whoami", "description": "Show the current logged-in 12306 account", "access": "read", "domain": "12306.cn", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_name" ], "type": "js", "modulePath": "12306/auth.js", "sourceFile": "12306/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "1688", "name": "assets", "description": "列出 1688 商品页可提取的图片/视频素材", "access": "read", "domain": "www.1688.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "1688 商品 URL 或 offer ID(如 887904326744)" } ], "columns": [ "offer_id", "title", "main_count", "sku_count", "detail_count", "video_count" ], "type": "js", "modulePath": "1688/assets.js", "sourceFile": "1688/assets.js", "navigateBefore": "https://www.1688.com" }, { "site": "1688", "name": "download", "description": "批量下载 1688 商品页可提取的图片和视频素材", "access": "read", "domain": "www.1688.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "1688 商品 URL 或 offer ID(如 887904326744)" }, { "name": "output", "type": "str", "default": "./1688-downloads", "required": false, "help": "输出目录" } ], "columns": [ "index", "type", "status", "size" ], "type": "js", "modulePath": "1688/download.js", "sourceFile": "1688/download.js", "navigateBefore": "https://www.1688.com" }, { "site": "1688", "name": "item", "description": "1688 商品详情(公开商品字段、价格阶梯、卖家基础信息)", "access": "read", "domain": "www.1688.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "1688 商品 URL 或 offer ID(如 887904326744)" } ], "columns": [ "offer_id", "title", "price_text", "moq_text", "seller_name", "origin_place" ], "type": "js", "modulePath": "1688/item.js", "sourceFile": "1688/item.js", "navigateBefore": false }, { "site": "1688", "name": "login", "description": "Open 1688 login and wait until the browser session is authenticated", "access": "write", "domain": "1688.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "1688/auth.js", "sourceFile": "1688/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "1688", "name": "search", "description": "1688 商品搜索(结果候选、卖家链接、价格/MOQ/销量文本)", "access": "read", "domain": "www.1688.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词,如 \"置物架\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "结果数量上限(默认 20,最大 100)" } ], "columns": [ "rank", "offer_id", "title", "item_url", "price_text", "moq_text", "seller_name", "member_id", "location" ], "type": "js", "modulePath": "1688/search.js", "sourceFile": "1688/search.js", "navigateBefore": false }, { "site": "1688", "name": "store", "description": "1688 店铺/供应商公开信息(联系方式、主营、入驻年限、公开服务信号)", "access": "read", "domain": "www.1688.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "1688 店铺 URL 或 member ID(如 b2b-22154705262941f196)" } ], "columns": [ "store_name", "years_on_platform_text", "location", "return_rate_text" ], "type": "js", "modulePath": "1688/store.js", "sourceFile": "1688/store.js", "navigateBefore": false }, { "site": "1688", "name": "whoami", "description": "Show the current logged-in 1688 account", "access": "read", "domain": "1688.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "1688/auth.js", "sourceFile": "1688/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "1point3acres", "name": "digest", "description": "一亩三分地 精华帖(编辑推荐 / 加精)", "access": "read", "domain": "www.1point3acres.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数(默认 20,最多 50)" } ], "columns": [ "rank", "tid", "title", "forum", "author", "replies", "views", "lastReplyTime", "url" ], "type": "js", "modulePath": "1point3acres/digest.js", "sourceFile": "1point3acres/digest.js" }, { "site": "1point3acres", "name": "forum", "description": "浏览一亩三分地某个版块的帖子列表(按 fid)", "access": "read", "domain": "www.1point3acres.com", "strategy": "public", "browser": false, "args": [ { "name": "fid", "type": "str", "required": true, "positional": true, "help": "版块 ID,例如 145(海外面经)、198(海外职位内推)、27(研究生申请)" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "页码(默认 1)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数(默认 20,最多 50)" } ], "columns": [ "rank", "tid", "kind", "title", "author", "replies", "views", "lastReplyTime", "url" ], "type": "js", "modulePath": "1point3acres/forum.js", "sourceFile": "1point3acres/forum.js" }, { "site": "1point3acres", "name": "forums", "description": "一亩三分地 所有版块(fid + 版块名)", "access": "read", "domain": "www.1point3acres.com", "strategy": "public", "browser": false, "args": [ { "name": "filter", "type": "string", "default": "", "required": false, "help": "按版块名关键字过滤(子串匹配,中英文)" } ], "columns": [ "fid", "name", "url" ], "type": "js", "modulePath": "1point3acres/forums.js", "sourceFile": "1point3acres/forums.js" }, { "site": "1point3acres", "name": "hot", "description": "一亩三分地 今日热门帖子(按热度排序,约 50 条)", "access": "read", "domain": "www.1point3acres.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数(默认 20,最多 50)" } ], "columns": [ "rank", "tid", "title", "forum", "author", "replies", "views", "lastReplyTime", "url" ], "type": "js", "modulePath": "1point3acres/hot.js", "sourceFile": "1point3acres/hot.js" }, { "site": "1point3acres", "name": "latest", "description": "一亩三分地 最新发帖(按发帖时间倒序)", "access": "read", "domain": "www.1point3acres.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数(默认 20,最多 50)" } ], "columns": [ "rank", "tid", "title", "forum", "author", "replies", "views", "postTime", "url" ], "type": "js", "modulePath": "1point3acres/latest.js", "sourceFile": "1point3acres/latest.js" }, { "site": "1point3acres", "name": "login", "description": "Open 1point3acres login and wait until the browser session is authenticated", "access": "write", "domain": "1point3acres.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "username" ], "type": "js", "modulePath": "1point3acres/auth.js", "sourceFile": "1point3acres/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "1point3acres", "name": "notifications", "description": "一亩三分地 站内通知(互动 / 点评 / @ 我;需要登录)", "access": "read", "domain": "www.1point3acres.com", "strategy": "cookie", "browser": true, "args": [ { "name": "kind", "type": "string", "default": "mypost", "required": false, "help": "通知类型:mypost(我的帖子) / interactive(互动) / system(系统) / app(应用)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数" } ], "columns": [ "index", "from", "summary", "time", "threadUrl" ], "type": "js", "modulePath": "1point3acres/notifications.js", "sourceFile": "1point3acres/notifications.js", "navigateBefore": false }, { "site": "1point3acres", "name": "search", "description": "一亩三分地 站内关键字搜索(需要登录)", "access": "read", "domain": "www.1point3acres.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键字" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数(默认 20,最多 50)" }, { "name": "fid", "type": "string", "default": "", "required": false, "help": "限定版块 ID(可选)" } ], "columns": [ "rank", "tid", "title", "forum", "author", "replies", "views", "postTime", "url" ], "type": "js", "modulePath": "1point3acres/search.js", "sourceFile": "1point3acres/search.js", "navigateBefore": false }, { "site": "1point3acres", "name": "thread", "description": "一亩三分地 帖子详情 + 楼层(主楼 + 回复)", "access": "read", "domain": "www.1point3acres.com", "strategy": "public", "browser": false, "args": [ { "name": "tid", "type": "str", "required": true, "positional": true, "help": "帖子 ID(数字,见 `hot`/`latest` 返回的 tid)" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "楼层分页页码(默认 1)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回楼层条数(默认 10,含主楼)" }, { "name": "contentLimit", "type": "int", "default": 400, "required": false, "help": "每楼正文截断长度(默认 400 字符,最少 50)" } ], "columns": [ "floor", "pid", "author", "postTime", "content", "url" ], "type": "js", "modulePath": "1point3acres/thread.js", "sourceFile": "1point3acres/thread.js" }, { "site": "1point3acres", "name": "user", "description": "一亩三分地 用户空间(用户组 / 积分 / 大米 / 帖子数 等)", "access": "read", "domain": "www.1point3acres.com", "strategy": "public", "browser": false, "args": [ { "name": "who", "type": "str", "required": true, "positional": true, "help": "用户名或 uid(纯数字按 uid 查,否则按用户名)" } ], "columns": [ "uid", "username", "group", "credits", "rice", "posts", "threads", "digests", "registerTime", "lastAccess", "profileUrl" ], "type": "js", "modulePath": "1point3acres/user.js", "sourceFile": "1point3acres/user.js" }, { "site": "1point3acres", "name": "whoami", "description": "Show the current logged-in 1point3acres account", "access": "read", "domain": "1point3acres.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "username" ], "type": "js", "modulePath": "1point3acres/auth.js", "sourceFile": "1point3acres/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "36kr", "name": "article", "description": "获取36氪文章正文内容", "access": "read", "domain": "www.36kr.com", "strategy": "intercept", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Article ID or full 36kr article URL" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "36kr/article.js", "sourceFile": "36kr/article.js", "navigateBefore": true }, { "site": "36kr", "name": "hot", "description": "36氪热榜 — trending articles (renqi/zonghe/shoucang/catalog)", "access": "read", "domain": "www.36kr.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items (max 50)" }, { "name": "type", "type": "string", "default": "catalog", "required": false, "help": "List type: renqi (人气), zonghe (综合), shoucang (收藏), catalog (热门资讯)" } ], "columns": [ "rank", "title", "url" ], "type": "js", "modulePath": "36kr/hot.js", "sourceFile": "36kr/hot.js" }, { "site": "36kr", "name": "news", "description": "Latest tech/startup news from 36kr (36氪)", "access": "read", "domain": "www.36kr.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of articles (max 50)" } ], "columns": [ "rank", "title", "summary", "date", "url" ], "type": "js", "modulePath": "36kr/news.js", "sourceFile": "36kr/news.js" }, { "site": "36kr", "name": "search", "description": "搜索36氪文章", "access": "read", "domain": "www.36kr.com", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"AI\", \"OpenAI\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results (max 50)" } ], "columns": [ "rank", "title", "date", "url" ], "type": "js", "modulePath": "36kr/search.js", "sourceFile": "36kr/search.js" }, { "site": "51job", "name": "company", "description": "51job 公司简介 + 在招职位(按 encCoId)", "access": "read", "domain": "jobs.51job.com", "strategy": "cookie", "browser": true, "args": [ { "name": "encCoId", "type": "string", "required": true, "positional": true, "help": "加密公司 ID(search 返回的 encCoId)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回职位数(1-50)" } ], "columns": [ "rank", "jobId", "title", "salary", "city", "workYear", "degree", "funcType", "issueDate", "url", "companyName", "companyType", "companySize", "companyIndustry", "companyIntro", "companyUrl" ], "type": "js", "modulePath": "51job/company.js", "sourceFile": "51job/company.js", "navigateBefore": false }, { "site": "51job", "name": "detail", "description": "51job 职位详情(按 jobId)", "access": "read", "domain": "jobs.51job.com", "strategy": "cookie", "browser": true, "args": [ { "name": "jobId", "type": "string", "required": true, "positional": true, "help": "职位 ID(search 返回的 jobId)" } ], "columns": [ "jobId", "title", "salary", "location", "workYear", "degree", "category", "address", "ageRequirement", "description", "welfare", "company", "companyType", "companySize", "companyIndustry", "companyUrl", "url" ], "type": "js", "modulePath": "51job/detail.js", "sourceFile": "51job/detail.js", "navigateBefore": false }, { "site": "51job", "name": "hot", "description": "51job 推荐职位(按城市/行业/排序浏览)", "access": "read", "domain": "we.51job.com", "strategy": "cookie", "browser": true, "args": [ { "name": "area", "type": "string", "default": "全国", "required": false, "help": "城市名或 6 位城市码(默认 \"全国\")" }, { "name": "sort", "type": "string", "default": "综合", "required": false, "help": "排序:综合 / 最新 / 薪资 / 距离" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "页码(1-based)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数(1-50)" } ], "columns": [ "rank", "jobId", "title", "salary", "salaryMin", "salaryMax", "city", "district", "workYear", "degree", "tags", "company", "companyFull", "companyType", "companySize", "industry", "hr", "issueDate", "url", "companyUrl", "encCoId" ], "type": "js", "modulePath": "51job/hot.js", "sourceFile": "51job/hot.js", "navigateBefore": false }, { "site": "51job", "name": "search", "description": "51job 前程无忧关键词职位搜索", "access": "read", "domain": "we.51job.com", "strategy": "cookie", "browser": true, "args": [ { "name": "keyword", "type": "string", "required": true, "positional": true, "help": "搜索关键词(岗位名 / 技能 / 公司)" }, { "name": "area", "type": "string", "default": "全国", "required": false, "help": "城市名或 6 位城市码(如 \"杭州\" / \"080200\" / \"全国\")" }, { "name": "salary", "type": "string", "default": "", "required": false, "help": "薪资区间(如 \"10-15k\" / \"1-1.5万\" / \"20-30k\")" }, { "name": "experience", "type": "string", "default": "", "required": false, "help": "工作年限(如 \"应届\" / \"1-3年\" / \"3-5年\" / \"5-7年\")" }, { "name": "degree", "type": "string", "default": "", "required": false, "help": "学历要求(如 \"本科\" / \"大专\" / \"硕士\")" }, { "name": "companyType", "type": "string", "default": "", "required": false, "help": "公司性质(如 \"外资\" / \"国企\" / \"民营\")" }, { "name": "companySize", "type": "string", "default": "", "required": false, "help": "公司规模(如 \"50-150\" / \"1000-5000\")" }, { "name": "sort", "type": "string", "default": "综合", "required": false, "help": "排序:综合 / 最新 / 薪资 / 距离" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "页码(1-based)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数(1-50)" } ], "columns": [ "rank", "jobId", "title", "salary", "salaryMin", "salaryMax", "city", "district", "workYear", "degree", "tags", "company", "companyFull", "companyType", "companySize", "industry", "hr", "issueDate", "url", "companyUrl", "encCoId" ], "type": "js", "modulePath": "51job/search.js", "sourceFile": "51job/search.js", "navigateBefore": false }, { "site": "aibase", "name": "news", "description": "AIbase 日报 - 每天三分钟关注AI行业趋势", "access": "read", "domain": "www.aibase.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of news items to return (max 50)" } ], "columns": [ "rank", "title", "url" ], "type": "js", "modulePath": "aibase/news.js", "sourceFile": "aibase/news.js" }, { "site": "amazon", "name": "bestsellers", "description": "Amazon Best Sellers pages for category candidate discovery", "access": "read", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": false, "positional": true, "help": "Ranking URL or supported Amazon path. Omit to use the list root." }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Maximum number of ranked items to return (default 100)" } ], "columns": [ "list_type", "rank", "asin", "title", "price_text", "rating_value", "review_count" ], "type": "js", "modulePath": "amazon/bestsellers.js", "sourceFile": "amazon/bestsellers.js", "navigateBefore": false }, { "site": "amazon", "name": "discussion", "description": "Amazon review summary and sample customer discussion from product review pages", "access": "read", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "ASIN or product URL, for example B0FJS72893" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Maximum number of review samples to return (default 10)" } ], "columns": [ "asin", "average_rating_value", "total_review_count" ], "type": "js", "modulePath": "amazon/discussion.js", "sourceFile": "amazon/discussion.js", "navigateBefore": false }, { "site": "amazon", "name": "login", "description": "Open amazon login and wait until the browser session is authenticated", "access": "write", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_name" ], "type": "js", "modulePath": "amazon/auth.js", "sourceFile": "amazon/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "amazon", "name": "movers-shakers", "description": "Amazon Movers & Shakers pages for short-term growth signals", "access": "read", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": false, "positional": true, "help": "Ranking URL or supported Amazon path. Omit to use the list root." }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Maximum number of ranked items to return (default 100)" } ], "columns": [ "list_type", "rank", "asin", "title", "price_text", "rating_value", "review_count" ], "type": "js", "modulePath": "amazon/movers-shakers.js", "sourceFile": "amazon/movers-shakers.js", "navigateBefore": false }, { "site": "amazon", "name": "new-releases", "description": "Amazon New Releases pages for early momentum discovery", "access": "read", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": false, "positional": true, "help": "Ranking URL or supported Amazon path. Omit to use the list root." }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Maximum number of ranked items to return (default 100)" } ], "columns": [ "list_type", "rank", "asin", "title", "price_text", "rating_value", "review_count" ], "type": "js", "modulePath": "amazon/new-releases.js", "sourceFile": "amazon/new-releases.js", "navigateBefore": false }, { "site": "amazon", "name": "offer", "description": "Amazon seller, buy box, and fulfillment facts from the product page", "access": "read", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "ASIN or product URL, for example B0FJS72893" } ], "columns": [ "asin", "price_text", "sold_by", "ships_from", "is_amazon_sold", "is_amazon_fulfilled" ], "type": "js", "modulePath": "amazon/offer.js", "sourceFile": "amazon/offer.js", "navigateBefore": false }, { "site": "amazon", "name": "product", "description": "Amazon product page facts for candidate validation", "access": "read", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "ASIN or product URL, for example B0FJS72893" } ], "columns": [ "asin", "title", "price_text", "rating_value", "review_count" ], "type": "js", "modulePath": "amazon/product.js", "sourceFile": "amazon/product.js", "navigateBefore": false }, { "site": "amazon", "name": "search", "description": "Amazon search results for product discovery and coarse filtering", "access": "read", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query, for example \"desk shelf organizer\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum number of results to return (default 20)" } ], "columns": [ "rank", "asin", "title", "price_text", "rating_value", "review_count" ], "type": "js", "modulePath": "amazon/search.js", "sourceFile": "amazon/search.js", "navigateBefore": false }, { "site": "amazon", "name": "whoami", "description": "Show the current logged-in amazon account", "access": "read", "domain": "amazon.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_name" ], "type": "js", "modulePath": "amazon/auth.js", "sourceFile": "amazon/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "antigravity", "name": "add-context", "description": "Click the Add context button in the composer (opens file/URL picker for context attachment).", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "cookies", "description": "List cookies on the Antigravity renderer (JS-visible via document.cookie).", "access": "read", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js", "navigateBefore": true }, { "site": "antigravity", "name": "copy-code", "description": "Return the text of a code block in the current conversation. Default: last code block; pass --index N (1-based from top) to pick a specific one.", "access": "read", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "index", "type": "int", "required": false, "help": "1-based index of code block (default: last)" } ], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "copy-message", "description": "Return the text of the last assistant message (best-effort: walks up from the last visible Copy button).", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "click-button", "type": "boolean", "default": false, "required": false, "help": "Also click the in-UI Copy button" } ], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "delete", "description": "Delete an Antigravity conversation by ID. Antigravity asks for confirmation; we click through it. Require --yes to actually delete.", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Conversation UUID (the part after \"convo-pill-\" in the sidebar testid)" }, { "name": "yes", "type": "boolean", "default": false, "required": false, "help": "Actually delete (default: dry-run preview)" } ], "columns": [ "status", "id" ], "type": "js", "modulePath": "antigravity/delete.js", "sourceFile": "antigravity/delete.js", "navigateBefore": true }, { "site": "antigravity", "name": "display-options", "description": "Open the Display Options menu and list its items.", "access": "read", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Item" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "dump", "description": "Dump the DOM to help AI understand the UI", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "htmlFile", "snapFile" ], "type": "js", "modulePath": "antigravity/dump.js", "sourceFile": "antigravity/dump.js", "navigateBefore": true }, { "site": "antigravity", "name": "extract-code", "description": "Extract multi-line code blocks from the current Antigravity conversation", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "code" ], "type": "js", "modulePath": "antigravity/extract-code.js", "sourceFile": "antigravity/extract-code.js", "navigateBefore": true }, { "site": "antigravity", "name": "history", "description": "List visible Antigravity conversations from the sidebar", "access": "read", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max conversations to return" } ], "columns": [ "Index", "Id", "Title" ], "type": "js", "modulePath": "antigravity/history.js", "sourceFile": "antigravity/history.js", "navigateBefore": true }, { "site": "antigravity", "name": "idb-list", "description": "List IndexedDB databases on the Antigravity renderer.", "access": "read", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js", "navigateBefore": true }, { "site": "antigravity", "name": "mark-read", "description": "Mark an unread Antigravity conversation as read. Fails if the row is already read or the postcondition cannot be verified.", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Conversation UUID (the part after \"convo-pill-\" in the sidebar testid)" } ], "columns": [ "status", "id", "clicked" ], "type": "js", "modulePath": "antigravity/mark-read.js", "sourceFile": "antigravity/mark-read.js", "navigateBefore": true }, { "site": "antigravity", "name": "model", "description": "Read or switch the active model in Antigravity. Without arguments, reports the current model. With (substring, case-insensitive), switches.", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "name", "type": "str", "required": false, "positional": true, "help": "Substring (case-insensitive) of target model name. Omit to read current." }, { "name": "list", "type": "boolean", "default": false, "required": false, "help": "List models in the picker (does not switch)" } ], "columns": [ "Status", "Model" ], "type": "js", "modulePath": "antigravity/model.js", "sourceFile": "antigravity/model.js", "navigateBefore": true }, { "site": "antigravity", "name": "nav", "description": "Click Go Back or Go Forward (Antigravity in-app history).", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "direction", "type": "str", "required": true, "positional": true, "help": "back or forward" } ], "columns": [ "Status" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "new", "description": "Start a new conversation / clear context in Antigravity", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "status" ], "type": "js", "modulePath": "antigravity/new.js", "sourceFile": "antigravity/new.js", "navigateBefore": true }, { "site": "antigravity", "name": "react", "description": "Click \"Good response\" or \"Bad response\" on the LAST assistant message.", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "kind", "type": "str", "required": true, "positional": true, "help": "good or bad" } ], "columns": [ "Status", "Reaction" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "read", "description": "Read the latest chat messages from Antigravity AI", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "last", "type": "str", "required": false, "help": "Number of recent messages to read (not fully implemented due to generic structure, currently returns full history text or latest chunk)" } ], "columns": [ "role", "content" ], "type": "js", "modulePath": "antigravity/read.js", "sourceFile": "antigravity/read.js", "navigateBefore": true }, { "site": "antigravity", "name": "recent-paths", "description": "Show Antigravity's recently-opened folders/files (history.recentlyOpenedPathsList).", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max rows to return" } ], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js" }, { "site": "antigravity", "name": "rename", "description": "Rename an Antigravity conversation by ID (NOT YET IMPLEMENTED — see source comment).", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Conversation UUID (the part after \"convo-pill-\" in the sidebar testid)" }, { "name": "title", "type": "string", "required": true, "positional": true, "help": "New title" } ], "columns": [ "status" ], "type": "js", "modulePath": "antigravity/rename.js", "sourceFile": "antigravity/rename.js", "navigateBefore": true }, { "site": "antigravity", "name": "revert", "description": "Click the revert button (per-message revert for agent changes). Requires --yes (this modifies your workspace).", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "yes", "type": "boolean", "default": false, "required": false, "help": "Actually revert (default: dry-run)" } ], "columns": [ "Status" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "send", "description": "Send a message to Antigravity AI via the internal Lexical editor", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "message", "type": "str", "required": true, "positional": true, "help": "The message text to send" } ], "columns": [ "Status", "Message" ], "type": "js", "modulePath": "antigravity/send.js", "sourceFile": "antigravity/send.js", "navigateBefore": true }, { "site": "antigravity", "name": "settings", "description": "Click the Antigravity settings button (matched by data-testid=\"settings-button\").", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "settings-read", "description": "Read Antigravity's user settings.json (theme, proxy, agCockpit, tfa.system.autoAccept, etc.).", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js" }, { "site": "antigravity", "name": "sidebar-toggle", "description": "Click Toggle Sidebar (collapses/expands the Antigravity sidebar).", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "state-get", "description": "Read one value from Antigravity's state.vscdb. Pass --workspace for per-workspace.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "Storage key name" }, { "name": "workspace", "type": "str", "required": false, "help": "Workspace id (from workspaces-list) to query per-workspace DB" }, { "name": "max-bytes", "type": "int", "default": 8000, "required": false, "help": "Truncate value to this many chars" } ], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js" }, { "site": "antigravity", "name": "state-keys", "description": "List keys in Antigravity's globalStorage state.vscdb (VSCode-style). Pass --workspace to query a per-workspace DB. Works while Antigravity is closed.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "filter", "type": "str", "required": false, "help": "Case-insensitive substring filter over keys" }, { "name": "workspace", "type": "str", "required": false, "help": "Workspace id (from workspaces-list) to query per-workspace DB" }, { "name": "limit", "type": "int", "default": 200, "required": false, "help": "Max rows to return" } ], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js" }, { "site": "antigravity", "name": "status", "description": "Check Antigravity CDP connection and get current page state", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "status", "url", "title" ], "type": "js", "modulePath": "antigravity/status.js", "sourceFile": "antigravity/status.js", "navigateBefore": true }, { "site": "antigravity", "name": "storage-get", "description": "Read a single localStorage / sessionStorage value on the Antigravity renderer.", "access": "read", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "Storage key name" }, { "name": "storage", "type": "str", "default": "local", "required": false, "help": "\"local\" or \"session\"" }, { "name": "max-bytes", "type": "int", "default": 4000, "required": false, "help": "Truncate value to this many chars" } ], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js", "navigateBefore": true }, { "site": "antigravity", "name": "storage-keys", "description": "List localStorage / sessionStorage keys on the Antigravity renderer (CDP).", "access": "read", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [ { "name": "storage", "type": "str", "default": "local", "required": false, "help": "\"local\" or \"session\"" }, { "name": "filter", "type": "str", "required": false, "help": "Case-insensitive substring filter" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Max rows to return" } ], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js", "navigateBefore": true }, { "site": "antigravity", "name": "toggle-aux", "description": "Toggle the Auxiliary Pane (Antigravity's secondary panel for code/preview).", "access": "write", "domain": "127.0.0.1", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "antigravity/audit-extras.js", "sourceFile": "antigravity/audit-extras.js", "navigateBefore": true }, { "site": "antigravity", "name": "watch", "description": "Stream new chat messages from Antigravity in real-time", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 86400, "required": false, "help": "Max seconds to keep watching (default: 86400 — 24h)" } ], "columns": [], "type": "js", "modulePath": "antigravity/watch.js", "sourceFile": "antigravity/watch.js", "navigateBefore": true }, { "site": "antigravity", "name": "workspaces-list", "description": "List Antigravity workspaceStorage entries (each represents a previously-opened folder).", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max rows to return" } ], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version", "Kind", "Path", "Workspace Id", "Folder", "Modified", "Field", "Value" ], "type": "js", "modulePath": "antigravity/storage.js", "sourceFile": "antigravity/storage.js" }, { "site": "apple-podcasts", "name": "episodes", "description": "List recent episodes of an Apple Podcast (use ID from search)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Podcast ID (collectionId from search output)" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Max episodes to show" } ], "columns": [ "title", "duration", "date" ], "type": "js", "modulePath": "apple-podcasts/episodes.js", "sourceFile": "apple-podcasts/episodes.js" }, { "site": "apple-podcasts", "name": "search", "description": "Search Apple Podcasts", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max results" } ], "columns": [ "id", "title", "author", "episodes", "genre", "url" ], "type": "js", "modulePath": "apple-podcasts/search.js", "sourceFile": "apple-podcasts/search.js" }, { "site": "apple-podcasts", "name": "top", "description": "Top podcasts chart on Apple Podcasts", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of podcasts (max 100)" }, { "name": "country", "type": "str", "default": "us", "required": false, "help": "Country code (e.g. us, cn, gb, jp)" } ], "columns": [ "rank", "title", "author", "id" ], "type": "js", "modulePath": "apple-podcasts/top.js", "sourceFile": "apple-podcasts/top.js" }, { "site": "archive", "name": "item", "description": "Fetch metadata for a single Internet Archive item by identifier.", "access": "read", "domain": "archive.org", "strategy": "public", "browser": false, "args": [ { "name": "identifier", "type": "str", "required": true, "positional": true, "help": "Archive item identifier (e.g. \"open-syllabus\", \"FinalFantasy2_356\")." } ], "columns": [ "identifier", "title", "creator", "date", "mediatype", "collection", "description", "file_count", "url" ], "type": "js", "modulePath": "archive/item.js", "sourceFile": "archive/item.js" }, { "site": "archive", "name": "search", "description": "Search Internet Archive items across books, movies, audio, software, and web.", "access": "read", "domain": "archive.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Full-text query (matches title, description, creator, subject)." }, { "name": "mediatype", "type": "string", "required": false, "help": "Restrict to mediatype: texts, movies, audio, software, image, web, data, collection" }, { "name": "sort", "type": "string", "default": "downloads", "required": false, "help": "Sort key: downloads, date, addeddate, week, title" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max items (max 100; one API page)." } ], "columns": [ "rank", "identifier", "title", "creator", "date", "mediatype", "downloads", "url" ], "type": "js", "modulePath": "archive/search.js", "sourceFile": "archive/search.js" }, { "site": "archive", "name": "snapshots", "description": "List Wayback Machine snapshots over time for a URL via the CDX API.", "access": "read", "domain": "archive.org", "strategy": "public", "browser": false, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "URL to look up (with or without scheme)." }, { "name": "from", "type": "string", "required": false, "help": "Earliest year/timestamp (YYYY[MM[DD[hh[mm[ss]]]]])" }, { "name": "to", "type": "string", "required": false, "help": "Latest year/timestamp (YYYY[MM[DD[hh[mm[ss]]]]])" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max snapshots to return (max 1000)." } ], "columns": [ "timestamp", "snapshot_url", "status", "mimetype", "original_url" ], "type": "js", "modulePath": "archive/snapshots.js", "sourceFile": "archive/snapshots.js" }, { "site": "archive", "name": "wayback", "description": "Look up the closest Wayback Machine snapshot for a URL.", "access": "read", "domain": "archive.org", "strategy": "public", "browser": false, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "URL to look up (with or without scheme)." }, { "name": "timestamp", "type": "string", "required": false, "help": "Target timestamp (YYYY[MM[DD[hh[mm[ss]]]]] or ISO date). Defaults to most recent snapshot." } ], "columns": [ "original_url", "requested_timestamp", "snapshot_timestamp", "snapshot_url", "status" ], "type": "js", "modulePath": "archive/wayback.js", "sourceFile": "archive/wayback.js" }, { "site": "arxiv", "name": "author", "description": "List arXiv papers by a given author (newest first)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "author", "type": "str", "required": true, "positional": true, "help": "Author name (e.g. \"Yoshua Bengio\" or \"Y Bengio\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max papers to return (max 50)" } ], "columns": [ "id", "title", "authors", "published", "primary_category", "url" ], "type": "js", "modulePath": "arxiv/author.js", "sourceFile": "arxiv/author.js" }, { "site": "arxiv", "name": "paper", "description": "Get arXiv paper details by ID", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "arXiv paper ID (e.g. 1706.03762)" } ], "columns": [ "id", "title", "authors", "published", "updated", "primary_category", "categories", "abstract", "comment", "pdf", "url" ], "type": "js", "modulePath": "arxiv/paper.js", "sourceFile": "arxiv/paper.js" }, { "site": "arxiv", "name": "recent", "description": "List recent arXiv submissions in a category", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "category", "type": "str", "required": true, "positional": true, "help": "arXiv category (e.g. cs.CL, cs.LG, math.PR, q-bio.NC)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max results (max 50)" } ], "columns": [ "id", "title", "authors", "published", "primary_category", "url" ], "type": "js", "modulePath": "arxiv/recent.js", "sourceFile": "arxiv/recent.js" }, { "site": "arxiv", "name": "search", "description": "Search arXiv papers", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"attention is all you need\")" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max results (max 25)" } ], "columns": [ "id", "title", "authors", "published", "primary_category", "url" ], "type": "js", "modulePath": "arxiv/search.js", "sourceFile": "arxiv/search.js" }, { "site": "autohome", "name": "brand", "aliases": [ "series" ], "description": "汽车之家按品牌列出全部车系 + 厂商指导价(免登录)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "brand", "type": "str", "required": true, "positional": true, "help": "品牌名(宝马 / 比亚迪 / 理想 / 丰田 …)或车系目录首字母 A-Z" }, { "name": "limit", "type": "int", "default": 60, "required": false, "help": "返回的车系数量(最多 120)" } ], "columns": [ "series_id", "name", "price", "url" ], "type": "js", "modulePath": "autohome/brand.js", "sourceFile": "autohome/brand.js" }, { "site": "autohome", "name": "score", "aliases": [ "koubei", "rating" ], "description": "汽车之家车系口碑评分(总分 + 各维度 + 故障率PPH + 竞品对比,免登录)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "series_id", "type": "str", "required": true, "positional": true, "help": "车系 ID(来自 brand 的 series_id,或 k.autohome.com.cn/ URL)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "autohome/score.js", "sourceFile": "autohome/score.js" }, { "site": "baidu-scholar", "name": "search", "description": "百度学术搜索", "access": "read", "domain": "xueshu.baidu.com", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 20)" } ], "columns": [ "rank", "title", "authors", "journal", "year", "cited", "url" ], "type": "js", "modulePath": "baidu-scholar/search.js", "sourceFile": "baidu-scholar/search.js" }, { "site": "band", "name": "bands", "description": "List all Bands you belong to", "access": "read", "domain": "www.band.us", "strategy": "cookie", "browser": true, "args": [], "columns": [ "band_no", "name", "members" ], "type": "js", "modulePath": "band/bands.js", "sourceFile": "band/bands.js", "navigateBefore": "https://www.band.us" }, { "site": "band", "name": "login", "description": "Open band login and wait until the browser session is authenticated", "access": "write", "domain": "band.us", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id" ], "type": "js", "modulePath": "band/auth.js", "sourceFile": "band/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "band", "name": "mentions", "description": "Show Band notifications where you are @mentioned", "access": "read", "domain": "www.band.us", "strategy": "intercept", "browser": true, "args": [ { "name": "filter", "type": "str", "default": "mentioned", "required": false, "help": "Filter: mentioned (default) | all | post | comment", "choices": [ "mentioned", "all", "post", "comment" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results" }, { "name": "unread", "type": "bool", "default": false, "required": false, "help": "Show only unread notifications" } ], "columns": [ "time", "band", "type", "from", "text", "url" ], "type": "js", "modulePath": "band/mentions.js", "sourceFile": "band/mentions.js", "navigateBefore": true }, { "site": "band", "name": "post", "description": "Export full content of a post including comments", "access": "read", "domain": "www.band.us", "strategy": "cookie", "browser": true, "args": [ { "name": "band_no", "type": "int", "required": true, "positional": true, "help": "Band number" }, { "name": "post_no", "type": "int", "required": true, "positional": true, "help": "Post number" }, { "name": "output", "type": "str", "default": "", "required": false, "help": "Directory to save attached photos" }, { "name": "comments", "type": "bool", "default": true, "required": false, "help": "Include comments (default: true)" } ], "columns": [ "type", "author", "date", "text" ], "type": "js", "modulePath": "band/post.js", "sourceFile": "band/post.js", "navigateBefore": false }, { "site": "band", "name": "posts", "description": "List posts from a Band", "access": "read", "domain": "www.band.us", "strategy": "cookie", "browser": true, "args": [ { "name": "band_no", "type": "int", "required": true, "positional": true, "help": "Band number (get it from: band bands)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results" } ], "columns": [ "date", "author", "content", "comments", "url" ], "type": "js", "modulePath": "band/posts.js", "sourceFile": "band/posts.js", "navigateBefore": false }, { "site": "band", "name": "whoami", "description": "Show the current logged-in band account", "access": "read", "domain": "band.us", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id" ], "type": "js", "modulePath": "band/auth.js", "sourceFile": "band/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "barchart", "name": "flow", "description": "Barchart unusual options activity / options flow", "access": "read", "domain": "www.barchart.com", "strategy": "cookie", "browser": true, "args": [ { "name": "type", "type": "str", "default": "all", "required": false, "help": "Filter: all, call, or put", "choices": [ "all", "call", "put" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "symbol", "type", "strike", "expiration", "last", "volume", "openInterest", "volOiRatio", "iv" ], "type": "js", "modulePath": "barchart/flow.js", "sourceFile": "barchart/flow.js", "navigateBefore": "https://www.barchart.com" }, { "site": "barchart", "name": "greeks", "description": "Barchart options greeks overview (IV, delta, gamma, theta, vega)", "access": "read", "domain": "www.barchart.com", "strategy": "cookie", "browser": true, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Stock ticker (e.g. AAPL)" }, { "name": "expiration", "type": "str", "required": false, "help": "Expiration date (YYYY-MM-DD). Defaults to the nearest available expiration." }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of near-the-money strikes per type (1-100)" } ], "columns": [ "type", "strike", "last", "iv", "delta", "gamma", "theta", "vega", "rho", "volume", "openInterest", "expiration" ], "type": "js", "modulePath": "barchart/greeks.js", "sourceFile": "barchart/greeks.js", "navigateBefore": "https://www.barchart.com" }, { "site": "barchart", "name": "options", "description": "Barchart options chain with greeks, IV, volume, and open interest", "access": "read", "domain": "www.barchart.com", "strategy": "cookie", "browser": true, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Stock ticker (e.g. AAPL)" }, { "name": "type", "type": "str", "default": "Call", "required": false, "help": "Option type: Call or Put", "choices": [ "Call", "Put" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max number of strikes to return" } ], "columns": [ "strike", "bid", "ask", "last", "change", "volume", "openInterest", "iv", "delta", "gamma", "theta", "vega", "expiration" ], "type": "js", "modulePath": "barchart/options.js", "sourceFile": "barchart/options.js", "navigateBefore": "https://www.barchart.com" }, { "site": "barchart", "name": "quote", "description": "Barchart stock quote with price, volume, and key metrics", "access": "read", "domain": "www.barchart.com", "strategy": "cookie", "browser": true, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Stock ticker (e.g. AAPL, MSFT, TSLA)" } ], "columns": [ "symbol", "name", "price", "change", "changePct", "open", "high", "low", "prevClose", "volume", "avgVolume", "marketCap", "peRatio", "eps" ], "type": "js", "modulePath": "barchart/quote.js", "sourceFile": "barchart/quote.js", "navigateBefore": "https://www.barchart.com" }, { "site": "bbc", "name": "news", "description": "BBC News headlines (RSS)", "access": "read", "domain": "www.bbc.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of headlines (max 50)" } ], "columns": [ "rank", "title", "description", "url" ], "type": "js", "modulePath": "bbc/news.js", "sourceFile": "bbc/news.js" }, { "site": "bbc", "name": "topic", "description": "BBC News headlines for a specific section (RSS feed)", "access": "read", "domain": "www.bbc.com", "strategy": "public", "browser": false, "args": [ { "name": "topic", "type": "str", "required": true, "positional": true, "help": "Section name (world / business / politics / health / education / science_and_environment / technology / entertainment_and_arts)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max headlines (1-50)" } ], "columns": [ "rank", "title", "description", "pubDate", "url" ], "type": "js", "modulePath": "bbc/topic.js", "sourceFile": "bbc/topic.js" }, { "site": "bilibili", "name": "comment", "description": "在 B站视频下发表评论或回复(官方 API,需登录;消息里的 @用户 会被解析为真实提及)", "access": "write", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "bvid", "type": "str", "required": true, "positional": true, "help": "Video BV ID / URL / b23.tv short link" }, { "name": "message", "type": "str", "required": true, "positional": true, "help": "Comment text. Any @username in it is resolved to a real mention" }, { "name": "parent", "type": "int", "required": false, "help": "top-level/root rpid to reply under (omit for a top-level comment)" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually post the comment. Without it the command refuses to write." } ], "columns": [ "rpid", "bvid", "oid", "message", "url" ], "type": "js", "modulePath": "bilibili/comment.js", "sourceFile": "bilibili/comment.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "comments", "description": "获取 B站视频评论(官方 API;用 --parent 读取某条评论下的「楼中楼」回复)", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "bvid", "type": "str", "required": true, "positional": true, "help": "Video BV ID (e.g. BV1WtAGzYEBm)" }, { "name": "parent", "type": "int", "required": false, "help": "rpid of a comment — fetch the replies under it instead of top-level comments" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of comments (max 50)" } ], "columns": [ "rank", "rpid", "author", "text", "likes", "replies", "time" ], "type": "js", "modulePath": "bilibili/comments.js", "sourceFile": "bilibili/comments.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "download", "description": "下载B站视频(需要 yt-dlp)", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "bvid", "type": "str", "required": true, "positional": true, "help": "Video BV ID (e.g., BV1xxx)" }, { "name": "output", "type": "str", "default": "./bilibili-downloads", "required": false, "help": "Output directory" }, { "name": "quality", "type": "str", "default": "best", "required": false, "help": "Video quality (best, 1080p, 720p, 480p)" }, { "name": "force", "type": "boolean", "default": false, "required": false, "help": "跳过付费内容预检直接下载(已购买/已充电/已开通会员时用)" }, { "name": "page", "type": "str", "required": false, "help": "分P 选集序号(从 1 开始)。多 P 视频下载该集;缺省下载默认 P1" } ], "columns": [ "bvid", "title", "status", "size" ], "type": "js", "modulePath": "bilibili/download.js", "sourceFile": "bilibili/download.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "dynamic", "description": "Get Bilibili user dynamic feed", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 15, "required": false, "help": "" } ], "columns": [ "id", "author", "text", "likes", "url" ], "type": "js", "modulePath": "bilibili/dynamic.js", "sourceFile": "bilibili/dynamic.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "favorite", "description": "我的收藏夹", "access": "write", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "fid", "type": "int", "required": false, "help": "Favorite folder ID (defaults to first folder)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" } ], "columns": [ "rank", "title", "author", "plays", "url" ], "type": "js", "modulePath": "bilibili/favorite.js", "sourceFile": "bilibili/favorite.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "feed", "description": "动态时间线(不传 uid 查关注时间线,传 uid 查指定用户动态)", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": false, "positional": true, "help": "用户 UID 或用户名(不传则显示关注时间线)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results to return" }, { "name": "type", "type": "str", "default": "all", "required": false, "help": "Filter: all, video, article, draw, text" }, { "name": "pages", "type": "int", "default": 1, "required": false, "help": "Number of pages to fetch (each ~20 items)" } ], "columns": [ "rank", "time", "author", "title", "type", "likes", "url" ], "type": "js", "modulePath": "bilibili/feed.js", "sourceFile": "bilibili/feed.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "feed-detail", "description": "查看 Bilibili 动态详情(支持充电专属内容)", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "动态 ID(从 feed 命令的 url 中获取)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "bilibili/feed.js", "sourceFile": "bilibili/feed.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "follow", "description": "关注 B站用户(官方 API,需登录)", "access": "write", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "目标 UID / 用户名 / space.bilibili.com 链接" } ], "columns": [ "mid", "name", "status", "url" ], "type": "js", "modulePath": "bilibili/follow.js", "sourceFile": "bilibili/follow.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "following", "description": "获取 Bilibili 用户的关注列表", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": false, "positional": true, "help": "目标用户 ID(默认为当前登录用户)" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "页码" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "每页数量 (最大 50)" } ], "columns": [ "mid", "name", "sign", "following", "fans" ], "type": "js", "modulePath": "bilibili/following.js", "sourceFile": "bilibili/following.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "history", "description": "我的观看历史", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "progress", "url" ], "type": "js", "modulePath": "bilibili/history.js", "sourceFile": "bilibili/history.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "hot", "description": "B站热门视频", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of videos" } ], "columns": [ "rank", "title", "author", "play", "danmaku", "bvid", "url" ], "type": "js", "modulePath": "bilibili/hot.js", "sourceFile": "bilibili/hot.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "login", "description": "Open bilibili login and wait until the browser session is authenticated", "access": "write", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "id", "username", "level" ], "type": "js", "modulePath": "bilibili/auth.js", "sourceFile": "bilibili/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "bilibili", "name": "me", "description": "My Bilibili profile info", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "name", "uid", "level", "coins", "followers", "following" ], "type": "js", "modulePath": "bilibili/me.js", "sourceFile": "bilibili/me.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "ranking", "description": "Get Bilibili video ranking board", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "rank", "title", "author", "score", "url" ], "type": "js", "modulePath": "bilibili/ranking.js", "sourceFile": "bilibili/ranking.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "search", "description": "Search Bilibili videos or users", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "type", "type": "str", "default": "video", "required": false, "help": "video or user" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Result page" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "score", "url" ], "type": "js", "modulePath": "bilibili/search.js", "sourceFile": "bilibili/search.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "subtitle", "description": "获取 Bilibili 视频的字幕", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "bvid", "type": "str", "required": true, "positional": true, "help": "Bilibili 视频 BV ID(如 BV1xx411c7mD),或视频 URL / b23.tv 短链" }, { "name": "lang", "type": "str", "required": false, "help": "字幕语言代码 (如 zh-CN, en-US, ai-zh),默认取第一个" }, { "name": "page", "type": "str", "required": false, "help": "分P 选集序号(从 1 开始)。多 P 视频取该集字幕;缺省取默认 P1" } ], "columns": [ "index", "from", "to", "content" ], "type": "js", "modulePath": "bilibili/subtitle.js", "sourceFile": "bilibili/subtitle.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "summary", "description": "获取 B站视频的官方 AI 总结(视频页「AI总结」同款,含分段大纲与时间戳)", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "bvid", "type": "str", "required": true, "positional": true, "help": "Video BV ID / URL / b23.tv short link" } ], "columns": [ "time", "content" ], "type": "js", "modulePath": "bilibili/summary.js", "sourceFile": "bilibili/summary.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "unfollow", "description": "取消关注 B站用户(官方 API,需登录)", "access": "write", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "目标 UID / 用户名 / space.bilibili.com 链接" } ], "columns": [ "mid", "name", "status", "url" ], "type": "js", "modulePath": "bilibili/unfollow.js", "sourceFile": "bilibili/unfollow.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "user-videos", "description": "查看指定用户的投稿视频", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "User UID or username" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" }, { "name": "order", "type": "str", "default": "pubdate", "required": false, "help": "Sort: pubdate, click, stow" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" } ], "columns": [ "rank", "title", "plays", "likes", "date", "url" ], "type": "js", "modulePath": "bilibili/user-videos.js", "sourceFile": "bilibili/user-videos.js", "navigateBefore": "https://www.bilibili.com" }, { "site": "bilibili", "name": "video", "description": "Get Bilibili video metadata (title, author, duration, stats, etc.)", "access": "read", "strategy": "cookie", "browser": true, "args": [ { "name": "bvid", "type": "str", "required": true, "positional": true, "help": "BV ID, video URL, or b23.tv short link" }, { "name": "page", "type": "str", "required": false, "help": "分P 选集序号(从 1 开始)。多 P 视频指定某一集,title/cid 返回该集;缺省取整集默认(P1)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "bilibili/video.js", "sourceFile": "bilibili/video.js", "navigateBefore": true }, { "site": "bilibili", "name": "whoami", "description": "Show the current logged-in bilibili account", "access": "read", "domain": "www.bilibili.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "id", "username", "level" ], "type": "js", "modulePath": "bilibili/auth.js", "sourceFile": "bilibili/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "binance", "name": "asks", "description": "Order book ask prices for a trading pair", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Trading pair symbol (e.g. BTCUSDT, ETHUSDT)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of price levels (5, 10, 20, 50, 100)" } ], "columns": [ "rank", "ask_price", "ask_qty" ], "type": "js", "modulePath": "binance/asks.js", "sourceFile": "binance/asks.js" }, { "site": "binance", "name": "depth", "description": "Order book bid and ask prices for a trading pair", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Trading pair symbol (e.g. BTCUSDT, ETHUSDT)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of price levels (5, 10, 20, 50, 100)" } ], "columns": [ "rank", "bid_price", "bid_qty", "ask_price", "ask_qty" ], "type": "js", "modulePath": "binance/depth.js", "sourceFile": "binance/depth.js" }, { "site": "binance", "name": "gainers", "description": "Top gaining trading pairs by 24h price change", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of trading pairs" } ], "columns": [ "rank", "symbol", "price", "change_24h", "volume" ], "type": "js", "modulePath": "binance/gainers.js", "sourceFile": "binance/gainers.js" }, { "site": "binance", "name": "klines", "description": "Candlestick/kline data for a trading pair", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Trading pair symbol (e.g. BTCUSDT, ETHUSDT)" }, { "name": "interval", "type": "str", "default": "1d", "required": false, "help": "Kline interval (1m, 5m, 15m, 1h, 4h, 1d, 1w, 1M)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of klines (max 1000)" } ], "columns": [ "open", "high", "low", "close", "volume" ], "type": "js", "modulePath": "binance/klines.js", "sourceFile": "binance/klines.js" }, { "site": "binance", "name": "losers", "description": "Top losing trading pairs by 24h price change", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of trading pairs" } ], "columns": [ "rank", "symbol", "price", "change_24h", "volume" ], "type": "js", "modulePath": "binance/losers.js", "sourceFile": "binance/losers.js" }, { "site": "binance", "name": "pairs", "description": "List active trading pairs on Binance", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of trading pairs" } ], "columns": [ "symbol", "base", "quote", "status" ], "type": "js", "modulePath": "binance/pairs.js", "sourceFile": "binance/pairs.js" }, { "site": "binance", "name": "price", "description": "Quick price check for a trading pair", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Trading pair symbol (e.g. BTCUSDT, ETHUSDT)" } ], "columns": [ "symbol", "price", "change", "change_pct", "high", "low", "volume", "quote_volume", "trades" ], "type": "js", "modulePath": "binance/price.js", "sourceFile": "binance/price.js" }, { "site": "binance", "name": "prices", "description": "Latest prices for all trading pairs", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of prices" } ], "columns": [ "rank", "symbol", "price" ], "type": "js", "modulePath": "binance/prices.js", "sourceFile": "binance/prices.js" }, { "site": "binance", "name": "ticker", "description": "24h ticker statistics for top trading pairs by volume", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of tickers" } ], "columns": [ "symbol", "price", "change_pct", "high", "low", "volume", "quote_vol", "trades" ], "type": "js", "modulePath": "binance/ticker.js", "sourceFile": "binance/ticker.js" }, { "site": "binance", "name": "top", "description": "Top trading pairs by 24h volume on Binance", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of trading pairs" } ], "columns": [ "rank", "symbol", "price", "change_24h", "high", "low", "volume" ], "type": "js", "modulePath": "binance/top.js", "sourceFile": "binance/top.js" }, { "site": "binance", "name": "trades", "description": "Recent trades for a trading pair", "access": "read", "domain": "data-api.binance.vision", "strategy": "public", "browser": false, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Trading pair symbol (e.g. BTCUSDT, ETHUSDT)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of trades (max 1000)" } ], "columns": [ "id", "price", "qty", "quote_qty", "buyer_maker" ], "type": "js", "modulePath": "binance/trades.js", "sourceFile": "binance/trades.js" }, { "site": "bloomberg", "name": "businessweek", "description": "Bloomberg Businessweek top stories", "access": "read", "domain": "www.bloomberg.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of stories to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/businessweek.js", "sourceFile": "bloomberg/businessweek.js" }, { "site": "bloomberg", "name": "crypto", "description": "Bloomberg Crypto top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/crypto.js", "sourceFile": "bloomberg/crypto.js" }, { "site": "bloomberg", "name": "economics", "description": "Bloomberg Economics top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/economics.js", "sourceFile": "bloomberg/economics.js" }, { "site": "bloomberg", "name": "feeds", "description": "List the Bloomberg RSS feed aliases used by the adapter", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [], "columns": [ "name", "url" ], "type": "js", "modulePath": "bloomberg/feeds.js", "sourceFile": "bloomberg/feeds.js" }, { "site": "bloomberg", "name": "green", "description": "Bloomberg Green (climate & energy) top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/green.js", "sourceFile": "bloomberg/green.js" }, { "site": "bloomberg", "name": "industries", "description": "Bloomberg Industries top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/industries.js", "sourceFile": "bloomberg/industries.js" }, { "site": "bloomberg", "name": "main", "description": "Bloomberg homepage top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/main.js", "sourceFile": "bloomberg/main.js" }, { "site": "bloomberg", "name": "markets", "description": "Bloomberg Markets top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/markets.js", "sourceFile": "bloomberg/markets.js" }, { "site": "bloomberg", "name": "news", "description": "Read a Bloomberg story/article page and return title, full content, and media links", "access": "read", "domain": "www.bloomberg.com", "strategy": "cookie", "browser": true, "args": [ { "name": "link", "type": "str", "required": true, "positional": true, "help": "Bloomberg story/article URL or relative Bloomberg path" } ], "columns": [ "title", "summary", "link", "mediaLinks", "content" ], "type": "js", "modulePath": "bloomberg/news.js", "sourceFile": "bloomberg/news.js", "navigateBefore": "https://www.bloomberg.com" }, { "site": "bloomberg", "name": "opinions", "description": "Bloomberg Opinion top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/opinions.js", "sourceFile": "bloomberg/opinions.js" }, { "site": "bloomberg", "name": "politics", "description": "Bloomberg Politics top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/politics.js", "sourceFile": "bloomberg/politics.js" }, { "site": "bloomberg", "name": "pursuits", "description": "Bloomberg Pursuits (lifestyle) top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/pursuits.js", "sourceFile": "bloomberg/pursuits.js" }, { "site": "bloomberg", "name": "tech", "description": "Bloomberg Tech top stories (RSS)", "access": "read", "domain": "feeds.bloomberg.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Number of feed items to return (max 20)" } ], "columns": [ "title", "summary", "link", "mediaLinks" ], "type": "js", "modulePath": "bloomberg/tech.js", "sourceFile": "bloomberg/tech.js" }, { "site": "bluesky", "name": "feeds", "description": "Popular Bluesky feed generators", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of feeds" } ], "columns": [ "rank", "name", "likes", "creator", "description" ], "type": "js", "modulePath": "bluesky/feeds.js", "sourceFile": "bluesky/feeds.js" }, { "site": "bluesky", "name": "followers", "description": "List followers of a Bluesky user", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "handle", "type": "str", "required": true, "positional": true, "help": "Bluesky handle" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of followers" } ], "columns": [ "rank", "handle", "name", "description" ], "type": "js", "modulePath": "bluesky/followers.js", "sourceFile": "bluesky/followers.js" }, { "site": "bluesky", "name": "following", "description": "List accounts a Bluesky user is following", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "handle", "type": "str", "required": true, "positional": true, "help": "Bluesky handle" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of accounts" } ], "columns": [ "rank", "handle", "name", "description" ], "type": "js", "modulePath": "bluesky/following.js", "sourceFile": "bluesky/following.js" }, { "site": "bluesky", "name": "profile", "description": "Get Bluesky user profile info", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "handle", "type": "str", "required": true, "positional": true, "help": "Bluesky handle (e.g. bsky.app, jay.bsky.team)" } ], "columns": [ "handle", "name", "followers", "following", "posts", "description" ], "type": "js", "modulePath": "bluesky/profile.js", "sourceFile": "bluesky/profile.js" }, { "site": "bluesky", "name": "search", "description": "Search Bluesky users", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "handle", "name", "followers", "description" ], "type": "js", "modulePath": "bluesky/search.js", "sourceFile": "bluesky/search.js" }, { "site": "bluesky", "name": "starter-packs", "description": "Get starter packs created by a Bluesky user", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "handle", "type": "str", "required": true, "positional": true, "help": "Bluesky handle" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of starter packs" } ], "columns": [ "rank", "name", "description", "members", "joins" ], "type": "js", "modulePath": "bluesky/starter-packs.js", "sourceFile": "bluesky/starter-packs.js" }, { "site": "bluesky", "name": "thread", "description": "Get a Bluesky post thread with replies", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "uri", "type": "str", "required": true, "positional": true, "help": "Post AT URI (at://did:.../app.bsky.feed.post/...) or bsky.app URL" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of replies" } ], "columns": [ "author", "text", "likes", "reposts", "replies_count" ], "type": "js", "modulePath": "bluesky/thread.js", "sourceFile": "bluesky/thread.js" }, { "site": "bluesky", "name": "trending", "description": "Trending topics on Bluesky", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of topics" } ], "columns": [ "rank", "topic", "link" ], "type": "js", "modulePath": "bluesky/trending.js", "sourceFile": "bluesky/trending.js" }, { "site": "bluesky", "name": "user", "description": "Get recent posts from a Bluesky user", "access": "read", "domain": "public.api.bsky.app", "strategy": "public", "browser": false, "args": [ { "name": "handle", "type": "str", "required": true, "positional": true, "help": "Bluesky handle (e.g. bsky.app)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts" } ], "columns": [ "rank", "uri", "text", "likes", "reposts", "replies" ], "type": "js", "modulePath": "bluesky/user.js", "sourceFile": "bluesky/user.js" }, { "site": "booking", "name": "search", "description": "Search Booking.com hotels by destination and dates (server-rendered card scrape).", "access": "read", "example": "opencli booking search Tokyo --checkin 2026-06-15 --checkout 2026-06-17 -f yaml", "domain": "www.booking.com", "strategy": "public", "browser": true, "args": [ { "name": "destination", "type": "str", "required": true, "positional": true, "help": "Destination keyword (city, district, or hotel name)" }, { "name": "checkin", "type": "str", "required": true, "help": "Check-in date YYYY-MM-DD" }, { "name": "checkout", "type": "str", "required": true, "help": "Check-out date YYYY-MM-DD" }, { "name": "adults", "type": "int", "default": 2, "required": false, "help": "Number of adults (1-30)" }, { "name": "rooms", "type": "int", "default": 1, "required": false, "help": "Number of rooms (1-30)" }, { "name": "children", "type": "int", "default": 0, "required": false, "help": "Number of children (0-10)" }, { "name": "currency", "type": "str", "required": false, "help": "Force result currency (e.g. USD, JPY, CNY)" }, { "name": "lang", "type": "str", "required": false, "help": "Force result language (e.g. en-us, zh-cn, ja)" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Max rows to return (1-100; Booking pages 25 per request)" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Result offset for pagination (multiple of 25)" } ], "columns": [ "rank", "name", "country", "slug", "star_rating", "review_score", "review_count", "price_amount", "price_currency", "distance", "recommended_room", "url" ], "type": "js", "modulePath": "booking/search.js", "sourceFile": "booking/search.js" }, { "site": "boss", "name": "batchgreet", "description": "BOSS直聘批量向推荐候选人发送招呼", "access": "write", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "job-id", "type": "str", "default": "", "required": false, "help": "Filter by encrypted job ID (greet all jobs if empty)" }, { "name": "limit", "type": "int", "default": 5, "required": false, "help": "Max candidates to greet" }, { "name": "text", "type": "str", "default": "", "required": false, "help": "Custom greeting message (uses default if empty)" } ], "columns": [ "name", "status", "detail" ], "type": "js", "modulePath": "boss/batchgreet.js", "sourceFile": "boss/batchgreet.js", "navigateBefore": false }, { "site": "boss", "name": "chatlist", "description": "BOSS直聘查看聊天列表(招聘端/求职端)", "access": "read", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" }, { "name": "job-id", "type": "str", "default": "0", "required": false, "help": "Filter by job ID (0=all, boss side only)" }, { "name": "side", "type": "str", "default": "auto", "required": false, "help": "Identity side: auto (default), boss (recruiter), or geek (job-seeker)", "choices": [ "auto", "boss", "geek" ] } ], "columns": [ "name", "company", "job", "title", "last_msg", "last_time", "uid", "security_id" ], "type": "js", "modulePath": "boss/chatlist.js", "sourceFile": "boss/chatlist.js", "navigateBefore": false }, { "site": "boss", "name": "chatmsg", "description": "BOSS直聘查看聊天消息历史(招聘端/求职端)", "access": "read", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Encrypted UID (from chatlist)" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "side", "type": "str", "default": "auto", "required": false, "help": "Identity side: auto (default), boss (recruiter), or geek (job-seeker)", "choices": [ "auto", "boss", "geek" ] } ], "columns": [ "from", "type", "text", "time" ], "type": "js", "modulePath": "boss/chatmsg.js", "sourceFile": "boss/chatmsg.js", "navigateBefore": false }, { "site": "boss", "name": "detail", "description": "BOSS直聘查看职位详情", "access": "read", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "security-id", "type": "str", "required": true, "positional": true, "help": "Security ID from search results (securityId field)" } ], "columns": [ "name", "salary", "experience", "degree", "city", "district", "description", "skills", "welfare", "boss_name", "boss_title", "active_time", "company", "industry", "scale", "stage", "address", "url" ], "type": "js", "modulePath": "boss/detail.js", "sourceFile": "boss/detail.js", "navigateBefore": false }, { "site": "boss", "name": "exchange", "description": "BOSS直聘交换联系方式(请求手机/微信)", "access": "write", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Encrypted UID of the candidate" }, { "name": "type", "type": "str", "default": "phone", "required": false, "help": "Exchange type: phone or wechat", "choices": [ "phone", "wechat" ] } ], "columns": [ "status", "detail" ], "type": "js", "modulePath": "boss/exchange.js", "sourceFile": "boss/exchange.js", "navigateBefore": false }, { "site": "boss", "name": "greet", "description": "BOSS直聘向新候选人发送招呼(开始聊天)", "access": "write", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Encrypted UID of the candidate (from recommend)" }, { "name": "security-id", "type": "str", "required": true, "help": "Security ID of the candidate" }, { "name": "job-id", "type": "str", "required": true, "help": "Encrypted job ID" }, { "name": "text", "type": "str", "default": "", "required": false, "help": "Custom greeting message (uses default template if empty)" } ], "columns": [ "status", "detail" ], "type": "js", "modulePath": "boss/greet.js", "sourceFile": "boss/greet.js", "navigateBefore": false }, { "site": "boss", "name": "invite", "description": "BOSS直聘发送面试邀请", "access": "write", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Encrypted UID of the candidate" }, { "name": "time", "type": "str", "required": true, "help": "Interview time (e.g. 2025-04-01 14:00)" }, { "name": "address", "type": "str", "default": "", "required": false, "help": "Interview address (uses saved address if empty)" }, { "name": "contact", "type": "str", "default": "", "required": false, "help": "Contact person name (uses saved contact if empty)" } ], "columns": [ "status", "detail" ], "type": "js", "modulePath": "boss/invite.js", "sourceFile": "boss/invite.js", "navigateBefore": false }, { "site": "boss", "name": "joblist", "description": "BOSS直聘查看我发布的职位列表", "access": "read", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "job_name", "salary", "city", "status", "encrypt_job_id" ], "type": "js", "modulePath": "boss/joblist.js", "sourceFile": "boss/joblist.js", "navigateBefore": false }, { "site": "boss", "name": "login", "description": "Open boss login and wait until the browser session is authenticated", "access": "write", "domain": "zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_type" ], "type": "js", "modulePath": "boss/auth.js", "sourceFile": "boss/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "boss", "name": "mark", "description": "BOSS直聘给候选人添加标签", "access": "write", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Encrypted UID of the candidate" }, { "name": "label", "type": "str", "required": true, "help": "Label name (新招呼/沟通中/已约面/已获取简历/已交换电话/已交换微信/不合适/收藏) or label ID" }, { "name": "remove", "type": "boolean", "default": false, "required": false, "help": "Remove the label instead of adding" } ], "columns": [ "status", "detail" ], "type": "js", "modulePath": "boss/mark.js", "sourceFile": "boss/mark.js", "navigateBefore": false }, { "site": "boss", "name": "recommend", "description": "BOSS直聘查看推荐候选人(新招呼列表)", "access": "read", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results to return" } ], "columns": [ "name", "job_name", "last_time", "labels", "encrypt_uid", "security_id", "encrypt_job_id" ], "type": "js", "modulePath": "boss/recommend.js", "sourceFile": "boss/recommend.js", "navigateBefore": false }, { "site": "boss", "name": "resume", "description": "BOSS直聘查看候选人简历(招聘端)", "access": "read", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Encrypted UID of the candidate (from chatlist)" } ], "columns": [ "name", "gender", "age", "experience", "degree", "active_time", "work_history", "education", "job_chatting", "expect" ], "type": "js", "modulePath": "boss/resume.js", "sourceFile": "boss/resume.js", "navigateBefore": false }, { "site": "boss", "name": "search", "description": "BOSS直聘搜索职位(不带关键词时返回为你推荐职位)", "access": "read", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": false, "positional": true, "help": "Search keyword (optional, empty = recommended jobs)" }, { "name": "city", "type": "str", "default": "北京", "required": false, "help": "City name or code (e.g. 杭州, 上海, 101010100)" }, { "name": "experience", "type": "str", "default": "", "required": false, "help": "Experience: 在校生(实习)/应届生(校招)/经验不限/1年以内/1-3年/3-5年/5-10年/10年以上" }, { "name": "degree", "type": "str", "default": "", "required": false, "help": "Degree: 大专/本科/硕士/博士" }, { "name": "salary", "type": "str", "default": "", "required": false, "help": "Salary: 3K以下/3-5K/5-10K/10-15K/15-20K/20-30K/30-50K/50K以上" }, { "name": "industry", "type": "str", "default": "", "required": false, "help": "Industry code or name (e.g. 100020, 互联网)" }, { "name": "jobType", "type": "str", "default": "", "required": false, "help": "Job type: 全职/兼职/实习(不传=不限,混合校招与实习)" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of results" } ], "columns": [ "name", "salary", "company", "area", "experience", "degree", "skills", "boss", "bossOnline", "security_id", "url" ], "type": "js", "modulePath": "boss/search.js", "sourceFile": "boss/search.js", "navigateBefore": false }, { "site": "boss", "name": "send", "description": "BOSS直聘发送聊天消息", "access": "write", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Encrypted UID of the candidate (from chatlist)" }, { "name": "text", "type": "str", "required": true, "positional": true, "help": "Message text to send" } ], "columns": [ "status", "detail" ], "type": "js", "modulePath": "boss/send.js", "sourceFile": "boss/send.js", "navigateBefore": false }, { "site": "boss", "name": "stats", "description": "BOSS直聘职位数据统计", "access": "read", "domain": "www.zhipin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "job-id", "type": "str", "default": "", "required": false, "help": "Encrypted job ID (show all if empty)" } ], "columns": [ "job_name", "salary", "city", "status", "total_chats", "encrypt_job_id" ], "type": "js", "modulePath": "boss/stats.js", "sourceFile": "boss/stats.js", "navigateBefore": false }, { "site": "boss", "name": "whoami", "description": "Show the current logged-in boss account", "access": "read", "domain": "zhipin.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_type" ], "type": "js", "modulePath": "boss/auth.js", "sourceFile": "boss/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "brave", "name": "search", "description": "Search Brave Search", "access": "read", "domain": "search.brave.com", "strategy": "public", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results per page (max 18)" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Page offset (0, 1, 2...). Brave returns ~18 results per page" } ], "columns": [ "rank", "title", "url", "snippet" ], "type": "js", "modulePath": "brave/search.js", "sourceFile": "brave/search.js" }, { "site": "chaoxing", "name": "assignments", "description": "学习通作业列表", "access": "read", "domain": "mooc2-ans.chaoxing.com", "strategy": "cookie", "browser": true, "args": [ { "name": "course", "type": "string", "required": false, "help": "按课程名过滤(模糊匹配)" }, { "name": "status", "type": "string", "default": "all", "required": false, "help": "按状态过滤", "choices": [ "all", "pending", "submitted", "graded" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "最大返回数量" }, { "name": "timeout", "type": "int", "default": 90, "required": false, "help": "Max seconds for the overall command (default: 90)" } ], "columns": [ "rank", "course", "title", "deadline", "status", "score" ], "type": "js", "modulePath": "chaoxing/assignments.js", "sourceFile": "chaoxing/assignments.js", "navigateBefore": "https://mooc2-ans.chaoxing.com" }, { "site": "chaoxing", "name": "exams", "description": "学习通考试列表", "access": "read", "domain": "mooc2-ans.chaoxing.com", "strategy": "cookie", "browser": true, "args": [ { "name": "course", "type": "string", "required": false, "help": "按课程名过滤(模糊匹配)" }, { "name": "status", "type": "string", "default": "all", "required": false, "help": "按状态过滤", "choices": [ "all", "upcoming", "ongoing", "finished" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "最大返回数量" }, { "name": "timeout", "type": "int", "default": 90, "required": false, "help": "Max seconds for the overall command (default: 90)" } ], "columns": [ "rank", "course", "title", "start", "end", "status", "score" ], "type": "js", "modulePath": "chaoxing/exams.js", "sourceFile": "chaoxing/exams.js", "navigateBefore": "https://mooc2-ans.chaoxing.com" }, { "site": "chaoxing", "name": "login", "description": "Open chaoxing login and wait until the browser session is authenticated", "access": "write", "domain": "chaoxing.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "chaoxing/auth.js", "sourceFile": "chaoxing/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "chaoxing", "name": "whoami", "description": "Show the current logged-in chaoxing account", "access": "read", "domain": "chaoxing.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "chaoxing/auth.js", "sourceFile": "chaoxing/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "ask", "description": "Send a prompt to ChatGPT web and wait for the response", "access": "write", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait for response" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" }, { "name": "conversation", "type": "str", "required": false, "valueRequired": true, "help": "Continue an existing ChatGPT conversation ID or /c/ URL" }, { "name": "project", "type": "str", "required": false, "valueRequired": true, "help": "Start a new chat inside a ChatGPT project ID or /g/g-p- URL" }, { "name": "wait", "type": "boolean", "default": true, "required": false, "help": "Wait for the assistant response after sending" }, { "name": "deep-research", "type": "boolean", "default": false, "required": false, "help": "Enable ChatGPT 深度研究 (Deep Research)" }, { "name": "web-search", "type": "boolean", "default": false, "required": false, "help": "Enable ChatGPT 网页搜索 (Web Search)" } ], "columns": [ "conversationId", "conversationUrl", "tool", "response" ], "type": "js", "modulePath": "chatgpt/ask.js", "sourceFile": "chatgpt/ask.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "deep-research-result", "description": "Read a completed ChatGPT Deep Research report from the conversation payload", "access": "read", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation ID or full /c/ URL" }, { "name": "wait", "type": "boolean", "default": false, "required": false, "help": "Wait until Deep Research completes or becomes extractable" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait when --wait is true" }, { "name": "stable", "type": "int", "default": 6, "required": false, "help": "Seconds the report text must remain unchanged when --wait is true" } ], "columns": [ "conversationId", "status", "report", "sources", "progress", "asyncTaskConversationId", "widgetSessionId", "asyncStatus", "venusMessageType", "venusStatus", "waitingForUserUntil", "planTitle", "planId", "url", "method", "diagnostics" ], "type": "js", "modulePath": "chatgpt/deep-research-result.js", "sourceFile": "chatgpt/deep-research-result.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "detail", "description": "Open a ChatGPT web conversation by ID and read its messages", "access": "read", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation ID or full /c/ URL" }, { "name": "markdown", "type": "boolean", "default": false, "required": false, "help": "Emit assistant replies as markdown" }, { "name": "wait", "type": "boolean", "default": false, "required": false, "help": "Wait until the conversation stops generating and stabilizes" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait when --wait is true" }, { "name": "stable", "type": "int", "default": 6, "required": false, "help": "Seconds the final messages must remain unchanged when --wait is true" } ], "columns": [ "Index", "Role", "Text", "Generating", "StableSeconds" ], "type": "js", "modulePath": "chatgpt/detail.js", "sourceFile": "chatgpt/detail.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "history", "description": "List visible ChatGPT web conversation history from the sidebar", "access": "read", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max conversations to show" } ], "columns": [ "Index", "Id", "Title", "Url" ], "type": "js", "modulePath": "chatgpt/history.js", "sourceFile": "chatgpt/history.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "image", "description": "Generate images with ChatGPT web and save them locally", "access": "write", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Image prompt to send to ChatGPT" }, { "name": "image", "type": "str", "required": false, "help": "Local image path to attach before prompting; comma-separated paths are supported" }, { "name": "project", "type": "str", "required": false, "valueRequired": true, "help": "Start image generation inside a ChatGPT project ID or /g/g-p- URL" }, { "name": "op", "type": "str", "required": false, "help": "Output directory (default: ~/Pictures/chatgpt)" }, { "name": "sd", "type": "boolean", "default": false, "required": false, "help": "Skip download shorthand; only show ChatGPT link" }, { "name": "timeout", "type": "int", "default": 240, "required": false, "help": "Max seconds for the overall command (default: 240)" } ], "columns": [ "status", "file", "link" ], "defaultFormat": "plain", "type": "js", "modulePath": "chatgpt/image.js", "sourceFile": "chatgpt/image.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "login", "description": "Open chatgpt login and wait until the browser session is authenticated", "access": "write", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "chatgpt/auth.js", "sourceFile": "chatgpt/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "chatgpt", "name": "model", "description": "Switch ChatGPT web intelligence level (fast, balanced, advanced, very-high, pro)", "access": "write", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "model", "type": "str", "required": true, "positional": true, "help": "Intelligence level to switch to", "choices": [ "fast", "speed", "instant", "极速", "balanced", "balance", "medium", "均衡", "advanced", "high", "thinking", "高级", "very-high", "ultra", "xhigh", "x-high", "extra-high", "超高", "pro", "professional", "专业" ] }, { "name": "project", "type": "str", "required": false, "valueRequired": true, "help": "Open a ChatGPT project ID or /g/g-p- URL before switching intelligence level" } ], "columns": [ "Status", "Model" ], "type": "js", "modulePath": "chatgpt/model.js", "sourceFile": "chatgpt/model.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "new", "description": "Start a new ChatGPT web conversation", "access": "read", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "project", "type": "str", "required": false, "valueRequired": true, "help": "Start a new chat inside a ChatGPT project ID or /g/g-p- URL" } ], "columns": [ "Status" ], "type": "js", "modulePath": "chatgpt/new.js", "sourceFile": "chatgpt/new.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "project-file-add", "description": "Upload files to a ChatGPT project as project knowledge (not just conversation attachments)", "access": "write", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "file", "type": "str", "required": true, "positional": true, "help": "Local file path(s) to upload; comma-separated paths are supported" }, { "name": "id", "type": "str", "required": true, "help": "Project ID or /g/g-p- URL" } ], "columns": [ "Status", "File" ], "type": "js", "modulePath": "chatgpt/project-file-add.js", "sourceFile": "chatgpt/project-file-add.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "project-list", "description": "List visible ChatGPT projects from the sidebar", "access": "read", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max projects to show" } ], "columns": [ "Index", "Id", "Title", "Url" ], "type": "js", "modulePath": "chatgpt/project-list.js", "sourceFile": "chatgpt/project-list.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "read", "description": "Read messages in the current ChatGPT web conversation", "access": "read", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "markdown", "type": "boolean", "default": false, "required": false, "help": "Emit assistant replies as markdown" } ], "columns": [ "Index", "Role", "Text" ], "type": "js", "modulePath": "chatgpt/read.js", "sourceFile": "chatgpt/read.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "send", "description": "Send a prompt to ChatGPT web without waiting for the response", "access": "write", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" }, { "name": "conversation", "type": "str", "required": false, "valueRequired": true, "help": "Continue an existing ChatGPT conversation ID or /c/ URL" }, { "name": "project", "type": "str", "required": false, "valueRequired": true, "help": "Start a new chat inside a ChatGPT project ID or /g/g-p- URL" } ], "columns": [ "Status", "InjectedText" ], "type": "js", "modulePath": "chatgpt/send.js", "sourceFile": "chatgpt/send.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "status", "description": "Check ChatGPT web page availability and login state", "access": "read", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Login", "Url" ], "type": "js", "modulePath": "chatgpt/status.js", "sourceFile": "chatgpt/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt", "name": "whoami", "description": "Show the current logged-in chatgpt account", "access": "read", "domain": "chatgpt.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "chatgpt/auth.js", "sourceFile": "chatgpt/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "chatgpt-app", "name": "ask", "description": "Send a prompt and wait for the AI response (send + wait + read)", "access": "write", "domain": "localhost", "strategy": "public", "browser": false, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "model", "type": "str", "required": false, "help": "Model/mode to use: auto, instant, thinking, 5.2-instant, 5.2-thinking", "choices": [ "auto", "instant", "thinking", "5.2-instant", "5.2-thinking" ] }, { "name": "timeout", "type": "int", "default": 30, "required": false, "help": "Max seconds to wait for response (default: 30)" }, { "name": "image", "type": "str", "required": false, "help": "Path to local image to attach (optional)" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "chatgpt-app/ask.js", "sourceFile": "chatgpt-app/ask.js" }, { "site": "chatgpt-app", "name": "model", "description": "Switch ChatGPT Desktop model/mode (auto, instant, thinking, 5.2-instant, 5.2-thinking)", "access": "read", "domain": "localhost", "strategy": "public", "browser": false, "args": [ { "name": "model", "type": "str", "required": true, "positional": true, "help": "Model to switch to", "choices": [ "auto", "instant", "thinking", "5.2-instant", "5.2-thinking" ] } ], "columns": [ "Status", "Model" ], "type": "js", "modulePath": "chatgpt-app/model.js", "sourceFile": "chatgpt-app/model.js" }, { "site": "chatgpt-app", "name": "new", "description": "Open a new chat in ChatGPT Desktop App", "access": "write", "domain": "localhost", "strategy": "public", "browser": false, "args": [ { "name": "temp", "type": "boolean", "default": false, "required": false, "help": "Open a temporary chat with privacy protection" } ], "columns": [ "Status" ], "type": "js", "modulePath": "chatgpt-app/new.js", "sourceFile": "chatgpt-app/new.js" }, { "site": "chatgpt-app", "name": "read", "description": "Read the last visible message from the focused ChatGPT Desktop window", "access": "read", "domain": "localhost", "strategy": "public", "browser": false, "args": [], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "chatgpt-app/read.js", "sourceFile": "chatgpt-app/read.js" }, { "site": "chatgpt-app", "name": "send", "description": "Send a message to the active ChatGPT Desktop App window", "access": "write", "domain": "localhost", "strategy": "public", "browser": false, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Message to send" }, { "name": "model", "type": "str", "required": false, "help": "Model/mode to use: auto, instant, thinking, 5.2-instant, 5.2-thinking", "choices": [ "auto", "instant", "thinking", "5.2-instant", "5.2-thinking" ] } ], "columns": [ "Status" ], "type": "js", "modulePath": "chatgpt-app/send.js", "sourceFile": "chatgpt-app/send.js" }, { "site": "chatgpt-app", "name": "status", "description": "Check if ChatGPT Desktop App is running natively on macOS", "access": "read", "domain": "localhost", "strategy": "public", "browser": false, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "chatgpt-app/status.js", "sourceFile": "chatgpt-app/status.js" }, { "site": "chatwise", "name": "ask", "description": "Send a prompt and wait for the AI response (send + wait + read)", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 30, "required": false, "help": "Max seconds to wait (default: 30)" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "chatwise/ask.js", "sourceFile": "chatwise/ask.js", "navigateBefore": true }, { "site": "chatwise", "name": "export", "description": "Export the current ChatWise conversation to a Markdown file", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file (default: /tmp/chatwise-export.md)" } ], "columns": [ "Status", "File", "Messages" ], "type": "js", "modulePath": "chatwise/export.js", "sourceFile": "chatwise/export.js", "navigateBefore": true }, { "site": "chatwise", "name": "history", "description": "List conversation history in ChatWise sidebar", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Title" ], "type": "js", "modulePath": "chatwise/history.js", "sourceFile": "chatwise/history.js", "navigateBefore": true }, { "site": "chatwise", "name": "model", "description": "Get or switch the active AI model in ChatWise", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "model-name", "type": "str", "required": false, "positional": true, "help": "Model to switch to (e.g. gpt-4, claude-3)" } ], "columns": [ "Status", "Model" ], "type": "js", "modulePath": "chatwise/model.js", "sourceFile": "chatwise/model.js", "navigateBefore": true }, { "site": "chatwise", "name": "new", "description": "Start a new ChatWise conversation session", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "chatwise/new.js", "sourceFile": "chatwise/new.js", "navigateBefore": true }, { "site": "chatwise", "name": "read", "description": "Read the current ChatWise conversation history", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Content" ], "type": "js", "modulePath": "chatwise/read.js", "sourceFile": "chatwise/read.js", "navigateBefore": true }, { "site": "chatwise", "name": "screenshot", "description": "Capture a snapshot of the current ChatWise window (DOM + Accessibility tree)", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file path (default: /tmp/chatwise-snapshot.txt)" } ], "columns": [ "Status", "File" ], "type": "js", "modulePath": "chatwise/screenshot.js", "sourceFile": "chatwise/screenshot.js", "navigateBefore": true }, { "site": "chatwise", "name": "send", "description": "Send a message to the active ChatWise conversation", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Message to send" } ], "columns": [ "Status", "InjectedText" ], "type": "js", "modulePath": "chatwise/send.js", "sourceFile": "chatwise/send.js", "navigateBefore": true }, { "site": "chatwise", "name": "status", "description": "Check active CDP connection to ChatWise Desktop", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "Url", "Title" ], "type": "js", "modulePath": "chatwise/status.js", "sourceFile": "chatwise/status.js", "navigateBefore": true }, { "site": "chess", "name": "analyze", "description": "Open a Chess.com game in the browser analysis board", "access": "read", "domain": "www.chess.com", "strategy": "ui", "browser": true, "args": [ { "name": "game-url", "type": "string", "required": true, "positional": true, "help": "Full game URL, e.g. https://www.chess.com/game/live/168842570216" } ], "columns": [ "kind", "game_id", "analysis_url" ], "type": "js", "modulePath": "chess/analyze.js", "sourceFile": "chess/analyze.js", "navigateBefore": false }, { "site": "chess", "name": "game", "description": "Chess.com single-game detail (white, black, result, ECO, time control) by full game URL", "access": "read", "domain": "www.chess.com", "strategy": "public", "browser": false, "args": [ { "name": "game-url", "type": "string", "required": true, "positional": true, "help": "Full game URL, e.g. https://www.chess.com/game/live/168842570216" } ], "columns": [ "kind", "game_id", "date", "white", "white_rating", "black", "black_rating", "result", "winner_color", "termination", "eco", "time_control", "rated", "ply_count", "url" ], "type": "js", "modulePath": "chess/game.js", "sourceFile": "chess/game.js" }, { "site": "chess", "name": "games", "description": "Chess.com recent games for a player, newest first", "access": "read", "domain": "api.chess.com", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Chess.com username" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of recent games (1-100)" } ], "columns": [ "date", "time_class", "rated", "my_color", "my_rating", "my_result", "opponent", "opponent_rating", "accuracy_white", "accuracy_black", "eco", "opening_name", "url" ], "type": "js", "modulePath": "chess/games.js", "sourceFile": "chess/games.js" }, { "site": "chess", "name": "stats", "description": "Chess.com player ratings + win/loss record across game kinds", "access": "read", "domain": "api.chess.com", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Chess.com username (case-insensitive)" } ], "columns": [ "kind", "rating_current", "rating_best", "wins", "losses", "draws" ], "type": "js", "modulePath": "chess/stats.js", "sourceFile": "chess/stats.js" }, { "site": "claude", "name": "ask", "description": "Send a prompt to Claude and get the response", "access": "write", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait for response" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" }, { "name": "model", "type": "str", "default": "sonnet", "required": false, "help": "Model to use: sonnet, opus, or haiku", "choices": [ "sonnet", "opus", "haiku" ] }, { "name": "think", "type": "boolean", "default": false, "required": false, "help": "Enable Adaptive thinking" }, { "name": "file", "type": "str", "required": false, "help": "Attach a file (image, PDF, text) with the prompt" } ], "columns": [ "response" ], "type": "js", "modulePath": "claude/ask.js", "sourceFile": "claude/ask.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "claude", "name": "detail", "description": "Open a Claude conversation by ID and read its messages", "access": "read", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation ID (UUID from /chat/)" } ], "columns": [ "Index", "Role", "Text" ], "type": "js", "modulePath": "claude/detail.js", "sourceFile": "claude/detail.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "claude", "name": "history", "description": "List conversation history from Claude /recents", "access": "read", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max conversations to show" } ], "columns": [ "Index", "Id", "Title", "Url" ], "type": "js", "modulePath": "claude/history.js", "sourceFile": "claude/history.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "claude", "name": "login", "description": "Open claude login and wait until the browser session is authenticated", "access": "write", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "org_name", "org_uuid" ], "type": "js", "modulePath": "claude/auth.js", "sourceFile": "claude/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "claude", "name": "new", "description": "Start a new conversation in Claude", "access": "read", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "claude/new.js", "sourceFile": "claude/new.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "claude", "name": "read", "description": "Read the current Claude conversation", "access": "read", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Index", "Role", "Text" ], "type": "js", "modulePath": "claude/read.js", "sourceFile": "claude/read.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "claude", "name": "send", "description": "Send a prompt to Claude without waiting for the response", "access": "write", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" } ], "columns": [ "Status", "SubmittedBy", "InjectedText" ], "type": "js", "modulePath": "claude/send.js", "sourceFile": "claude/send.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "claude", "name": "status", "description": "Check Claude page availability and login state", "access": "read", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Login", "Url" ], "type": "js", "modulePath": "claude/status.js", "sourceFile": "claude/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "claude", "name": "whoami", "description": "Show the current logged-in claude account", "access": "read", "domain": "claude.ai", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "org_name", "org_uuid" ], "type": "js", "modulePath": "claude/auth.js", "sourceFile": "claude/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "cnki", "name": "search", "description": "中国知网论文搜索(海外版)", "access": "read", "domain": "oversea.cnki.net", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 20)" } ], "columns": [ "rank", "title", "authors", "journal", "date", "url" ], "type": "js", "modulePath": "cnki/search.js", "sourceFile": "cnki/search.js", "navigateBefore": false }, { "site": "codex", "name": "archive", "description": "Archive (Codex's term for delete) the selected conversation via the Chat actions header menu. No confirmation in UI — pass --yes to actually archive.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "yes", "type": "boolean", "default": false, "required": false, "help": "Actually archive (default: dry-run preview)" }, { "name": "project", "type": "str", "required": false, "help": "Project label or path to select before running the command" }, { "name": "conversation", "type": "str", "required": false, "help": "Conversation title to select within --project" }, { "name": "index", "type": "str", "required": false, "help": "1-based conversation index within --project" }, { "name": "thread-id", "type": "str", "required": false, "help": "Exact Codex thread id to select" } ], "columns": [ "status", "thread_id", "project", "conversation" ], "type": "js", "modulePath": "codex/archive.js", "sourceFile": "codex/archive.js", "navigateBefore": true }, { "site": "codex", "name": "ask", "description": "Send a prompt to the current or selected Codex conversation and wait for the AI response", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 60, "required": false, "help": "Max seconds to wait for response (default: 60)" }, { "name": "project", "type": "str", "required": false, "help": "Project label or path to select before running the command" }, { "name": "conversation", "type": "str", "required": false, "help": "Conversation title to select within --project" }, { "name": "index", "type": "str", "required": false, "help": "1-based conversation index within --project" }, { "name": "thread-id", "type": "str", "required": false, "help": "Exact Codex thread id to select" } ], "columns": [ "Role", "Project", "Conversation", "Text" ], "type": "js", "modulePath": "codex/ask.js", "sourceFile": "codex/ask.js", "navigateBefore": true }, { "site": "codex", "name": "dump", "description": "Dump the DOM and Accessibility tree of codex for reverse-engineering", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "action", "files" ], "type": "js", "modulePath": "codex/dump.js", "sourceFile": "codex/dump.js", "navigateBefore": true }, { "site": "codex", "name": "export", "description": "Export the current Codex conversation to a Markdown file", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file (default: /tmp/codex-export.md)" } ], "columns": [ "Status", "File", "Messages" ], "type": "js", "modulePath": "codex/export.js", "sourceFile": "codex/export.js", "navigateBefore": true }, { "site": "codex", "name": "extract-diff", "description": "Extract visual code review diff patches from Codex", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "File", "Diff" ], "type": "js", "modulePath": "codex/extract-diff.js", "sourceFile": "codex/extract-diff.js", "navigateBefore": true }, { "site": "codex", "name": "history", "description": "List visible Codex conversation threads grouped by project", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "project", "type": "str", "required": false, "help": "Filter by project label or path" }, { "name": "limit", "type": "str", "required": false, "help": "Max conversations per project" } ], "columns": [ "Project", "Index", "Title", "Updated", "Active" ], "type": "js", "modulePath": "codex/history.js", "sourceFile": "codex/history.js", "navigateBefore": true }, { "site": "codex", "name": "model", "description": "Read, list, or switch the active model / reasoning level in Codex Desktop. The composer toolbar button toggles a menu that mixes model variants (GPT-5.5, Speed) with reasoning levels (Low/Medium/High/Extra High).", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "name", "type": "str", "required": false, "positional": true, "help": "Substring (case-insensitive) of a model / reasoning level to switch to. Omit to read current." }, { "name": "list", "type": "boolean", "default": false, "required": false, "help": "List all menu options (does not switch)" } ], "columns": [ "Status", "Model" ], "type": "js", "modulePath": "codex/model.js", "sourceFile": "codex/model.js", "navigateBefore": true }, { "site": "codex", "name": "new", "description": "Start a new Codex conversation session", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "codex/new.js", "sourceFile": "codex/new.js", "navigateBefore": true }, { "site": "codex", "name": "pin", "description": "Pin the selected Codex conversation via the Chat actions header menu.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "project", "type": "str", "required": false, "help": "Project label or path to select before running the command" }, { "name": "conversation", "type": "str", "required": false, "help": "Conversation title to select within --project" }, { "name": "index", "type": "str", "required": false, "help": "1-based conversation index within --project" }, { "name": "thread-id", "type": "str", "required": false, "help": "Exact Codex thread id to select" } ], "columns": [ "status", "thread_id", "project", "conversation" ], "type": "js", "modulePath": "codex/pin.js", "sourceFile": "codex/pin.js", "navigateBefore": true }, { "site": "codex", "name": "projects", "description": "List Codex projects and visible conversations from the sidebar", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "project", "type": "str", "required": false, "help": "Filter by project label or path" }, { "name": "limit", "type": "str", "required": false, "help": "Max conversations per project" } ], "columns": [ "Project", "Index", "Title", "Updated", "Active" ], "type": "js", "modulePath": "codex/projects.js", "sourceFile": "codex/projects.js", "navigateBefore": true }, { "site": "codex", "name": "read", "description": "Read the contents of the current or selected Codex conversation thread", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "project", "type": "str", "required": false, "help": "Project label or path to select before running the command" }, { "name": "conversation", "type": "str", "required": false, "help": "Conversation title to select within --project" }, { "name": "index", "type": "str", "required": false, "help": "1-based conversation index within --project" }, { "name": "thread-id", "type": "str", "required": false, "help": "Exact Codex thread id to select" } ], "columns": [ "Project", "Conversation", "Content" ], "type": "js", "modulePath": "codex/read.js", "sourceFile": "codex/read.js", "navigateBefore": true }, { "site": "codex", "name": "rename", "description": "Rename the selected Codex conversation. Opens the Chat actions menu → \"Rename chat\", then types the new title.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "title", "type": "str", "required": true, "positional": true, "help": "New title (single line, no newlines)" }, { "name": "project", "type": "str", "required": false, "help": "Project label or path to select before running the command" }, { "name": "conversation", "type": "str", "required": false, "help": "Conversation title to select within --project" }, { "name": "index", "type": "str", "required": false, "help": "1-based conversation index within --project" }, { "name": "thread-id", "type": "str", "required": false, "help": "Exact Codex thread id to select" } ], "columns": [ "status", "title", "thread_id", "project" ], "type": "js", "modulePath": "codex/rename.js", "sourceFile": "codex/rename.js", "navigateBefore": true }, { "site": "codex", "name": "screenshot", "description": "Capture a snapshot of the current Codex window (DOM + Accessibility tree)", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file path (default: /tmp/codex-snapshot.txt)" } ], "columns": [ "Status", "File" ], "type": "js", "modulePath": "codex/screenshot.js", "sourceFile": "codex/screenshot.js", "navigateBefore": true }, { "site": "codex", "name": "send", "description": "Send text/commands to the current or selected Codex AI composer", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Text, command (e.g. /review), or skill (e.g. $imagegen)" }, { "name": "project", "type": "str", "required": false, "help": "Project label or path to select before running the command" }, { "name": "conversation", "type": "str", "required": false, "help": "Conversation title to select within --project" }, { "name": "index", "type": "str", "required": false, "help": "1-based conversation index within --project" }, { "name": "thread-id", "type": "str", "required": false, "help": "Exact Codex thread id to select" } ], "columns": [ "Status", "Project", "Conversation", "InjectedText" ], "type": "js", "modulePath": "codex/send.js", "sourceFile": "codex/send.js", "navigateBefore": true }, { "site": "codex", "name": "status", "description": "Check active CDP connection to OpenAI Codex App", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "Url", "Title" ], "type": "js", "modulePath": "codex/status.js", "sourceFile": "codex/status.js", "navigateBefore": true }, { "site": "codex", "name": "unpin", "description": "Unpin the selected Codex conversation via the Chat actions header menu.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "project", "type": "str", "required": false, "help": "Project label or path to select before running the command" }, { "name": "conversation", "type": "str", "required": false, "help": "Conversation title to select within --project" }, { "name": "index", "type": "str", "required": false, "help": "1-based conversation index within --project" }, { "name": "thread-id", "type": "str", "required": false, "help": "Exact Codex thread id to select" } ], "columns": [ "status", "thread_id", "project", "conversation" ], "type": "js", "modulePath": "codex/pin.js", "sourceFile": "codex/pin.js", "navigateBefore": true }, { "site": "coingecko", "name": "categories", "description": "Crypto categories ranked by aggregated market cap", "access": "read", "domain": "api.coingecko.com", "strategy": "public", "browser": false, "args": [ { "name": "sort", "type": "str", "default": "market_cap_desc", "required": false, "help": "Sort order (market_cap_desc / market_cap_asc / name_desc / name_asc / market_cap_change_24h_desc / market_cap_change_24h_asc)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of categories (1-100; CoinGecko returns ~120 max)" } ], "columns": [ "rank", "id", "name", "marketCap", "volume24h", "marketCapChange24hPct", "top3Coins" ], "type": "js", "modulePath": "coingecko/categories.js", "sourceFile": "coingecko/categories.js" }, { "site": "coingecko", "name": "coin", "description": "Fetch a single cryptocurrency's market data by CoinGecko id (e.g. bitcoin, ethereum).", "access": "read", "domain": "api.coingecko.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "CoinGecko coin id (lowercase, e.g. bitcoin / ethereum / solana)." }, { "name": "currency", "type": "string", "default": "usd", "required": false, "help": "Quote currency (usd, cny, eur, jpy, ...)." } ], "columns": [ "id", "symbol", "name", "rank", "price", "marketCap", "volume24h", "change24hPct", "change7dPct", "change30dPct", "ath", "athDate", "atl", "atlDate", "circulatingSupply", "totalSupply", "maxSupply", "genesisDate", "homepage" ], "type": "js", "modulePath": "coingecko/coin.js", "sourceFile": "coingecko/coin.js" }, { "site": "coingecko", "name": "derivatives", "description": "Top crypto derivative (perpetual / futures) markets by 24h volume", "access": "read", "domain": "api.coingecko.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max rows to return (1-500; CoinGecko returns one large page)." }, { "name": "symbol", "type": "string", "required": false, "help": "Optional symbol substring filter (e.g. \"BTC\", \"ETHUSDT\")." } ], "columns": [ "rank", "market", "symbol", "indexId", "contractType", "price", "change24hPct", "fundingRate", "openInterestUsd", "volume24hUsd", "expired" ], "type": "js", "modulePath": "coingecko/derivatives.js", "sourceFile": "coingecko/derivatives.js" }, { "site": "coingecko", "name": "exchanges", "description": "Top crypto exchanges by 24h BTC trading volume", "access": "read", "domain": "api.coingecko.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of exchanges (1-250, CoinGecko per_page upper bound)" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number (1-based)" } ], "columns": [ "rank", "id", "name", "trustScore", "volume24hBtc", "country", "yearEstablished", "url" ], "type": "js", "modulePath": "coingecko/exchanges.js", "sourceFile": "coingecko/exchanges.js" }, { "site": "coingecko", "name": "global", "description": "Aggregate crypto market stats: total market cap, volume, dominance", "access": "read", "domain": "api.coingecko.com", "strategy": "public", "browser": false, "args": [ { "name": "currency", "type": "string", "default": "usd", "required": false, "help": "Quote currency for total market cap / volume (usd, cny, eur, jpy, ...)" } ], "columns": [ "currency", "totalMarketCap", "totalVolume24h", "marketCapChange24hPct", "btcDominancePct", "ethDominancePct", "activeCryptocurrencies", "markets", "ongoingIcos", "updatedAt" ], "type": "js", "modulePath": "coingecko/global.js", "sourceFile": "coingecko/global.js" }, { "site": "coingecko", "name": "top", "description": "按市值排序的加密货币行情(默认 USD)", "access": "read", "domain": "api.coingecko.com", "strategy": "public", "browser": false, "args": [ { "name": "currency", "type": "string", "default": "usd", "required": false, "help": "计价币种 (usd / cny / eur / jpy ...)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回数量(默认 10,最多 250)" } ], "columns": [ "rank", "symbol", "name", "price", "change24hPct", "marketCap", "volume24h", "high24h", "low24h" ], "type": "js", "modulePath": "coingecko/top.js", "sourceFile": "coingecko/top.js" }, { "site": "coingecko", "name": "trending", "description": "Top trending cryptocurrencies on CoinGecko in the last 24h (search-volume based).", "access": "read", "domain": "api.coingecko.com", "strategy": "public", "browser": false, "args": [], "columns": [ "rank", "id", "symbol", "name", "marketCapRank", "priceBtc", "thumb" ], "type": "js", "modulePath": "coingecko/trending.js", "sourceFile": "coingecko/trending.js" }, { "site": "confluence", "name": "create", "description": "Create a Confluence page from Markdown or storage XHTML", "access": "write", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "space", "type": "string", "required": true, "help": "Cloud space id, or Data Center space key" }, { "name": "title", "type": "string", "required": true, "help": "Page title" }, { "name": "file", "type": "string", "required": true, "help": "Markdown file path" }, { "name": "parent", "type": "string", "required": false, "help": "Optional parent page id" }, { "name": "representation", "type": "string", "default": "markdown", "required": false, "help": "Input file format", "choices": [ "markdown", "storage" ] }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually create the remote page" } ], "columns": [ "status", "id", "title", "spaceId", "spaceKey", "version", "url" ], "type": "js", "modulePath": "confluence/create.js", "sourceFile": "confluence/create.js" }, { "site": "confluence", "name": "page", "description": "Confluence page by id with storage and Markdown body", "access": "read", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Confluence page id" } ], "columns": [ "id", "title", "status", "spaceId", "spaceKey", "version", "url" ], "type": "js", "modulePath": "confluence/page.js", "sourceFile": "confluence/page.js" }, { "site": "confluence", "name": "search", "description": "Search Confluence content with CQL", "access": "read", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "cql", "type": "str", "required": true, "positional": true, "help": "CQL query, e.g. \"type = page and title ~ \\\"RCA\\\"\"" }, { "name": "space", "type": "string", "required": false, "help": "Limit search to a Confluence space key" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results to return (1-100)" } ], "columns": [ "id", "title", "type", "spaceKey", "status", "lastModified", "url" ], "type": "js", "modulePath": "confluence/search.js", "sourceFile": "confluence/search.js" }, { "site": "confluence", "name": "update", "description": "Update a Confluence page body from Markdown or storage XHTML", "access": "write", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Confluence page id" }, { "name": "file", "type": "string", "required": true, "help": "Markdown file path" }, { "name": "title", "type": "string", "required": false, "help": "Optional replacement title; defaults to current title" }, { "name": "version-message", "type": "string", "required": false, "help": "Confluence version message" }, { "name": "representation", "type": "string", "default": "markdown", "required": false, "help": "Input file format", "choices": [ "markdown", "storage" ] }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually update the remote page" } ], "columns": [ "status", "id", "title", "spaceId", "spaceKey", "version", "url" ], "type": "js", "modulePath": "confluence/update.js", "sourceFile": "confluence/update.js" }, { "site": "coupang", "name": "add-to-cart", "description": "Add a Coupang product to cart using logged-in browser session", "access": "write", "domain": "www.coupang.com", "strategy": "cookie", "browser": true, "args": [ { "name": "product-id", "type": "str", "required": false, "positional": true, "help": "Coupang product ID" }, { "name": "url", "type": "str", "required": false, "help": "Canonical product URL" } ], "columns": [ "ok", "product_id", "url", "message" ], "type": "js", "modulePath": "coupang/add-to-cart.js", "sourceFile": "coupang/add-to-cart.js", "navigateBefore": "https://www.coupang.com" }, { "site": "coupang", "name": "login", "description": "Open coupang login and wait until the browser session is authenticated", "access": "write", "domain": "coupang.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "name" ], "type": "js", "modulePath": "coupang/auth.js", "sourceFile": "coupang/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "coupang", "name": "product", "description": "Read full product detail (price, rating, seller, delivery) for a Coupang product", "access": "read", "domain": "www.coupang.com", "strategy": "cookie", "browser": true, "args": [ { "name": "product-id", "type": "str", "required": false, "positional": true, "help": "Coupang product ID (digits only)" }, { "name": "url", "type": "str", "required": false, "help": "Canonical Coupang product URL (alternative to --product-id)" } ], "columns": [ "product_id", "title", "price", "original_price", "discount_rate", "rating", "review_count", "seller", "brand", "rocket", "delivery_promise", "image_url", "url" ], "type": "js", "modulePath": "coupang/product.js", "sourceFile": "coupang/product.js", "navigateBefore": "https://www.coupang.com" }, { "site": "coupang", "name": "search", "description": "Search Coupang products with logged-in browser session", "access": "read", "domain": "www.coupang.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Search result page number" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (max 50)" }, { "name": "filter", "type": "str", "required": false, "help": "Optional search filter (currently supports: rocket)" } ], "columns": [ "rank", "product_id", "title", "price", "unit_price", "rating", "review_count", "rocket", "delivery_type", "delivery_promise", "url" ], "type": "js", "modulePath": "coupang/search.js", "sourceFile": "coupang/search.js", "navigateBefore": "https://www.coupang.com" }, { "site": "coupang", "name": "whoami", "description": "Show the current logged-in coupang account", "access": "read", "domain": "coupang.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "name" ], "type": "js", "modulePath": "coupang/auth.js", "sourceFile": "coupang/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "crates", "name": "crate", "description": "Single crates.io crate metadata (latest version, downloads, license, repo)", "access": "read", "domain": "crates.io", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "crates.io crate name (e.g. \"serde\", \"tokio\")" } ], "columns": [ "name", "latestVersion", "description", "downloads", "recentDownloads", "versions", "license", "homepage", "documentation", "repository", "keywords", "categories", "created", "updated", "url" ], "type": "js", "modulePath": "crates/crate.js", "sourceFile": "crates/crate.js" }, { "site": "crates", "name": "search", "description": "Search the public crates.io registry by keyword", "access": "read", "domain": "crates.io", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"serde\", \"async runtime\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" } ], "columns": [ "rank", "name", "latestVersion", "description", "downloads", "recentDownloads", "repository", "updated", "url" ], "type": "js", "modulePath": "crates/search.js", "sourceFile": "crates/search.js" }, { "site": "ctrip", "name": "flight", "description": "搜索携程一程机票(按出发/到达 IATA 三字码 + 日期)", "access": "read", "domain": "flights.ctrip.com", "strategy": "cookie", "browser": true, "args": [ { "name": "from", "type": "str", "required": true, "positional": true, "help": "Departure IATA code (e.g. BJS / PEK)" }, { "name": "to", "type": "str", "required": true, "positional": true, "help": "Arrival IATA code (e.g. SHA / PVG)" }, { "name": "date", "type": "str", "required": true, "help": "Departure date (YYYY-MM-DD)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of flights (1-50)" } ], "columns": [ "rank", "airline", "flightNo", "aircraft", "departureTime", "departureAirport", "arrivalTime", "arrivalAirport", "terminal", "price", "currency", "cabin", "url" ], "type": "js", "modulePath": "ctrip/flight.js", "sourceFile": "ctrip/flight.js", "navigateBefore": false }, { "site": "ctrip", "name": "hotel-search", "description": "搜索携程酒店列表(按城市 + 入住/离店日期)", "access": "read", "domain": "hotels.ctrip.com", "strategy": "cookie", "browser": true, "args": [ { "name": "city", "type": "str", "required": true, "positional": true, "help": "Numeric Ctrip city ID (use `ctrip search` or `ctrip hotel-suggest` to discover)" }, { "name": "checkin", "type": "str", "required": true, "help": "Check-in date (YYYY-MM-DD)" }, { "name": "checkout", "type": "str", "required": true, "help": "Check-out date (YYYY-MM-DD)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of hotels (1-30); SSR first page returns ~13 entries" } ], "columns": [ "rank", "hotelId", "name", "enName", "star", "score", "scoreLabel", "reviewCount", "cityName", "district", "address", "lat", "lon", "price", "currency", "url" ], "type": "js", "modulePath": "ctrip/hotel-search.js", "sourceFile": "ctrip/hotel-search.js", "navigateBefore": false }, { "site": "ctrip", "name": "hotel-suggest", "description": "搜索携程酒店上下文联想:城市、商圈、单酒店匹配", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (city, business area, or hotel name)" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of results (1-50)" } ], "columns": [ "rank", "id", "type", "displayType", "name", "eName", "cityId", "cityName", "provinceName", "countryName", "lat", "lon", "score", "url" ], "type": "js", "modulePath": "ctrip/hotel-suggest.js", "sourceFile": "ctrip/hotel-suggest.js" }, { "site": "ctrip", "name": "login", "description": "Open ctrip login and wait until the browser session is authenticated", "access": "write", "domain": "ctrip.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name", "vip_grade" ], "type": "js", "modulePath": "ctrip/auth.js", "sourceFile": "ctrip/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "ctrip", "name": "search", "description": "搜索携程目的地、景区、火车站和地标联想结果", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (city, scenic spot, landmark)" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of results (1-50)" } ], "columns": [ "rank", "id", "type", "displayType", "name", "eName", "cityId", "cityName", "provinceName", "countryName", "lat", "lon", "score", "url" ], "type": "js", "modulePath": "ctrip/search.js", "sourceFile": "ctrip/search.js" }, { "site": "ctrip", "name": "whoami", "description": "Show the current logged-in ctrip account", "access": "read", "domain": "ctrip.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name", "vip_grade" ], "type": "js", "modulePath": "ctrip/auth.js", "sourceFile": "ctrip/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "cursor", "name": "ask", "description": "Send a prompt and wait for the AI response (send + wait + read)", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 30, "required": false, "help": "Max seconds to wait for response (default: 30)" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "cursor/ask.js", "sourceFile": "cursor/ask.js", "navigateBefore": true }, { "site": "cursor", "name": "composer", "description": "Send a prompt directly into Cursor Composer (Cmd+I shortcut)", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Text to send into Composer" } ], "columns": [ "Status", "InjectedText" ], "type": "js", "modulePath": "cursor/composer.js", "sourceFile": "cursor/composer.js", "navigateBefore": true }, { "site": "cursor", "name": "dump", "description": "Dump the DOM and Accessibility tree of cursor for reverse-engineering", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "action", "files" ], "type": "js", "modulePath": "cursor/dump.js", "sourceFile": "cursor/dump.js", "navigateBefore": true }, { "site": "cursor", "name": "export", "description": "Export the current cursor conversation to a Markdown file", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file (default: /tmp/cursor-export.md)" } ], "columns": [ "Status", "File", "Messages" ], "type": "js", "modulePath": "cursor/export.js", "sourceFile": "cursor/export.js", "navigateBefore": true }, { "site": "cursor", "name": "extract-code", "description": "Extract multi-line code blocks from the current Cursor conversation", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Code" ], "type": "js", "modulePath": "cursor/extract-code.js", "sourceFile": "cursor/extract-code.js", "navigateBefore": true }, { "site": "cursor", "name": "history", "description": "List recent chat sessions from the Cursor sidebar", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Title" ], "type": "js", "modulePath": "cursor/history.js", "sourceFile": "cursor/history.js", "navigateBefore": true }, { "site": "cursor", "name": "model", "description": "Get or switch the currently active AI model in Cursor", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "model-name", "type": "str", "required": false, "positional": true, "help": "The ID of the model to switch to (e.g. claude-3.5-sonnet)" } ], "columns": [ "Status", "Model" ], "type": "js", "modulePath": "cursor/model.js", "sourceFile": "cursor/model.js", "navigateBefore": true }, { "site": "cursor", "name": "new", "description": "Start a new Cursor chat or Composer session", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "cursor/new.js", "sourceFile": "cursor/new.js", "navigateBefore": true }, { "site": "cursor", "name": "read", "description": "Read the current Cursor chat/composer conversation history", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "cursor/read.js", "sourceFile": "cursor/read.js", "navigateBefore": true }, { "site": "cursor", "name": "screenshot", "description": "Capture a snapshot of the current cursor window (DOM + Accessibility tree)", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file path (default: /tmp/cursor-snapshot.txt)" } ], "columns": [ "Status", "File" ], "type": "js", "modulePath": "cursor/screenshot.js", "sourceFile": "cursor/screenshot.js", "navigateBefore": true }, { "site": "cursor", "name": "send", "description": "Send a prompt directly into Cursor Composer/Chat", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Text to send into Cursor" } ], "columns": [ "Status", "InjectedText" ], "type": "js", "modulePath": "cursor/send.js", "sourceFile": "cursor/send.js", "navigateBefore": true }, { "site": "cursor", "name": "status", "description": "Check active CDP connection to Cursor AI Editor", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "Url", "Title" ], "type": "js", "modulePath": "cursor/status.js", "sourceFile": "cursor/status.js", "navigateBefore": true }, { "site": "dblp", "name": "author", "description": "List dblp publications by a given author (newest first; resolves to top PID match)", "access": "read", "domain": "dblp.org", "strategy": "public", "browser": false, "args": [ { "name": "author", "type": "str", "required": false, "positional": true, "help": "Author name (e.g. \"Yoshua Bengio\"). Optional when --pid is given." }, { "name": "pid", "type": "str", "required": false, "help": "Canonical dblp PID (e.g. \"56/953\"). Bypasses author search." }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max publications (1-200)" } ], "columns": [ "rank", "key", "title", "authors", "venue", "year", "type", "doi", "pid", "url" ], "type": "js", "modulePath": "dblp/author.js", "sourceFile": "dblp/author.js" }, { "site": "dblp", "name": "paper", "aliases": [ "detail", "view" ], "description": "Fetch a dblp record by canonical key (e.g. conf/nips/VaswaniSPUJGKP17)", "access": "read", "domain": "dblp.org", "strategy": "public", "browser": false, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "dblp record key (round-tripped from the `key` column of `dblp search`)" } ], "columns": [ "key", "type", "title", "authors", "venue", "year", "pages", "doi", "open_access_url", "dblp_url" ], "type": "js", "modulePath": "dblp/paper.js", "sourceFile": "dblp/paper.js" }, { "site": "dblp", "name": "search", "description": "Search dblp computer-science bibliography by free-text query", "access": "read", "domain": "dblp.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (title / author / venue, e.g. \"attention is all you need\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100, single dblp page)" } ], "columns": [ "rank", "key", "title", "authors", "venue", "year", "type", "doi", "url" ], "type": "js", "modulePath": "dblp/search.js", "sourceFile": "dblp/search.js" }, { "site": "dblp", "name": "venue", "description": "Search dblp venue registry (conferences / journals) by name or acronym", "access": "read", "domain": "dblp.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Venue name or acronym (e.g. \"ICLR\", \"neural networks\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max venues (1-100, single dblp page)" } ], "columns": [ "rank", "acronym", "venue", "type", "url" ], "type": "js", "modulePath": "dblp/venue.js", "sourceFile": "dblp/venue.js" }, { "site": "deepseek", "name": "ask", "description": "Send a prompt to DeepSeek and get the response", "access": "write", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait for response" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" }, { "name": "model", "type": "str", "default": "instant", "required": false, "help": "Model to use: instant, expert, or vision", "choices": [ "instant", "expert", "vision" ] }, { "name": "think", "type": "boolean", "default": false, "required": false, "help": "Enable DeepThink mode" }, { "name": "search", "type": "boolean", "default": false, "required": false, "help": "Enable web search" }, { "name": "file", "type": "str", "required": false, "help": "Attach a file (PDF, image, text) with the prompt" } ], "type": "js", "modulePath": "deepseek/ask.js", "sourceFile": "deepseek/ask.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "deepseek", "name": "detail", "description": "Read a specific DeepSeek conversation by ID", "access": "read", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation ID (UUID) or full /a/chat/s/ URL" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "deepseek/detail.js", "sourceFile": "deepseek/detail.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "deepseek", "name": "history", "description": "List conversation history from DeepSeek sidebar", "access": "read", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max conversations to show" } ], "columns": [ "Index", "Title", "Url" ], "type": "js", "modulePath": "deepseek/history.js", "sourceFile": "deepseek/history.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "deepseek", "name": "login", "description": "Open deepseek login and wait until the browser session is authenticated", "access": "write", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "deepseek/auth.js", "sourceFile": "deepseek/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "deepseek", "name": "new", "description": "Start a new conversation in DeepSeek", "access": "read", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "deepseek/new.js", "sourceFile": "deepseek/new.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "deepseek", "name": "read", "description": "Read the current DeepSeek conversation", "access": "read", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "deepseek/read.js", "sourceFile": "deepseek/read.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "deepseek", "name": "send", "description": "Send a prompt to a specific DeepSeek conversation by ID, without waiting for a response", "access": "write", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation ID (UUID) or full /a/chat/s/ URL" }, { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 60, "required": false, "help": "Max seconds for the overall command (default: 60)" } ], "columns": [ "Status", "InjectedText" ], "type": "js", "modulePath": "deepseek/send.js", "sourceFile": "deepseek/send.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "deepseek", "name": "status", "description": "Check DeepSeek page availability and login state", "access": "read", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Login", "Url" ], "type": "js", "modulePath": "deepseek/status.js", "sourceFile": "deepseek/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "deepseek", "name": "whoami", "description": "Show the current logged-in deepseek account", "access": "read", "domain": "chat.deepseek.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "deepseek/auth.js", "sourceFile": "deepseek/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "defillama", "name": "protocol", "description": "Single DefiLlama protocol details (current TVL, mcap, chains, twitter, github, description)", "access": "read", "domain": "defillama.com", "strategy": "public", "browser": false, "args": [ { "name": "slug", "type": "string", "required": true, "positional": true, "help": "DefiLlama protocol slug (e.g. \"aave\", \"lido\")" } ], "columns": [ "slug", "name", "category", "isParent", "tvl", "tvlAt", "mcap", "chains", "twitter", "github", "audits", "listedAt", "description", "website", "url" ], "type": "js", "modulePath": "defillama/protocol.js", "sourceFile": "defillama/protocol.js" }, { "site": "defillama", "name": "protocols", "description": "Top DeFi protocols on DefiLlama by current TVL (slug, name, category, TVL, mcap, change_1d/7d, chains)", "access": "read", "domain": "defillama.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Number of rows to return (1-500)" } ], "columns": [ "rank", "slug", "name", "category", "tvl", "mcap", "change_1d", "change_7d", "chains", "listedAt", "url" ], "type": "js", "modulePath": "defillama/protocols.js", "sourceFile": "defillama/protocols.js" }, { "site": "devto", "name": "latest", "description": "Newest dev.to articles (firehose, all tags)", "access": "read", "domain": "dev.to", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Articles per page (1-100)" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number (1-based)" } ], "columns": [ "rank", "id", "title", "author", "tags", "reactions", "comments", "published", "url" ], "type": "js", "modulePath": "devto/latest.js", "sourceFile": "devto/latest.js" }, { "site": "devto", "name": "read", "description": "Read a DEV.to article body by id", "access": "read", "domain": "dev.to", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "DEV.to article id (numeric, e.g. 3605688)" }, { "name": "max-length", "type": "int", "default": 20000, "required": false, "help": "Max characters of body to return (min 100)" } ], "columns": [ "id", "title", "author", "reactions", "reading_time", "tags", "published_at", "body", "url" ], "type": "js", "modulePath": "devto/read.js", "sourceFile": "devto/read.js" }, { "site": "devto", "name": "tag", "description": "Latest DEV.to articles for a specific tag", "access": "read", "domain": "dev.to", "strategy": "public", "browser": false, "args": [ { "name": "tag", "type": "str", "required": true, "positional": true, "help": "Tag name (e.g. javascript, python, webdev)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of articles" } ], "columns": [ "rank", "id", "title", "author", "reactions", "comments", "reading_time", "published_at", "tags", "url" ], "type": "js", "modulePath": "devto/tag.js", "sourceFile": "devto/tag.js" }, { "site": "devto", "name": "top", "description": "Top DEV.to articles of the day", "access": "read", "domain": "dev.to", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of articles" } ], "columns": [ "rank", "id", "title", "author", "reactions", "comments", "reading_time", "published_at", "tags", "url" ], "type": "js", "modulePath": "devto/top.js", "sourceFile": "devto/top.js" }, { "site": "devto", "name": "user", "description": "Recent DEV.to articles from a specific user", "access": "read", "domain": "dev.to", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "DEV.to username (e.g. ben, thepracticaldev)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of articles" } ], "columns": [ "rank", "id", "title", "reactions", "comments", "reading_time", "published_at", "tags", "url" ], "type": "js", "modulePath": "devto/user.js", "sourceFile": "devto/user.js" }, { "site": "dianping", "name": "login", "description": "Open dianping login and wait until the browser session is authenticated", "access": "write", "domain": "dianping.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "dianping/auth.js", "sourceFile": "dianping/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "dianping", "name": "search", "description": "大众点评店铺搜索(按关键词 + 城市)", "access": "read", "domain": "www.dianping.com", "strategy": "cookie", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "搜索关键词,例如 \"火锅\"" }, { "name": "city", "type": "str", "required": false, "help": "城市名(北京/上海/汕头/beijing/shantou/...)或 cityId 数字。未在静态表中的城市会通过 dianping.com 在线解析。不传则使用 cookie 默认城市" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "返回的店铺数量(最多 15,dianping 单页固定 15 条)" } ], "columns": [ "rank", "shop_id", "name", "rating", "reviews", "price", "cuisine", "district", "url" ], "type": "js", "modulePath": "dianping/search.js", "sourceFile": "dianping/search.js", "navigateBefore": "https://www.dianping.com" }, { "site": "dianping", "name": "shop", "aliases": [ "detail" ], "description": "大众点评店铺详情(按 shop_id)", "access": "read", "domain": "www.dianping.com", "strategy": "cookie", "browser": true, "args": [ { "name": "shop_id", "type": "str", "required": true, "positional": true, "help": "店铺 ID(来自 search 的 shop_id 列,或 https://www.dianping.com/shop/ URL 段)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "dianping/shop.js", "sourceFile": "dianping/shop.js", "navigateBefore": "https://www.dianping.com" }, { "site": "dianping", "name": "whoami", "description": "Show the current logged-in dianping account", "access": "read", "domain": "dianping.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "dianping/auth.js", "sourceFile": "dianping/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "dictionary", "name": "examples", "description": "Read real-world example sentences utilizing the word", "access": "read", "domain": "api.dictionaryapi.dev", "strategy": "public", "browser": false, "args": [ { "name": "word", "type": "string", "required": true, "positional": true, "help": "Word to get example sentences for" } ], "columns": [ "word", "example" ], "type": "js", "modulePath": "dictionary/examples.js", "sourceFile": "dictionary/examples.js" }, { "site": "dictionary", "name": "search", "description": "Search the Free Dictionary API for definitions, parts of speech, and pronunciations.", "access": "read", "domain": "api.dictionaryapi.dev", "strategy": "public", "browser": false, "args": [ { "name": "word", "type": "string", "required": true, "positional": true, "help": "Word to define (e.g., serendipity)" } ], "columns": [ "word", "phonetic", "type", "definition" ], "type": "js", "modulePath": "dictionary/search.js", "sourceFile": "dictionary/search.js" }, { "site": "dictionary", "name": "synonyms", "description": "Find synonyms for a specific word", "access": "read", "domain": "api.dictionaryapi.dev", "strategy": "public", "browser": false, "args": [ { "name": "word", "type": "string", "required": true, "positional": true, "help": "Word to find synonyms for (e.g., serendipity)" } ], "columns": [ "word", "synonyms" ], "type": "js", "modulePath": "dictionary/synonyms.js", "sourceFile": "dictionary/synonyms.js" }, { "site": "discord-app", "name": "channels", "description": "List channels in the current Discord server", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Channel", "Type", "guild_id", "channel_id", "url" ], "type": "js", "modulePath": "discord-app/channels.js", "sourceFile": "discord-app/channels.js", "navigateBefore": true }, { "site": "discord-app", "name": "delete", "description": "Delete a message by its ID in the active Discord channel", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "message_id", "type": "string", "required": true, "positional": true, "help": "The ID of the message to delete (visible via Developer Mode or the read command)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "discord-app/delete.js", "sourceFile": "discord-app/delete.js", "navigateBefore": true }, { "site": "discord-app", "name": "goto", "description": "Open a Discord channel by id/name/url without sending messages", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "guild", "type": "str", "required": false, "help": "Guild/server id or visible name" }, { "name": "channel", "type": "str", "required": false, "help": "Channel id or visible name" }, { "name": "url", "type": "str", "required": false, "help": "Discord channel URL" }, { "name": "timeout", "type": "str", "default": "8", "required": false, "help": "Seconds to wait for Discord to show the route (default: 8)" } ], "columns": [ "Status", "guild_id", "channel_id", "url" ], "type": "js", "modulePath": "discord-app/goto.js", "sourceFile": "discord-app/goto.js", "navigateBefore": true }, { "site": "discord-app", "name": "members", "description": "List online members in the current Discord channel", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Name", "Status" ], "type": "js", "modulePath": "discord-app/members.js", "sourceFile": "discord-app/members.js", "navigateBefore": true }, { "site": "discord-app", "name": "read", "description": "Read recent messages from the active or targeted Discord channel", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "count", "type": "str", "default": "20", "required": false, "help": "Number of messages to read (default: 20)" }, { "name": "guild", "type": "str", "required": false, "help": "Guild/server id or visible name for targeted reads" }, { "name": "channel", "type": "str", "required": false, "help": "Channel id or visible name for targeted reads" }, { "name": "url", "type": "str", "required": false, "help": "Discord channel URL to open before reading" } ], "columns": [ "Author", "Time", "Message", "channel_id", "message_id" ], "type": "js", "modulePath": "discord-app/read.js", "sourceFile": "discord-app/read.js", "navigateBefore": true }, { "site": "discord-app", "name": "search", "description": "Search messages in the current Discord server/channel (Cmd+F)", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" } ], "columns": [ "Index", "Author", "Message" ], "type": "js", "modulePath": "discord-app/search.js", "sourceFile": "discord-app/search.js", "navigateBefore": true }, { "site": "discord-app", "name": "send", "description": "Send a message in the active Discord channel", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Message to send" } ], "columns": [ "Status" ], "type": "js", "modulePath": "discord-app/send.js", "sourceFile": "discord-app/send.js", "navigateBefore": true }, { "site": "discord-app", "name": "servers", "description": "List all Discord servers (guilds) in the sidebar", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Server", "guild_id", "url" ], "type": "js", "modulePath": "discord-app/servers.js", "sourceFile": "discord-app/servers.js", "navigateBefore": true }, { "site": "discord-app", "name": "status", "description": "Check active CDP connection to Discord Desktop", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "Url", "Title" ], "type": "js", "modulePath": "discord-app/status.js", "sourceFile": "discord-app/status.js", "navigateBefore": true }, { "site": "discord-app", "name": "thread-read", "description": "Read recent messages from a Discord thread/post by id or URL", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "thread", "type": "str", "required": false, "help": "Thread/post id, or a full Discord thread/post URL" }, { "name": "count", "type": "str", "default": "20", "required": false, "help": "Number of messages to read (default: 20)" }, { "name": "guild", "type": "str", "required": false, "help": "Parent guild/server id or visible name" }, { "name": "channel", "type": "str", "required": false, "help": "Parent forum/channel id or visible name" }, { "name": "url", "type": "str", "required": false, "help": "Discord thread/post URL" } ], "columns": [ "Author", "Time", "Message", "channel_id", "message_id" ], "type": "js", "modulePath": "discord-app/thread-read.js", "sourceFile": "discord-app/thread-read.js", "navigateBefore": true }, { "site": "discord-app", "name": "threads", "description": "List visible Discord forum/thread posts in the active or targeted channel", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "limit", "type": "str", "default": "30", "required": false, "help": "Maximum thread/post cards to return (default: 30)" }, { "name": "guild", "type": "str", "required": false, "help": "Guild/server id or visible name for targeted thread listing" }, { "name": "channel", "type": "str", "required": false, "help": "Forum/channel id or visible name for targeted thread listing" }, { "name": "url", "type": "str", "required": false, "help": "Discord forum/channel URL to open before listing threads" } ], "columns": [ "Index", "Thread", "Author", "Updated", "Preview", "guild_id", "channel_id", "thread_id", "url" ], "type": "js", "modulePath": "discord-app/threads.js", "sourceFile": "discord-app/threads.js", "navigateBefore": true }, { "site": "dockerhub", "name": "image", "description": "Fetch a Docker Hub repository's public metadata (stars, pulls, last updated, status)", "access": "read", "domain": "hub.docker.com", "strategy": "public", "browser": false, "args": [ { "name": "image", "type": "str", "required": true, "positional": true, "help": "Image name (e.g. \"nginx\", \"library/nginx\", \"bitnami/redis\")" } ], "columns": [ "image", "official", "stars", "pulls", "description", "lastUpdated", "lastModified", "registered", "status", "url" ], "type": "js", "modulePath": "dockerhub/image.js", "sourceFile": "dockerhub/image.js" }, { "site": "dockerhub", "name": "search", "description": "Search Docker Hub repositories by keyword", "access": "read", "domain": "hub.docker.com", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"nginx\", \"bitnami redis\")" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Max repositories (1-100, single Docker Hub page)" } ], "columns": [ "rank", "image", "official", "stars", "pulls", "description", "url" ], "type": "js", "modulePath": "dockerhub/search.js", "sourceFile": "dockerhub/search.js" }, { "site": "dongchedi", "name": "koubei", "aliases": [ "reviews" ], "description": "懂车帝车系口碑/车主评价(评分 / 购车款型 / 点赞 / 评论 / 正文摘要)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "series_id", "type": "str", "required": true, "positional": true, "help": "车系 ID(来自 search 的 series_id,或 /auto/series/ URL)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回的口碑条数(最多 15,单页 SSR 上限)" } ], "columns": [ "rank", "user", "car", "score", "likes", "comments", "content", "url" ], "type": "js", "modulePath": "dongchedi/koubei.js", "sourceFile": "dongchedi/koubei.js" }, { "site": "dongchedi", "name": "models", "aliases": [ "trims" ], "description": "懂车帝车系款型列表(car_id / 名称 / 年款 / 指导价 / 经销商价 / 车主成交价)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "series_id", "type": "str", "required": true, "positional": true, "help": "车系 ID(来自 search 的 series_id,或 /auto/series/ URL)" }, { "name": "status", "type": "str", "default": "online", "required": false, "help": "在售 online(默认)或停售 offline" } ], "columns": [ "car_id", "name", "year", "official_price", "dealer_price", "owner_price" ], "type": "js", "modulePath": "dongchedi/models.js", "sourceFile": "dongchedi/models.js" }, { "site": "dongchedi", "name": "score", "aliases": [ "rating" ], "description": "懂车帝车系评分(懂车分 8 维度 + 同级车均值对比)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "series_id", "type": "str", "required": true, "positional": true, "help": "车系 ID(来自 search 的 series_id,或 /auto/series/ URL)" } ], "columns": [ "dimension", "score", "same_level_avg" ], "type": "js", "modulePath": "dongchedi/score.js", "sourceFile": "dongchedi/score.js" }, { "site": "dongchedi", "name": "search", "description": "懂车帝车系搜索(按关键词,返回车系 + 指导价/经销商价)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "搜索关键词,例如 \"宝马X5\" 或 \"汉兰达\"" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "返回的车系数量(最多 30)" } ], "columns": [ "rank", "series_id", "name", "brand", "official_price", "dealer_price", "pictures", "url" ], "type": "js", "modulePath": "dongchedi/search.js", "sourceFile": "dongchedi/search.js" }, { "site": "dongchedi", "name": "series", "aliases": [ "detail" ], "description": "懂车帝车系概览(品牌 / 指导价 / 二手价 / 懂车分 / 销量排名 / 在售款型数)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "series_id", "type": "str", "required": true, "positional": true, "help": "车系 ID(来自 search 的 series_id,或 /auto/series/ URL)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "dongchedi/series.js", "sourceFile": "dongchedi/series.js" }, { "site": "dongchedi", "name": "specs", "aliases": [ "config" ], "description": "懂车帝车系配置概览(尺寸 / 动力 / 发动机 / 变速箱 / 四驱 / 悬挂 / 气囊)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "series_id", "type": "str", "required": true, "positional": true, "help": "车系 ID(来自 search 的 series_id,或 /auto/series/ URL)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "dongchedi/specs.js", "sourceFile": "dongchedi/specs.js" }, { "site": "douban", "name": "book-hot", "description": "豆瓣图书热门榜单", "access": "read", "domain": "book.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的图书数量" } ], "columns": [ "rank", "title", "rating", "quote", "author", "publisher", "year", "url" ], "type": "js", "modulePath": "douban/book-hot.js", "sourceFile": "douban/book-hot.js", "navigateBefore": "https://book.douban.com" }, { "site": "douban", "name": "download", "description": "下载电影海报/剧照图片", "access": "read", "domain": "movie.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "电影 subject ID" }, { "name": "type", "type": "str", "default": "Rb", "required": false, "help": "豆瓣 photos 的 type 参数,默认 Rb(海报)" }, { "name": "limit", "type": "int", "default": 120, "required": false, "help": "最多下载多少张图片" }, { "name": "photo-id", "type": "str", "required": false, "help": "只下载指定 photo_id 的图片" }, { "name": "output", "type": "str", "default": "./douban-downloads", "required": false, "help": "输出目录" } ], "columns": [ "index", "title", "status", "size" ], "type": "js", "modulePath": "douban/download.js", "sourceFile": "douban/download.js", "navigateBefore": "https://movie.douban.com" }, { "site": "douban", "name": "login", "description": "Open douban login and wait until the browser session is authenticated", "access": "write", "domain": "douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "douban/auth.js", "sourceFile": "douban/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "douban", "name": "marks", "description": "导出个人观影标记", "access": "read", "domain": "movie.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "status", "type": "str", "default": "collect", "required": false, "help": "标记类型: collect(看过), wish(想看), do(在看), all(全部)", "choices": [ "collect", "wish", "do", "all" ] }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "导出数量, 0 表示全部" }, { "name": "uid", "type": "str", "required": false, "help": "用户ID,不填则使用当前登录账号" } ], "columns": [ "title", "year", "myRating", "myStatus", "myDate", "myComment", "url" ], "type": "js", "modulePath": "douban/marks.js", "sourceFile": "douban/marks.js", "navigateBefore": "https://movie.douban.com" }, { "site": "douban", "name": "movie-hot", "description": "豆瓣电影热门榜单", "access": "read", "domain": "movie.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的电影数量" } ], "columns": [ "rank", "id", "title", "rating", "votes", "year", "url" ], "type": "js", "modulePath": "douban/movie-hot.js", "sourceFile": "douban/movie-hot.js", "navigateBefore": "https://movie.douban.com" }, { "site": "douban", "name": "photos", "description": "获取电影海报/剧照图片列表", "access": "read", "domain": "movie.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "电影 subject ID" }, { "name": "type", "type": "str", "default": "Rb", "required": false, "help": "豆瓣 photos 的 type 参数,默认 Rb(海报)" }, { "name": "limit", "type": "int", "default": 120, "required": false, "help": "最多返回多少张图片" } ], "columns": [ "index", "photo_id", "subject_id", "title", "image_url", "detail_url" ], "type": "js", "modulePath": "douban/photos.js", "sourceFile": "douban/photos.js", "navigateBefore": "https://movie.douban.com" }, { "site": "douban", "name": "reviews", "description": "导出个人影评", "access": "read", "domain": "movie.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "导出数量" }, { "name": "uid", "type": "str", "required": false, "help": "用户ID,不填则使用当前登录账号" }, { "name": "full", "type": "bool", "default": false, "required": false, "help": "获取完整影评内容" } ], "columns": [ "movieTitle", "title", "myRating", "votes", "content", "url" ], "type": "js", "modulePath": "douban/reviews.js", "sourceFile": "douban/reviews.js", "navigateBefore": "https://movie.douban.com" }, { "site": "douban", "name": "search", "description": "搜索豆瓣电影、图书或音乐", "access": "read", "domain": "search.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "type", "type": "str", "default": "movie", "required": false, "help": "搜索类型(movie=电影, book=图书, music=音乐)", "choices": [ "movie", "book", "music" ] }, { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回结果数量" } ], "columns": [ "rank", "title", "rating", "abstract", "url" ], "type": "js", "modulePath": "douban/search.js", "sourceFile": "douban/search.js", "navigateBefore": false }, { "site": "douban", "name": "subject", "description": "获取豆瓣条目详情", "access": "read", "domain": "movie.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "豆瓣条目 ID" }, { "name": "type", "type": "str", "default": "movie", "required": false, "help": "条目类型(movie=电影, book=图书)", "choices": [ "movie", "book" ] } ], "columns": [ "id", "type", "title", "subtitle", "originalTitle", "authors", "translators", "publisher", "publishDate", "publishYear", "pageCount", "binding", "price", "series", "isbn10", "isbn13", "year", "rating", "ratingCount", "genres", "directors", "casts", "country", "duration", "summary", "url" ], "type": "js", "modulePath": "douban/subject.js", "sourceFile": "douban/subject.js", "navigateBefore": false }, { "site": "douban", "name": "top250", "description": "豆瓣电影 Top250", "access": "read", "domain": "movie.douban.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 250, "required": false, "help": "返回结果数量" } ], "columns": [ "rank", "id", "title", "rating", "url" ], "type": "js", "modulePath": "douban/top250.js", "sourceFile": "douban/top250.js", "navigateBefore": "https://movie.douban.com" }, { "site": "douban", "name": "whoami", "description": "Show the current logged-in douban account", "access": "read", "domain": "douban.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "douban/auth.js", "sourceFile": "douban/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "ask", "description": "Send a prompt and wait for the Doubao response", "access": "write", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 60, "required": false, "help": "Max seconds to wait (default: 60)" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "doubao/ask.js", "sourceFile": "doubao/ask.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "detail", "description": "Read a specific Doubao conversation by ID", "access": "read", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation ID (numeric or full URL)" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "doubao/detail.js", "sourceFile": "doubao/detail.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "history", "description": "List conversation history from Doubao sidebar", "access": "read", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "str", "default": "50", "required": false, "help": "Max number of conversations to show" } ], "columns": [ "Index", "Id", "Title", "Url" ], "type": "js", "modulePath": "doubao/history.js", "sourceFile": "doubao/history.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "login", "description": "Open doubao login and wait until the browser session is authenticated", "access": "write", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "doubao/auth.js", "sourceFile": "doubao/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "doubao", "name": "meeting-summary", "description": "Get meeting summary and chapters from a Doubao conversation", "access": "read", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation ID (numeric or full URL)" }, { "name": "chapters", "type": "str", "default": "false", "required": false, "help": "Also include AI chapters" } ], "columns": [ "Section", "Content" ], "type": "js", "modulePath": "doubao/meeting-summary.js", "sourceFile": "doubao/meeting-summary.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "meeting-transcript", "description": "Get or download the meeting transcript from a Doubao conversation", "access": "read", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation ID (numeric or full URL)" }, { "name": "download", "type": "str", "default": "false", "required": false, "help": "Trigger browser file download instead of reading text" } ], "columns": [ "Section", "Content" ], "type": "js", "modulePath": "doubao/meeting-transcript.js", "sourceFile": "doubao/meeting-transcript.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "new", "description": "Start a new conversation in Doubao web chat", "access": "read", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Action" ], "type": "js", "modulePath": "doubao/new.js", "sourceFile": "doubao/new.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "read", "description": "Read the current Doubao conversation history", "access": "read", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "doubao/read.js", "sourceFile": "doubao/read.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "send", "description": "Send a message to Doubao web chat", "access": "write", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Message to send" } ], "columns": [ "Status", "SubmittedBy", "InjectedText" ], "type": "js", "modulePath": "doubao/send.js", "sourceFile": "doubao/send.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "status", "description": "Check Doubao chat page availability and login state", "access": "read", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Login", "Url", "Title" ], "type": "js", "modulePath": "doubao/status.js", "sourceFile": "doubao/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao", "name": "whoami", "description": "Show the current logged-in doubao account", "access": "read", "domain": "www.doubao.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "doubao/auth.js", "sourceFile": "doubao/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "doubao-app", "name": "ask", "description": "Send a message to Doubao desktop app and wait for the AI response", "access": "write", "domain": "doubao-app", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 30, "required": false, "help": "Max seconds to wait for response" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "doubao-app/ask.js", "sourceFile": "doubao-app/ask.js", "navigateBefore": true }, { "site": "doubao-app", "name": "dump", "description": "Dump Doubao desktop app DOM and snapshot to /tmp for debugging", "access": "read", "domain": "doubao-app", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "File" ], "type": "js", "modulePath": "doubao-app/dump.js", "sourceFile": "doubao-app/dump.js", "navigateBefore": true }, { "site": "doubao-app", "name": "new", "description": "Start a new chat in Doubao desktop app", "access": "read", "domain": "doubao-app", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "doubao-app/new.js", "sourceFile": "doubao-app/new.js", "navigateBefore": true }, { "site": "doubao-app", "name": "read", "description": "Read chat history from Doubao desktop app", "access": "read", "domain": "doubao-app", "strategy": "ui", "browser": true, "args": [], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "doubao-app/read.js", "sourceFile": "doubao-app/read.js", "navigateBefore": true }, { "site": "doubao-app", "name": "screenshot", "description": "Capture a screenshot of the Doubao desktop app window", "access": "read", "domain": "doubao-app", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file path (default: /tmp/doubao-screenshot.png)" } ], "columns": [ "Status", "File" ], "type": "js", "modulePath": "doubao-app/screenshot.js", "sourceFile": "doubao-app/screenshot.js", "navigateBefore": true }, { "site": "doubao-app", "name": "send", "description": "Send a message to Doubao desktop app", "access": "write", "domain": "doubao-app", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Message text to send" } ], "columns": [ "Status", "Text" ], "type": "js", "modulePath": "doubao-app/send.js", "sourceFile": "doubao-app/send.js", "navigateBefore": true }, { "site": "doubao-app", "name": "status", "description": "Check CDP connection to Doubao desktop app", "access": "read", "domain": "doubao-app", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "Url", "Title" ], "type": "js", "modulePath": "doubao-app/status.js", "sourceFile": "doubao-app/status.js", "navigateBefore": true }, { "site": "douyin", "name": "activities", "description": "官方活动列表", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "activity_id", "title", "end_time" ], "type": "js", "modulePath": "douyin/activities.js", "sourceFile": "douyin/activities.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "collections", "description": "合集列表", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "mix_id", "name", "item_count" ], "type": "js", "modulePath": "douyin/collections.js", "sourceFile": "douyin/collections.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "delete", "description": "删除作品(优先使用创作者后台作品管理;找不到时回退到旧删除接口)", "access": "write", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "aweme_id", "type": "str", "required": true, "positional": true, "help": "作品 ID / item_id" } ], "columns": [ "status" ], "type": "js", "modulePath": "douyin/delete.js", "sourceFile": "douyin/delete.js", "navigateBefore": "https://creator.douyin.com", "siteSession": "persistent" }, { "site": "douyin", "name": "draft", "description": "上传视频并保存为草稿", "access": "write", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "video", "type": "str", "required": true, "positional": true, "help": "视频文件路径" }, { "name": "title", "type": "str", "required": true, "help": "视频标题(≤30字)" }, { "name": "caption", "type": "str", "default": "", "required": false, "help": "正文内容(≤1000字,支持 #话题)" }, { "name": "cover", "type": "str", "default": "", "required": false, "help": "封面图片路径" }, { "name": "visibility", "type": "str", "default": "public", "required": false, "help": "", "choices": [ "public", "friends", "private" ] } ], "columns": [ "status", "draft_id" ], "type": "js", "modulePath": "douyin/draft.js", "sourceFile": "douyin/draft.js", "navigateBefore": false }, { "site": "douyin", "name": "drafts", "description": "获取草稿列表", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "aweme_id", "title", "create_time" ], "type": "js", "modulePath": "douyin/drafts.js", "sourceFile": "douyin/drafts.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "hashtag", "description": "话题搜索 / AI推荐 / 热点词", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "action", "type": "str", "required": true, "positional": true, "help": "search=关键词搜索 (--keyword 必填), suggest=AI推荐 (--cover 必填), hot=热点词 (--keyword 可选)", "choices": [ "search", "suggest", "hot" ] }, { "name": "keyword", "type": "str", "default": "", "required": false, "help": "搜索关键词. search 必填; hot 可选; suggest 不使用 (传 --cover)" }, { "name": "cover", "type": "str", "default": "", "required": false, "help": "封面 URI (cover_uri). suggest 必填; 其它 action 不使用" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "" } ], "columns": [ "name", "id", "view_count" ], "type": "js", "modulePath": "douyin/hashtag.js", "sourceFile": "douyin/hashtag.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "location", "description": "地理位置 POI 搜索", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "地名关键词" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "poi_id", "name", "address", "city" ], "type": "js", "modulePath": "douyin/location.js", "sourceFile": "douyin/location.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "login", "description": "Open douyin login and wait until the browser session is authenticated", "access": "write", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "id", "username", "followers" ], "type": "js", "modulePath": "douyin/auth.js", "sourceFile": "douyin/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "douyin", "name": "profile", "description": "获取账号信息", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "uid", "nickname", "follower_count", "following_count", "aweme_count" ], "type": "js", "modulePath": "douyin/profile.js", "sourceFile": "douyin/profile.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "publish", "description": "定时发布视频到抖音(必须设置 2h ~ 14天后的发布时间)", "access": "write", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "video", "type": "str", "required": true, "positional": true, "help": "视频文件路径" }, { "name": "title", "type": "str", "required": true, "help": "视频标题(≤30字)" }, { "name": "schedule", "type": "str", "required": true, "help": "定时发布时间(ISO8601 或 Unix 秒,2h ~ 14天后)" }, { "name": "caption", "type": "str", "default": "", "required": false, "help": "正文内容(≤1000字,支持 #话题)" }, { "name": "cover", "type": "str", "default": "", "required": false, "help": "封面图片路径(不提供时使用视频截帧)" }, { "name": "visibility", "type": "str", "default": "public", "required": false, "help": "", "choices": [ "public", "friends", "private" ] }, { "name": "allow_download", "type": "bool", "default": false, "required": false, "help": "允许下载" }, { "name": "collection", "type": "str", "default": "", "required": false, "help": "合集 ID" }, { "name": "activity", "type": "str", "default": "", "required": false, "help": "活动 ID" }, { "name": "poi_id", "type": "str", "default": "", "required": false, "help": "地理位置 ID" }, { "name": "poi_name", "type": "str", "default": "", "required": false, "help": "地理位置名称" }, { "name": "hotspot", "type": "str", "default": "", "required": false, "help": "关联热点词" }, { "name": "no_safety_check", "type": "bool", "default": false, "required": false, "help": "跳过内容安全检测" }, { "name": "sync_toutiao", "type": "bool", "default": false, "required": false, "help": "同步发布到头条" } ], "columns": [ "status", "aweme_id", "url", "publish_time" ], "type": "js", "modulePath": "douyin/publish.js", "sourceFile": "douyin/publish.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "search", "description": "关键词搜索抖音视频", "access": "read", "domain": "www.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "结果数量 (1-30)" } ], "columns": [ "rank", "desc", "author", "url", "plays", "likes", "comments", "shares" ], "type": "js", "modulePath": "douyin/search.js", "sourceFile": "douyin/search.js", "navigateBefore": "https://www.douyin.com" }, { "site": "douyin", "name": "stats", "description": "作品数据分析", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "aweme_id", "type": "str", "required": true, "positional": true, "help": "抖音作品 ID(aweme_id,可从作品 URL 末尾获取)" } ], "columns": [ "metric", "value" ], "type": "js", "modulePath": "douyin/stats.js", "sourceFile": "douyin/stats.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "update", "description": "更新视频信息", "access": "write", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "aweme_id", "type": "str", "required": true, "positional": true, "help": "抖音作品 ID(aweme_id,可从作品 URL 末尾获取)" }, { "name": "reschedule", "type": "str", "default": "", "required": false, "help": "新的发布时间(ISO8601 或 Unix 秒)" }, { "name": "caption", "type": "str", "default": "", "required": false, "help": "新的正文内容" } ], "columns": [ "status" ], "type": "js", "modulePath": "douyin/update.js", "sourceFile": "douyin/update.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "user-videos", "description": "获取指定用户的视频列表(含下载地址和热门评论)", "access": "read", "domain": "www.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "sec_uid", "type": "string", "required": true, "positional": true, "help": "用户 sec_uid(URL 末尾部分)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "获取数量(最大 20)" }, { "name": "with_comments", "type": "bool", "default": true, "required": false, "help": "包含热门评论(默认: true)" }, { "name": "comment_limit", "type": "int", "default": 10, "required": false, "help": "每个视频获取多少条评论(最大 10)" } ], "columns": [ "index", "aweme_id", "title", "duration", "digg_count", "play_url", "top_comments" ], "type": "js", "modulePath": "douyin/user-videos.js", "sourceFile": "douyin/user-videos.js", "navigateBefore": "https://www.douyin.com" }, { "site": "douyin", "name": "videos", "description": "获取作品列表", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "每页数量" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "页码" }, { "name": "status", "type": "str", "default": "all", "required": false, "help": "", "choices": [ "all", "published", "reviewing", "scheduled" ] } ], "columns": [ "aweme_id", "title", "status", "play_count", "digg_count", "create_time" ], "type": "js", "modulePath": "douyin/videos.js", "sourceFile": "douyin/videos.js", "navigateBefore": "https://creator.douyin.com" }, { "site": "douyin", "name": "whoami", "description": "Show the current logged-in douyin account", "access": "read", "domain": "creator.douyin.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "id", "username", "followers" ], "type": "js", "modulePath": "douyin/auth.js", "sourceFile": "douyin/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "duckduckgo", "name": "search", "description": "Search DuckDuckGo", "access": "read", "domain": "html.duckduckgo.com", "strategy": "public", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results per page (1-10). For multi-page, use --offset" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Result offset for pagination (0, 10, 20...). Uses XHR POST internally" }, { "name": "region", "type": "str", "required": false, "help": "Region code (e.g. jp-jp, us-en, cn-zh). Default: all regions" }, { "name": "time", "type": "str", "required": false, "help": "Time range: d (day), w (week), m (month), y (year)" } ], "columns": [ "rank", "title", "url", "snippet", "displayUrl", "icon", "resultType" ], "type": "js", "modulePath": "duckduckgo/search.js", "sourceFile": "duckduckgo/search.js" }, { "site": "duckduckgo", "name": "suggest", "description": "DuckDuckGo search suggestions", "access": "read", "domain": "duckduckgo.com", "strategy": "public", "browser": false, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search query prefix" }, { "name": "limit", "type": "int", "default": 8, "required": false, "help": "Max number of suggestions" } ], "columns": [ "phrase" ], "type": "js", "modulePath": "duckduckgo/suggest.js", "sourceFile": "duckduckgo/suggest.js" }, { "site": "eastmoney", "name": "announcement", "description": "上市公司公告(按交易所筛选)", "access": "read", "domain": "np-anotice-stock.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "market", "type": "string", "default": "SHA,SZA,BJA", "required": false, "help": "交易所:SHA (沪) / SZA (深) / BJA (北) 可逗号分隔" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 100)" } ], "columns": [ "time", "code", "name", "title", "category", "url" ], "type": "js", "modulePath": "eastmoney/announcement.js", "sourceFile": "eastmoney/announcement.js" }, { "site": "eastmoney", "name": "convertible", "description": "可转债行情列表(默认按成交额排序)", "access": "read", "domain": "push2.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "sort", "type": "string", "default": "turnover", "required": false, "help": "排序:turnover / change / drop / price / premium" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 100)" } ], "columns": [ "rank", "bondCode", "bondName", "bondPrice", "bondChangePct", "stockCode", "stockName", "stockPrice", "stockChangePct", "convPrice", "convValue", "convPremiumPct", "remainingYears", "ytm", "listDate" ], "type": "js", "modulePath": "eastmoney/convertible.js", "sourceFile": "eastmoney/convertible.js" }, { "site": "eastmoney", "name": "etf", "description": "ETF 列表按成交额/涨跌幅排行", "access": "read", "domain": "push2.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "sort", "type": "string", "default": "turnover", "required": false, "help": "排序:turnover / change / drop / volume / rate" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 100)" } ], "columns": [ "rank", "code", "name", "price", "changePercent", "change", "turnover", "volume", "turnoverRate" ], "type": "js", "modulePath": "eastmoney/etf.js", "sourceFile": "eastmoney/etf.js" }, { "site": "eastmoney", "name": "holders", "description": "十大流通股东(A股 F10 数据)", "access": "read", "domain": "datacenter-web.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "A股代码(600519 / sh600519 等)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回股东数(默认十大流通股东)" } ], "columns": [ "rank", "reportDate", "name", "holdNum", "floatRatio", "change" ], "type": "js", "modulePath": "eastmoney/holders.js", "sourceFile": "eastmoney/holders.js" }, { "site": "eastmoney", "name": "hot-rank", "description": "东方财富热股榜", "access": "read", "domain": "guba.eastmoney.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量" } ], "columns": [ "rank", "symbol", "name", "price", "changePercent", "heat", "url" ], "type": "js", "modulePath": "eastmoney/hot-rank.js", "sourceFile": "eastmoney/hot-rank.js", "navigateBefore": true }, { "site": "eastmoney", "name": "index-board", "description": "主要市场指数行情(A股 / 港股 / 美股)", "access": "read", "domain": "push2.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "group", "type": "string", "default": "main", "required": false, "help": "指数分组:main (A股主要), hk (港股), us (美股), all" } ], "columns": [ "code", "name", "price", "changePercent", "change", "open", "high", "low", "prevClose" ], "type": "js", "modulePath": "eastmoney/index-board.js", "sourceFile": "eastmoney/index-board.js" }, { "site": "eastmoney", "name": "kline", "description": "K线历史数据(分/日/周/月/前复权/后复权)", "access": "read", "domain": "push2his.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "股票代码(A/HK/US 均可)" }, { "name": "period", "type": "string", "default": "day", "required": false, "help": "周期:1m/5m/15m/30m/60m/day/week/month" }, { "name": "adjust", "type": "string", "default": "forward", "required": false, "help": "复权:none / forward / backward" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "返回最近 N 根(末尾)" } ], "columns": [ "date", "open", "close", "high", "low", "volume", "turnover", "amplitude", "changePercent", "change", "turnoverRate" ], "type": "js", "modulePath": "eastmoney/kline.js", "sourceFile": "eastmoney/kline.js" }, { "site": "eastmoney", "name": "kuaixun", "description": "东方财富 7x24 财经快讯", "access": "read", "domain": "np-listapi.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "column", "type": "string", "default": "102", "required": false, "help": "频道:102 (重要) / 101 (全部) / 104 / 105 / 106 / 107" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 100)" } ], "columns": [ "time", "title", "summary", "stocks" ], "type": "js", "modulePath": "eastmoney/kuaixun.js", "sourceFile": "eastmoney/kuaixun.js" }, { "site": "eastmoney", "name": "longhu", "description": "龙虎榜明细(A股交易所公开披露榜单)", "access": "read", "domain": "datacenter-web.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "date", "type": "string", "default": "", "required": false, "help": "开始交易日 YYYY-MM-DD (默认昨天)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 100)" } ], "columns": [ "tradeDate", "code", "name", "closePrice", "changeRate", "boardAmt", "buyAmt", "sellAmt", "netAmt", "turnover", "dealRatio", "market", "reason" ], "type": "js", "modulePath": "eastmoney/longhu.js", "sourceFile": "eastmoney/longhu.js" }, { "site": "eastmoney", "name": "money-flow", "description": "主力资金净流入排行(今日/5日/10日)", "access": "read", "domain": "push2.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "range", "type": "string", "default": "today", "required": false, "help": "周期:today / 5d / 10d" }, { "name": "order", "type": "string", "default": "desc", "required": false, "help": "排序:desc (净流入排行) / asc (净流出)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 100)" } ], "columns": [ "rank", "code", "name", "price", "changePercent", "mainNet", "mainNetRatio", "superNet", "bigNet", "mediumNet", "smallNet" ], "type": "js", "modulePath": "eastmoney/money-flow.js", "sourceFile": "eastmoney/money-flow.js" }, { "site": "eastmoney", "name": "northbound", "description": "沪深港通北向/南向资金当日分时净流入(万元)", "access": "read", "domain": "push2.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "direction", "type": "string", "default": "north", "required": false, "help": "方向:north (北向,即外资买A) / south (南向,即内地买港)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回最近 N 分钟" } ], "columns": [ "time", "cumulativeNetYi", "minuteNetYi", "totalNetYi" ], "type": "js", "modulePath": "eastmoney/northbound.js", "sourceFile": "eastmoney/northbound.js" }, { "site": "eastmoney", "name": "quote", "description": "个股实时行情(A股 / 港股 / 美股)— 来自 push2.eastmoney.com", "access": "read", "domain": "push2.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "symbols", "type": "str", "required": true, "positional": true, "help": "股票代码(可用逗号/空格分隔多个)" } ], "columns": [ "code", "name", "market", "price", "changePercent", "change", "open", "high", "low", "prevClose", "volume", "turnover", "turnoverRate", "amplitude", "peDynamic", "priceBook", "marketCap", "floatMarketCap" ], "type": "js", "modulePath": "eastmoney/quote.js", "sourceFile": "eastmoney/quote.js" }, { "site": "eastmoney", "name": "rank", "description": "东财市场涨跌/成交排行(沪深/北证/创/科/港/美)", "access": "read", "domain": "push2.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "market", "type": "string", "default": "hs-a", "required": false, "help": "市场:hs-a / sh-a / sz-a / bj-a / cyb / kcb / hk / us" }, { "name": "sort", "type": "string", "default": "change", "required": false, "help": "排序:change / drop / turnover / volume / amplitude / rate" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 100)" } ], "columns": [ "rank", "code", "name", "price", "changePercent", "change", "turnover", "volume", "turnoverRate", "peDynamic", "marketCap" ], "type": "js", "modulePath": "eastmoney/rank.js", "sourceFile": "eastmoney/rank.js" }, { "site": "eastmoney", "name": "sectors", "description": "板块排行(行业/概念/地域)按涨跌幅、主力资金或成交额排序", "access": "read", "domain": "push2.eastmoney.com", "strategy": "public", "browser": false, "args": [ { "name": "type", "type": "string", "default": "industry", "required": false, "help": "板块类型:industry / concept / region" }, { "name": "sort", "type": "string", "default": "change", "required": false, "help": "排序:change / drop / money-flow / out-flow / turnover" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 100)" } ], "columns": [ "rank", "code", "name", "price", "changePercent", "mainNet", "leadStock", "leadChangePercent", "upCount", "downCount" ], "type": "js", "modulePath": "eastmoney/sectors.js", "sourceFile": "eastmoney/sectors.js" }, { "site": "endoflife", "name": "product", "description": "Release cycles + EOL / LTS / support dates for one product on endoflife.date", "access": "read", "domain": "endoflife.date", "strategy": "public", "browser": false, "args": [ { "name": "product", "type": "string", "required": true, "positional": true, "help": "endoflife.date product slug (e.g. \"nodejs\", \"python\", \"ubuntu\")" } ], "columns": [ "product", "cycle", "releaseDate", "latest", "latestReleaseDate", "lts", "support", "eol", "extendedSupport", "eolStatus", "url" ], "type": "js", "modulePath": "endoflife/product.js", "sourceFile": "endoflife/product.js" }, { "site": "facebook", "name": "add-friend", "description": "Send a friend request on Facebook", "access": "write", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Facebook username or profile URL" } ], "columns": [ "status", "username" ], "type": "js", "modulePath": "facebook/add-friend.js", "sourceFile": "facebook/add-friend.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "events", "description": "Browse Facebook event categories", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of categories" } ], "columns": [ "index", "name" ], "type": "js", "modulePath": "facebook/events.js", "sourceFile": "facebook/events.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "feed", "description": "Get your Facebook news feed", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of posts" } ], "columns": [ "index", "author", "content", "likes", "comments", "shares" ], "type": "js", "modulePath": "facebook/feed.js", "sourceFile": "facebook/feed.js", "navigateBefore": false }, { "site": "facebook", "name": "friends", "description": "Get Facebook friend suggestions", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of friend suggestions" } ], "columns": [ "index", "name", "mutual" ], "type": "js", "modulePath": "facebook/friends.js", "sourceFile": "facebook/friends.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "groups", "description": "List your Facebook groups", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of groups" } ], "columns": [ "index", "name", "last_post", "url" ], "type": "js", "modulePath": "facebook/groups.js", "sourceFile": "facebook/groups.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "join-group", "description": "Join a Facebook group", "access": "write", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "group", "type": "str", "required": true, "positional": true, "help": "Group ID or URL path (e.g. '1876150192925481' or group name)" } ], "columns": [ "status", "group" ], "type": "js", "modulePath": "facebook/join-group.js", "sourceFile": "facebook/join-group.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "login", "description": "Open facebook login and wait until the browser session is authenticated", "access": "write", "domain": "facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "vanity", "profile_url" ], "type": "js", "modulePath": "facebook/auth.js", "sourceFile": "facebook/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "facebook", "name": "marketplace-inbox", "description": "List recent Facebook Marketplace buyer/seller conversations", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of conversations to return" } ], "columns": [ "index", "buyer", "listing", "snippet", "time", "unread" ], "type": "js", "modulePath": "facebook/marketplace-inbox.js", "sourceFile": "facebook/marketplace-inbox.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "marketplace-listings", "description": "List your Facebook Marketplace seller listings", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of listings to return" } ], "columns": [ "index", "title", "price", "status", "listed", "clicks", "actions" ], "type": "js", "modulePath": "facebook/marketplace-listings.js", "sourceFile": "facebook/marketplace-listings.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "memories", "description": "Get your Facebook memories (On This Day)", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of memories" } ], "columns": [ "index", "source", "content", "time" ], "type": "js", "modulePath": "facebook/memories.js", "sourceFile": "facebook/memories.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "notifications", "description": "Get recent Facebook notifications (含 unread / time / url / notif_id / notif_type 列)", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of notifications (1-100)" } ], "columns": [ "index", "unread", "text", "time", "url", "notif_id", "notif_type" ], "type": "js", "modulePath": "facebook/notifications.js", "sourceFile": "facebook/notifications.js", "navigateBefore": false }, { "site": "facebook", "name": "profile", "description": "Get Facebook user/page profile info", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Facebook username or page name" } ], "columns": [ "name", "username", "friends", "followers", "url" ], "type": "js", "modulePath": "facebook/profile.js", "sourceFile": "facebook/profile.js", "navigateBefore": "https://www.facebook.com" }, { "site": "facebook", "name": "search", "description": "Search Facebook for people, pages, or posts", "access": "read", "domain": "www.facebook.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "index", "title", "text", "url" ], "type": "js", "modulePath": "facebook/search.js", "sourceFile": "facebook/search.js", "navigateBefore": false }, { "site": "facebook", "name": "whoami", "description": "Show the current logged-in facebook account", "access": "read", "domain": "facebook.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "vanity", "profile_url" ], "type": "js", "modulePath": "facebook/auth.js", "sourceFile": "facebook/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "flathub", "name": "app", "description": "Full Flathub appstream metadata for an app id (license, categories, latest release)", "access": "read", "domain": "flathub.org", "strategy": "public", "browser": false, "args": [ { "name": "appId", "type": "str", "required": true, "positional": true, "help": "AppStream id (e.g. \"org.mozilla.firefox\", \"org.gnome.Calculator\")" } ], "columns": [ "appId", "name", "summary", "developer", "license", "isFreeLicense", "isEol", "categories", "keywords", "latestVersion", "latestReleaseDate", "homepage", "bugtracker", "donation", "url" ], "type": "js", "modulePath": "flathub/app.js", "sourceFile": "flathub/app.js" }, { "site": "flathub", "name": "search", "description": "Search Flathub apps by keyword", "access": "read", "domain": "flathub.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Max apps (1-100)" } ], "columns": [ "rank", "appId", "name", "summary", "developer", "license", "isFreeLicense", "mainCategories", "installsLastMonth", "updatedAt", "url" ], "type": "js", "modulePath": "flathub/search.js", "sourceFile": "flathub/search.js" }, { "site": "flomo", "name": "login", "description": "Open flomo login and wait until the browser session is authenticated", "access": "write", "domain": "flomoapp.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id" ], "type": "js", "modulePath": "flomo/auth.js", "sourceFile": "flomo/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "flomo", "name": "memos", "description": "List your Flomo memos", "access": "read", "domain": "flomoapp.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of memos to fetch (1-200)" }, { "name": "since", "type": "int", "required": false, "help": "Only memos updated after this Unix timestamp in seconds" }, { "name": "slug", "type": "str", "required": false, "help": "Pagination cursor from a previous memo page" } ], "columns": [ "id", "url", "content", "slug", "tags", "images", "created_at", "updated_at" ], "type": "js", "modulePath": "flomo/memos.js", "sourceFile": "flomo/memos.js", "navigateBefore": "https://v.flomoapp.com/" }, { "site": "flomo", "name": "whoami", "description": "Show the current logged-in flomo account", "access": "read", "domain": "flomoapp.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id" ], "type": "js", "modulePath": "flomo/auth.js", "sourceFile": "flomo/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "ask", "description": "Send a prompt to Gemini and return only the assistant response", "access": "write", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "model", "type": "string", "required": false, "help": "Gemini model to use (e.g. \"2.5-flash\"). Use \"opencli gemini models\" to list available values." }, { "name": "timeout", "type": "int", "default": 60, "required": false, "help": "Max seconds to wait (default: 60)" }, { "name": "new", "type": "str", "default": "false", "required": false, "help": "Start a new chat first (true/false, default: false)" }, { "name": "thinking", "type": "str", "default": null, "required": false, "help": "Thinking level: standard or extended (omitted = leave unchanged)" } ], "columns": [ "response" ], "defaultFormat": "plain", "type": "js", "modulePath": "gemini/ask.js", "sourceFile": "gemini/ask.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "deep-research", "description": "Start a Gemini Deep Research run and confirm it", "access": "write", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 180, "required": false, "help": "Max seconds for the overall command (default: 180; confirm-wait clamps internally to 6-20s)" }, { "name": "tool", "type": "str", "required": false, "help": "Override tool label (default: Deep Research)" }, { "name": "confirm", "type": "str", "required": false, "help": "Override confirm button label (default: Start research)" } ], "columns": [ "status", "url" ], "defaultFormat": "plain", "type": "js", "modulePath": "gemini/deep-research.js", "sourceFile": "gemini/deep-research.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "deep-research-result", "description": "Export Deep Research report URL from a Gemini conversation", "access": "read", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": false, "positional": true, "help": "Conversation title or URL (optional; defaults to latest conversation)" }, { "name": "match", "type": "str", "default": "contains", "required": false, "help": "Match mode", "choices": [ "contains", "exact" ] }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait for Docs export (default: 120)" } ], "columns": [ "response" ], "defaultFormat": "plain", "type": "js", "modulePath": "gemini/deep-research-result.js", "sourceFile": "gemini/deep-research-result.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "detail", "description": "Open a Gemini web conversation by id, URL, or sidebar title and read its turns", "access": "read", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Conversation id, /app/ URL, or sidebar title" } ], "columns": [ "Index", "Role", "Text" ], "type": "js", "modulePath": "gemini/detail.js", "sourceFile": "gemini/detail.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "history", "description": "List visible Gemini web conversation history from the sidebar", "access": "read", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max conversations to show" } ], "columns": [ "Index", "Id", "Title", "Url" ], "type": "js", "modulePath": "gemini/history.js", "sourceFile": "gemini/history.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "image", "description": "Generate images with Gemini web and save them locally", "access": "write", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Image prompt to send to Gemini" }, { "name": "rt", "type": "str", "default": "1:1", "required": false, "help": "Ratio shorthand for aspect ratio (1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3)" }, { "name": "st", "type": "str", "default": "", "required": false, "help": "Style shorthand, e.g. anime, icon, watercolor" }, { "name": "op", "type": "str", "default": "~/tmp/gemini-images", "required": false, "help": "Output directory shorthand" }, { "name": "sd", "type": "boolean", "default": false, "required": false, "help": "Skip download shorthand; only show Gemini page link" }, { "name": "timeout", "type": "int", "default": 240, "required": false, "help": "Max seconds for the overall command (default: 240)" } ], "columns": [ "status", "file", "link" ], "defaultFormat": "plain", "type": "js", "modulePath": "gemini/image.js", "sourceFile": "gemini/image.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "login", "description": "Open gemini login and wait until the browser session is authenticated", "access": "write", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "name" ], "type": "js", "modulePath": "gemini/auth.js", "sourceFile": "gemini/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "gemini", "name": "models", "description": "List available Gemini models from the web UI", "access": "read", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "model", "thinkingValues" ], "type": "js", "modulePath": "gemini/models.js", "sourceFile": "gemini/models.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "new", "description": "Start a new conversation in Gemini web chat", "access": "read", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Action" ], "type": "js", "modulePath": "gemini/new.js", "sourceFile": "gemini/new.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "read", "description": "Read the turns visible in the current Gemini web conversation", "access": "read", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Index", "Role", "Text" ], "type": "js", "modulePath": "gemini/read.js", "sourceFile": "gemini/read.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "status", "description": "Check Gemini web page availability and login state", "access": "read", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Login", "Url" ], "type": "js", "modulePath": "gemini/status.js", "sourceFile": "gemini/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "gemini", "name": "whoami", "description": "Show the current logged-in gemini account", "access": "read", "domain": "gemini.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "name" ], "type": "js", "modulePath": "gemini/auth.js", "sourceFile": "gemini/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "geogebra", "name": "add-circle", "description": "Create a circle by center+radius or center+point", "access": "write", "example": "opencli geogebra add-circle --center A --radius 3", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "center", "type": "str", "required": true, "help": "Center point label (e.g. A)" }, { "name": "radius", "type": "str", "required": false, "help": "Radius value (number) or a point label on the circle" }, { "name": "point", "type": "str", "required": false, "help": "Alternative: a point label on the circle (use instead of --radius for Circle(center,point))" } ], "columns": [ "label", "center", "radius" ], "type": "js", "modulePath": "geogebra/add-circle.js", "sourceFile": "geogebra/add-circle.js", "navigateBefore": false }, { "site": "geogebra", "name": "add-line", "description": "Create a line through two points or a segment between two points", "access": "write", "example": "opencli geogebra add-line --points A,B --type segment", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "points", "type": "str", "required": true, "help": "Two point labels separated by comma (e.g. \"A,B\")" }, { "name": "type", "type": "str", "default": "line", "required": false, "help": "Type: line, segment, or ray (default: line)", "choices": [ "line", "segment", "ray" ] } ], "columns": [ "label", "type", "points" ], "type": "js", "modulePath": "geogebra/add-line.js", "sourceFile": "geogebra/add-line.js", "navigateBefore": false }, { "site": "geogebra", "name": "add-point", "description": "Create a point with given label and coordinates", "access": "write", "example": "opencli geogebra add-point --name A --coords 1,2", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "name", "type": "str", "required": true, "help": "Point label (e.g. A, B, P1)" }, { "name": "coords", "type": "str", "required": true, "help": "Coordinates as x,y (e.g. \"1,2\")" } ], "columns": [ "name", "x", "y" ], "type": "js", "modulePath": "geogebra/add-point.js", "sourceFile": "geogebra/add-point.js", "navigateBefore": false }, { "site": "geogebra", "name": "add-polygon", "description": "Create a polygon from a list of point labels", "access": "write", "example": "opencli geogebra add-polygon --points A,B,C", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "points", "type": "str", "required": true, "help": "Comma-separated point labels (e.g. \"A,B,C\" or \"A,B,C,D\")" } ], "columns": [ "label", "vertices" ], "type": "js", "modulePath": "geogebra/add-polygon.js", "sourceFile": "geogebra/add-polygon.js", "navigateBefore": false }, { "site": "geogebra", "name": "eval", "description": "Execute one or more GeoGebra command strings (semicolon-separated)", "access": "write", "example": "opencli geogebra eval \"A=(0,0);B=(4,0);c=Circle(A,B);d=Circle(B,A);C=Intersect(c,d,1);Polygon(A,B,C)\"", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "command", "type": "str", "required": true, "positional": true, "help": "GeoGebra command string (use ; to chain multiple commands)" } ], "columns": [ "command", "result" ], "type": "js", "modulePath": "geogebra/eval.js", "sourceFile": "geogebra/eval.js", "navigateBefore": false }, { "site": "geogebra", "name": "hexagon", "description": "Draw a regular hexagon centered at the origin", "access": "write", "example": "opencli geogebra hexagon --size 3", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "size", "type": "str", "default": "2", "required": false, "help": "Radius of the hexagon (default: 2)" } ], "columns": [ "step", "result" ], "type": "js", "modulePath": "geogebra/hexagon.js", "sourceFile": "geogebra/hexagon.js", "navigateBefore": false }, { "site": "geogebra", "name": "info", "description": "Get detailed properties of a GeoGebra object", "access": "read", "example": "opencli geogebra info --name A", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "name", "type": "str", "required": true, "help": "Object label (e.g. A, c1, poly1)" } ], "columns": [ "property", "value" ], "type": "js", "modulePath": "geogebra/info.js", "sourceFile": "geogebra/info.js", "navigateBefore": false }, { "site": "geogebra", "name": "list", "description": "List all geometric objects on the GeoGebra canvas", "access": "read", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "type", "type": "str", "required": false, "help": "Filter by object type (e.g. \"point\", \"line\", \"circle\")" } ], "columns": [ "name", "type", "value", "visible" ], "type": "js", "modulePath": "geogebra/list.js", "sourceFile": "geogebra/list.js", "navigateBefore": false }, { "site": "geogebra", "name": "triangle", "description": "Draw an equilateral triangle from a horizontal base segment", "access": "write", "example": "opencli geogebra triangle --size 4", "domain": "www.geogebra.org", "strategy": "public", "browser": true, "args": [ { "name": "size", "type": "str", "default": "2", "required": false, "help": "Side length of the triangle (default: 2)" } ], "columns": [ "step", "result" ], "type": "js", "modulePath": "geogebra/triangle.js", "sourceFile": "geogebra/triangle.js", "navigateBefore": false }, { "site": "gitee", "name": "login", "description": "Open gitee login and wait until the browser session is authenticated", "access": "write", "domain": "gitee.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "username", "name" ], "type": "js", "modulePath": "gitee/auth.js", "sourceFile": "gitee/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "gitee", "name": "search", "description": "Search repositories on Gitee", "access": "read", "domain": "gitee.com", "strategy": "public", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results (max 50)" } ], "columns": [ "rank", "name", "language", "stars", "description", "url" ], "type": "js", "modulePath": "gitee/search.js", "sourceFile": "gitee/search.js" }, { "site": "gitee", "name": "trending", "description": "Recommended open-source projects on Gitee Explore", "access": "read", "domain": "gitee.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of projects (max 50)" } ], "columns": [ "name", "description", "stars", "url" ], "type": "js", "modulePath": "gitee/trending.js", "sourceFile": "gitee/trending.js" }, { "site": "gitee", "name": "user", "description": "Show a Gitee user profile panel", "access": "read", "domain": "gitee.com", "strategy": "public", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Gitee username" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "gitee/user.js", "sourceFile": "gitee/user.js" }, { "site": "gitee", "name": "whoami", "description": "Show the current logged-in gitee account", "access": "read", "domain": "gitee.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "username", "name" ], "type": "js", "modulePath": "gitee/auth.js", "sourceFile": "gitee/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "github", "name": "login", "description": "Open github login and wait until the browser session is authenticated", "access": "write", "domain": "github.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "id", "username", "name", "url" ], "type": "js", "modulePath": "github/auth.js", "sourceFile": "github/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "github", "name": "whoami", "description": "Show the current logged-in github account", "access": "read", "domain": "github.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "id", "username", "name", "url" ], "type": "js", "modulePath": "github/auth.js", "sourceFile": "github/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "github-trending", "name": "repos", "description": "GitHub Trending repositories (public, no login). Filter by --language and --since.", "access": "read", "domain": "github.com", "strategy": "public", "browser": false, "args": [ { "name": "since", "type": "string", "default": "daily", "required": false, "help": "Time range: daily / weekly / monthly" }, { "name": "language", "type": "string", "default": "", "required": false, "help": "Filter by programming language slug, e.g. python, rust, \"c++\"" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Number of repositories to return (max 25)" } ], "columns": [ "rank", "repo", "description", "language", "stars", "forks", "starsSince", "url" ], "type": "js", "modulePath": "github-trending/repos.js", "sourceFile": "github-trending/repos.js" }, { "site": "google", "name": "news", "description": "Get Google News headlines", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "keyword", "type": "str", "required": false, "positional": true, "help": "Search query (omit for top stories)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" }, { "name": "lang", "type": "str", "default": "en", "required": false, "help": "Language short code (e.g. en, zh)" }, { "name": "region", "type": "str", "default": "US", "required": false, "help": "Region code (e.g. US, CN)" } ], "columns": [ "title", "source", "date", "url" ], "type": "js", "modulePath": "google/news.js", "sourceFile": "google/news.js" }, { "site": "google", "name": "search", "description": "Search Google", "access": "read", "domain": "google.com", "strategy": "public", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results (1-100)" }, { "name": "lang", "type": "str", "default": "en", "required": false, "help": "Language short code (e.g. en, zh)" } ], "columns": [ "type", "title", "url", "snippet" ], "type": "js", "modulePath": "google/search.js", "sourceFile": "google/search.js" }, { "site": "google", "name": "suggest", "description": "Get Google search suggestions", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "lang", "type": "str", "default": "zh-CN", "required": false, "help": "Language code" } ], "columns": [ "suggestion" ], "type": "js", "modulePath": "google/suggest.js", "sourceFile": "google/suggest.js" }, { "site": "google", "name": "trends", "description": "Get Google Trends daily trending searches", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "region", "type": "str", "default": "US", "required": false, "help": "Region code (e.g. US, CN, JP)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "title", "traffic", "date" ], "type": "js", "modulePath": "google/trends.js", "sourceFile": "google/trends.js" }, { "site": "google-scholar", "name": "cite", "description": "Get citation for a Google Scholar paper", "access": "read", "domain": "scholar.google.com", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Paper title to search for" }, { "name": "style", "type": "str", "default": "bibtex", "required": false, "help": "Citation format", "choices": [ "bibtex", "endnote", "refman", "refworks" ] }, { "name": "index", "type": "int", "default": 1, "required": false, "help": "Which search result to cite (1-based)" } ], "columns": [ "title", "format", "citation" ], "type": "js", "modulePath": "google-scholar/cite.js", "sourceFile": "google-scholar/cite.js" }, { "site": "google-scholar", "name": "profile", "description": "View a Google Scholar author profile", "access": "read", "domain": "scholar.google.com", "strategy": "public", "browser": true, "args": [ { "name": "author", "type": "str", "required": true, "positional": true, "help": "Author name or Scholar user ID (e.g. JicYPdAAAAAJ)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max papers to show (max 20)" } ], "columns": [ "rank", "title", "cited", "year" ], "type": "js", "modulePath": "google-scholar/profile.js", "sourceFile": "google-scholar/profile.js" }, { "site": "google-scholar", "name": "search", "description": "Google Scholar 学术搜索", "access": "read", "domain": "scholar.google.com", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 20)" } ], "columns": [ "rank", "title", "authors", "source", "year", "cited", "url" ], "type": "js", "modulePath": "google-scholar/search.js", "sourceFile": "google-scholar/search.js" }, { "site": "goproxy", "name": "module", "description": "Latest version + VCS origin metadata for a Go module on proxy.golang.org", "access": "read", "domain": "proxy.golang.org", "strategy": "public", "browser": false, "args": [ { "name": "module", "type": "string", "required": true, "positional": true, "help": "Go module path (e.g. \"github.com/gin-gonic/gin\", \"golang.org/x/net\")" } ], "columns": [ "module", "version", "publishedAt", "vcs", "repository", "commit", "ref", "pkgGoDevUrl", "url" ], "type": "js", "modulePath": "goproxy/module.js", "sourceFile": "goproxy/module.js" }, { "site": "goproxy", "name": "versions", "description": "Published version tags for a Go module (newest first), optionally with publish times", "access": "read", "domain": "proxy.golang.org", "strategy": "public", "browser": false, "args": [ { "name": "module", "type": "string", "required": true, "positional": true, "help": "Go module path (e.g. \"github.com/gin-gonic/gin\")" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max rows to return (1-200)" }, { "name": "with-time", "type": "boolean", "default": false, "required": false, "help": "Fetch each version's publish time (one extra request per row)" } ], "columns": [ "rank", "module", "version", "publishedAt", "url" ], "type": "js", "modulePath": "goproxy/versions.js", "sourceFile": "goproxy/versions.js" }, { "site": "gov-law", "name": "recent", "description": "最新法律法规", "access": "read", "domain": "flk.npc.gov.cn", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 20)" } ], "columns": [ "rank", "title", "status", "publish_date", "type", "department" ], "type": "js", "modulePath": "gov-law/recent.js", "sourceFile": "gov-law/recent.js" }, { "site": "gov-law", "name": "search", "description": "国家法律法规数据库搜索", "access": "read", "domain": "flk.npc.gov.cn", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 20)" } ], "columns": [ "rank", "title", "status", "publish_date", "type", "department" ], "type": "js", "modulePath": "gov-law/search.js", "sourceFile": "gov-law/search.js" }, { "site": "gov-policy", "name": "recent", "description": "国务院最新政策文件", "access": "read", "domain": "www.gov.cn", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 20)" } ], "columns": [ "rank", "title", "date", "source", "url" ], "type": "js", "modulePath": "gov-policy/recent.js", "sourceFile": "gov-policy/recent.js" }, { "site": "gov-policy", "name": "search", "description": "中国政府网政策文件搜索", "access": "read", "domain": "sousuo.www.gov.cn", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 20)" } ], "columns": [ "rank", "title", "description", "date", "url" ], "type": "js", "modulePath": "gov-policy/search.js", "sourceFile": "gov-policy/search.js" }, { "site": "grok", "name": "ask", "description": "Send a message to Grok and get response", "access": "write", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "string", "required": true, "positional": true, "help": "Prompt to send to Grok" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait for response (default: 120)" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending (default: false)" } ], "columns": [ "response" ], "type": "js", "modulePath": "grok/ask.js", "sourceFile": "grok/ask.js", "navigateBefore": "https://grok.com", "siteSession": "persistent" }, { "site": "grok", "name": "delete", "description": "Delete a Grok conversation by ID. Grok takes effect immediately with no confirmation dialog — require --yes to actually delete.", "access": "write", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Conversation UUID or grok.com/c/ URL" }, { "name": "yes", "type": "boolean", "default": false, "required": false, "help": "Actually delete (default is a dry-run preview)" } ], "columns": [ "status", "id" ], "type": "js", "modulePath": "grok/delete.js", "sourceFile": "grok/delete.js", "navigateBefore": "https://grok.com", "siteSession": "persistent" }, { "site": "grok", "name": "detail", "description": "Open a Grok conversation by ID and read its messages", "access": "read", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Session ID (UUID) or full https://grok.com/c/ URL" }, { "name": "markdown", "type": "boolean", "default": false, "required": false, "help": "Emit assistant replies as markdown" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "grok/detail.js", "sourceFile": "grok/detail.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "grok", "name": "export", "description": "Export all visible Grok conversation history metadata", "access": "read", "example": "opencli grok export -f yaml", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 0, "required": false, "help": "Max conversations to export; 0 means all loaded history" }, { "name": "maxScrolls", "type": "int", "default": 80, "required": false, "help": "Max history-list scroll rounds when limit is 0 (max 500)" } ], "columns": [ "index", "id", "title", "date", "url" ], "type": "js", "modulePath": "grok/export.js", "sourceFile": "grok/export.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "grok", "name": "export-all", "description": "Export Grok conversation history and each conversation transcript", "access": "read", "example": "opencli grok export-all --limit 5 -f json", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 0, "required": false, "help": "Max conversations to export; 0 means all loaded history" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Skip this many conversations before exporting" }, { "name": "manifestPath", "type": "string", "default": "", "required": false, "help": "Optional grok/export JSON manifest path; skips history dialog and visits listed /c pages directly" }, { "name": "maxScrolls", "type": "int", "default": 80, "required": false, "help": "Max history-list scroll rounds when limit is 0 (max 500)" }, { "name": "pageScrolls", "type": "int", "default": 30, "required": false, "help": "Max per-conversation scroll-to-bottom rounds (max 200)" }, { "name": "pageTimeoutMs", "type": "int", "default": 30000, "required": false, "help": "Max wait for each conversation page to show messages" }, { "name": "delayMinMs", "type": "int", "default": 0, "required": false, "help": "Minimum polite delay after a conversation page loads" }, { "name": "delayMaxMs", "type": "int", "default": 5000, "required": false, "help": "Maximum polite delay after a conversation page loads" } ], "columns": [ "index", "id", "title", "date", "url", "status", "messageCount", "error", "messagesJson" ], "type": "js", "modulePath": "grok/export-all.js", "sourceFile": "grok/export-all.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "grok", "name": "history", "description": "List recent Grok conversations from the sidebar (requires login)", "access": "read", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max conversations to show (default 20, max 100)" } ], "columns": [ "Index", "Title", "Url" ], "type": "js", "modulePath": "grok/history.js", "sourceFile": "grok/history.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "grok", "name": "image", "description": "Generate images on grok.com and return image URLs", "access": "write", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "string", "required": true, "positional": true, "help": "Image generation prompt" }, { "name": "timeout", "type": "int", "default": 240, "required": false, "help": "Max seconds to wait for the image (default: 240)" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending (default: false)" }, { "name": "count", "type": "int", "default": 1, "required": false, "help": "Minimum images to wait for before returning (default: 1)" }, { "name": "out", "type": "string", "default": "", "required": false, "help": "Directory to save downloaded images (uses browser session to bypass auth)" } ], "columns": [ "url", "width", "height", "path" ], "type": "js", "modulePath": "grok/image.js", "sourceFile": "grok/image.js", "navigateBefore": "https://grok.com", "siteSession": "persistent" }, { "site": "grok", "name": "login", "description": "Open grok login and wait until the browser session is authenticated", "access": "write", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "grok/auth.js", "sourceFile": "grok/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "grok", "name": "new", "description": "Start a new conversation in Grok", "access": "write", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "grok/new.js", "sourceFile": "grok/new.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "grok", "name": "pin", "description": "Pin a Grok conversation by ID", "access": "write", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Conversation UUID or grok.com/c/ URL" } ], "columns": [ "status", "id" ], "type": "js", "modulePath": "grok/pin.js", "sourceFile": "grok/pin.js", "navigateBefore": "https://grok.com", "siteSession": "persistent" }, { "site": "grok", "name": "read", "description": "Read messages in the current Grok conversation", "access": "read", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "markdown", "type": "boolean", "default": false, "required": false, "help": "Emit assistant replies as markdown" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "grok/read.js", "sourceFile": "grok/read.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "grok", "name": "send", "description": "Fire-and-forget: send a prompt to Grok without waiting for the reply", "access": "write", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send to Grok" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" } ], "columns": [ "Status", "Prompt" ], "type": "js", "modulePath": "grok/send.js", "sourceFile": "grok/send.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "grok", "name": "status", "description": "Check Grok page availability, login state, current session and model", "access": "read", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Login", "Model", "SessionId", "Url" ], "type": "js", "modulePath": "grok/status.js", "sourceFile": "grok/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "grok", "name": "unpin", "description": "Unpin a Grok conversation by ID", "access": "write", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Conversation UUID or grok.com/c/ URL" } ], "columns": [ "status", "id" ], "type": "js", "modulePath": "grok/pin.js", "sourceFile": "grok/pin.js", "navigateBefore": "https://grok.com", "siteSession": "persistent" }, { "site": "grok", "name": "whoami", "description": "Show the current logged-in grok account", "access": "read", "domain": "grok.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "grok/auth.js", "sourceFile": "grok/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "guazi", "name": "browse", "aliases": [ "list" ], "description": "瓜子二手车在售车源列表(按城市,含售价/首付/里程/年份)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "city", "type": "str", "required": false, "positional": true, "help": "城市名(北京/上海/...)或瓜子城市码(bj/sh/...)。默认 bj 北京" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的车源数量(最多 40,单页 SSR 上限)" } ], "columns": [ "rank", "clue_id", "title", "price", "down_payment", "mileage", "year", "city", "url" ], "type": "js", "modulePath": "guazi/browse.js", "sourceFile": "guazi/browse.js" }, { "site": "guazi", "name": "car", "aliases": [ "detail" ], "description": "瓜子二手车车源详情(售价 / 上牌 / 里程 / 过户 / 配置 / 车况)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "clue_id", "type": "str", "required": true, "positional": true, "help": "车源 ID(来自 browse 的 clue_id,或 /car-detail/c.html URL)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "guazi/car.js", "sourceFile": "guazi/car.js" }, { "site": "hackernews", "name": "ask", "description": "Hacker News Ask HN posts", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "url" ], "type": "js", "modulePath": "hackernews/ask.js", "sourceFile": "hackernews/ask.js" }, { "site": "hackernews", "name": "best", "description": "Hacker News best stories", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "url" ], "type": "js", "modulePath": "hackernews/best.js", "sourceFile": "hackernews/best.js" }, { "site": "hackernews", "name": "jobs", "description": "Hacker News job postings", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of job postings" } ], "columns": [ "rank", "id", "title", "author", "url" ], "type": "js", "modulePath": "hackernews/jobs.js", "sourceFile": "hackernews/jobs.js" }, { "site": "hackernews", "name": "new", "description": "Hacker News newest stories", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "url" ], "type": "js", "modulePath": "hackernews/new.js", "sourceFile": "hackernews/new.js" }, { "site": "hackernews", "name": "read", "description": "Read a Hacker News story and its comment tree", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "HN item ID (e.g. 39847301)" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Max top-level comments" }, { "name": "depth", "type": "int", "default": 2, "required": false, "help": "Max reply depth (1=no replies, 2=one level of replies, etc.)" }, { "name": "replies", "type": "int", "default": 5, "required": false, "help": "Max replies shown per comment at each level" }, { "name": "max-length", "type": "int", "default": 2000, "required": false, "help": "Max characters per comment body (min 100)" } ], "columns": [ "type", "author", "score", "text" ], "type": "js", "modulePath": "hackernews/read.js", "sourceFile": "hackernews/read.js" }, { "site": "hackernews", "name": "search", "description": "Search Hacker News stories", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" }, { "name": "sort", "type": "str", "default": "relevance", "required": false, "help": "Sort by relevance or date", "choices": [ "relevance", "date" ] } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "url" ], "type": "js", "modulePath": "hackernews/search.js", "sourceFile": "hackernews/search.js" }, { "site": "hackernews", "name": "show", "description": "Hacker News Show HN posts", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "url" ], "type": "js", "modulePath": "hackernews/show.js", "sourceFile": "hackernews/show.js" }, { "site": "hackernews", "name": "top", "description": "Hacker News top stories", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "url" ], "type": "js", "modulePath": "hackernews/top.js", "sourceFile": "hackernews/top.js" }, { "site": "hackernews", "name": "user", "description": "Hacker News user profile", "access": "read", "domain": "news.ycombinator.com", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "HN username" } ], "columns": [ "username", "karma", "created", "about" ], "type": "js", "modulePath": "hackernews/user.js", "sourceFile": "hackernews/user.js" }, { "site": "hf", "name": "datasets", "description": "Top Hugging Face datasets (downloads / likes / trending / freshness).", "access": "read", "domain": "huggingface.co", "strategy": "public", "browser": false, "args": [ { "name": "sort", "type": "string", "default": "downloads", "required": false, "help": "Sort key: downloads, likes, trending, created_at, last_modified" }, { "name": "search", "type": "string", "required": false, "help": "Optional name/owner substring filter." }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max datasets (max 100; one API page)." } ], "columns": [ "rank", "id", "author", "downloads", "likes", "tags", "lastModified", "url" ], "type": "js", "modulePath": "hf/datasets.js", "sourceFile": "hf/datasets.js" }, { "site": "hf", "name": "login", "description": "Open hf login and wait until the browser session is authenticated", "access": "write", "domain": "huggingface.co", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "username", "fullname", "type" ], "type": "js", "modulePath": "hf/auth.js", "sourceFile": "hf/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "hf", "name": "models", "description": "Top Hugging Face models (downloads / likes / trending / freshness).", "access": "read", "domain": "huggingface.co", "strategy": "public", "browser": false, "args": [ { "name": "sort", "type": "string", "default": "downloads", "required": false, "help": "Sort key: downloads, likes, trending, created_at, last_modified" }, { "name": "search", "type": "string", "required": false, "help": "Optional name/owner substring filter (e.g. \"llama\", \"mistralai/\")" }, { "name": "pipeline", "type": "string", "required": false, "help": "Filter by pipeline tag (e.g. text-generation, image-classification)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max models (max 100; one API page)." } ], "columns": [ "rank", "id", "author", "pipelineTag", "downloads", "likes", "tags", "lastModified", "url" ], "type": "js", "modulePath": "hf/models.js", "sourceFile": "hf/models.js" }, { "site": "hf", "name": "paper", "description": "Hugging Face paper detail by arXiv id (full title / summary / authors / AI keywords)", "access": "read", "domain": "huggingface.co", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "arXiv id (e.g. \"1706.03762\") — same value HF uses to mirror the paper" } ], "columns": [ "id", "title", "authors", "publishedAt", "upvotes", "aiKeywords", "summary", "aiSummary", "url" ], "type": "js", "modulePath": "hf/paper.js", "sourceFile": "hf/paper.js" }, { "site": "hf", "name": "spaces", "description": "Top Hugging Face Spaces (likes / created_at / last_modified).", "access": "read", "domain": "huggingface.co", "strategy": "public", "browser": false, "args": [ { "name": "sort", "type": "string", "default": "likes", "required": false, "help": "Sort key: likes, created_at, last_modified" }, { "name": "search", "type": "string", "required": false, "help": "Optional name/owner substring filter (e.g. \"stability\", \"openai/\")" }, { "name": "sdk", "type": "string", "required": false, "help": "Filter by Space SDK: gradio / streamlit / docker / static" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max spaces (max 100; one API page)." } ], "columns": [ "rank", "id", "author", "sdk", "likes", "tags", "lastModified", "url" ], "type": "js", "modulePath": "hf/spaces.js", "sourceFile": "hf/spaces.js" }, { "site": "hf", "name": "top", "description": "Top upvoted Hugging Face papers", "access": "read", "domain": "huggingface.co", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of papers" }, { "name": "all", "type": "bool", "default": false, "required": false, "help": "Return all papers (ignore limit)" }, { "name": "date", "type": "str", "required": false, "help": "Date (YYYY-MM-DD), defaults to most recent" }, { "name": "period", "type": "str", "default": "daily", "required": false, "help": "Time period: daily, weekly, or monthly", "choices": [ "daily", "weekly", "monthly" ] } ], "columns": [ "rank", "id", "title", "upvotes", "authors" ], "type": "js", "modulePath": "hf/top.js", "sourceFile": "hf/top.js" }, { "site": "hf", "name": "whoami", "description": "Show the current logged-in hf account", "access": "read", "domain": "huggingface.co", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "username", "fullname", "type" ], "type": "js", "modulePath": "hf/auth.js", "sourceFile": "hf/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "hltv", "name": "event-matches", "description": "Read visible HLTV stats match rows for a specific event", "access": "read", "example": "opencli hltv event-matches 8301 --limit 10 -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "event", "type": "string", "required": true, "positional": true, "help": "Event id, /events/:id URL, or stats URL with event=" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Rows to return from the visible stats matches table (max 100)" } ], "columns": [ "rank", "date", "eventId", "team", "opponent", "score", "map", "matchStatsId", "matchStatsUrl", "details" ], "type": "js", "modulePath": "hltv/event-matches.js", "sourceFile": "hltv/event-matches.js", "navigateBefore": false }, { "site": "hltv", "name": "match-map", "description": "Read a single HLTV mapstats page and return all player rows for that map", "access": "read", "example": "opencli hltv match-map \"https://www.hltv.org/stats/matches/mapstatsid/231594/falcons-vs-natus-vincere\" -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "match", "type": "string", "required": true, "positional": true, "help": "Full HLTV /stats/matches/mapstatsid/:id/:slug URL from player-matches" } ], "columns": [ "matchStatsId", "playerId", "playerName", "team", "kills", "deaths", "adr", "kastPct", "rating", "opKd", "details", "url" ], "type": "js", "modulePath": "hltv/match-map.js", "sourceFile": "hltv/match-map.js", "navigateBefore": false }, { "site": "hltv", "name": "match-series", "description": "Expand an HLTV match or stats series into summary, map, and player rows", "access": "read", "example": "opencli hltv match-series https://www.hltv.org/stats/matches/126993/spirit-vs-falcons -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "match", "type": "string", "required": true, "positional": true, "help": "HLTV match, stats series, or mapstats URL" } ], "columns": [ "rowType", "date", "event", "map", "team", "opponent", "score", "matchStatsId", "playerId", "playerName", "rating", "details" ], "type": "js", "modulePath": "hltv/match-series.js", "sourceFile": "hltv/match-series.js", "navigateBefore": false }, { "site": "hltv", "name": "player-duel", "description": "Compare two HLTV players on shared maps, including direct kill matrix when available", "access": "read", "example": "opencli hltv player-duel 19230/m0nesy 3741/niko --match https://www.hltv.org/stats/matches/mapstatsid/231594/falcons-vs-natus-vincere -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "playerA", "type": "string", "required": true, "positional": true, "help": "First player ref: 19230/m0nesy, player URL, or stats player URL" }, { "name": "playerB", "type": "string", "required": true, "positional": true, "help": "Second player ref: 3741/niko, player URL, or stats player URL" }, { "name": "match", "type": "string", "default": "", "required": false, "help": "Optional HLTV match, stats series, or mapstats URL" }, { "name": "mode", "type": "string", "default": "lastEncounter", "required": false, "help": "lastEncounter / intersection / history. Ignored when --match is provided" }, { "name": "period", "type": "string", "default": "all", "required": false, "help": "all / lastMonth / last3Months / last6Months / last12Months / YYYY / YYYY-MM-DD:YYYY-MM-DD" }, { "name": "eventType", "type": "string", "default": "all", "required": false, "help": "all / majors / bigEvents / mvpEvents / lan / online" }, { "name": "event", "type": "string", "default": "all", "required": false, "help": "all / event id / /events/:id URL / stats URL with event=" }, { "name": "ranking", "type": "string", "default": "all", "required": false, "help": "all / top5 / top10 / top20 / top30 / top50" }, { "name": "map", "type": "string", "default": "all", "required": false, "help": "all / ancient / anubis / dust2 / inferno / mirage / nuke / overpass / cache / cobblestone / season / train / tuscan / vertigo" }, { "name": "version", "type": "string", "default": "both", "required": false, "help": "both / cs2 / csgo" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset for broad mode; must be a multiple of 100" }, { "name": "recentMaps", "type": "int", "default": 100, "required": false, "help": "lastEncounter mode candidate maps from playerA to scan (max 500)" }, { "name": "scanPages", "type": "int", "default": 1, "required": false, "help": "Broad mode pages to scan, 100 rows each (max 5)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum shared maps to compare (max 100)" } ], "columns": [ "rowType", "scope", "date", "event", "map", "matchStatsId", "playerAId", "playerBId", "ratingDiff", "killDiff", "directKillDiff", "details" ], "type": "js", "modulePath": "hltv/player-duel.js", "sourceFile": "hltv/player-duel.js", "navigateBefore": false }, { "site": "hltv", "name": "player-form", "description": "Aggregate recent HLTV player maps into form summaries grouped by summary, map, and opponent", "access": "read", "example": "opencli hltv player-form --player 19230/m0nesy --limit 30 -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "player", "type": "string", "default": "3741/niko", "required": false, "help": "Player ref: 3741/niko, player URL, or stats matches URL" }, { "name": "period", "type": "string", "default": "all", "required": false, "help": "all / lastMonth / last3Months / last6Months / last12Months / YYYY / YYYY-MM-DD:YYYY-MM-DD" }, { "name": "eventType", "type": "string", "default": "all", "required": false, "help": "all / majors / bigEvents / mvpEvents / lan / online" }, { "name": "ranking", "type": "string", "default": "all", "required": false, "help": "all / top5 / top10 / top20 / top30 / top50" }, { "name": "map", "type": "string", "default": "all", "required": false, "help": "all / ancient / anubis / dust2 / inferno / mirage / nuke / overpass / cache / cobblestone / season / train / tuscan / vertigo" }, { "name": "version", "type": "string", "default": "both", "required": false, "help": "both / cs2 / csgo" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset; must be a multiple of 100" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Recent maps to aggregate from the current page (max 100)" } ], "columns": [ "category", "key", "playerId", "nickname", "maps", "avgRating", "kdRatio", "killsPerMap", "plusMinusTotal", "winMaps", "lossMaps", "details" ], "type": "js", "modulePath": "hltv/player-form.js", "sourceFile": "hltv/player-form.js", "navigateBefore": false }, { "site": "hltv", "name": "player-map-pool", "description": "Aggregate a player matches page into per-map performance buckets", "access": "read", "example": "opencli hltv player-map-pool --player 3741/niko --limit 50 -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "player", "type": "string", "default": "3741/niko", "required": false, "help": "Player ref: 3741/niko, player URL, or stats player URL" }, { "name": "period", "type": "string", "default": "all", "required": false, "help": "all / lastMonth / last3Months / last6Months / last12Months / YYYY / YYYY-MM-DD:YYYY-MM-DD" }, { "name": "eventType", "type": "string", "default": "all", "required": false, "help": "all / majors / bigEvents / mvpEvents / lan / online" }, { "name": "event", "type": "string", "default": "all", "required": false, "help": "all / event id / /events/:id URL / stats URL with event=" }, { "name": "ranking", "type": "string", "default": "all", "required": false, "help": "all / top5 / top10 / top20 / top30 / top50" }, { "name": "map", "type": "string", "default": "all", "required": false, "help": "all / ancient / anubis / dust2 / inferno / mirage / nuke / overpass / cache / cobblestone / season / train / tuscan / vertigo" }, { "name": "version", "type": "string", "default": "both", "required": false, "help": "both / cs2 / csgo" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset; must be a multiple of 100" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Recent maps to aggregate from the current page (max 100)" } ], "columns": [ "category", "key", "playerId", "nickname", "maps", "avgRating", "kdRatio", "killsPerMap", "plusMinusTotal", "winMaps", "lossMaps", "details" ], "type": "js", "modulePath": "hltv/player-map-pool.js", "sourceFile": "hltv/player-map-pool.js", "navigateBefore": false }, { "site": "hltv", "name": "player-matches", "description": "Read HLTV player match history from the stats Matches tab", "access": "read", "example": "opencli hltv player-matches --player 3741/niko --limit 10 -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "player", "type": "string", "default": "3741/niko", "required": false, "help": "Player ref: 3741/niko, player URL, or stats matches URL" }, { "name": "period", "type": "string", "default": "all", "required": false, "help": "all / lastMonth / last3Months / last6Months / last12Months / YYYY / YYYY-MM-DD:YYYY-MM-DD" }, { "name": "eventType", "type": "string", "default": "all", "required": false, "help": "all / majors / bigEvents / mvpEvents / lan / online" }, { "name": "ranking", "type": "string", "default": "all", "required": false, "help": "all / top5 / top10 / top20 / top30 / top50" }, { "name": "map", "type": "string", "default": "all", "required": false, "help": "all / ancient / anubis / dust2 / inferno / mirage / nuke / overpass / cache / cobblestone / season / train / tuscan / vertigo" }, { "name": "version", "type": "string", "default": "both", "required": false, "help": "both / cs2 / csgo" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset; must be a multiple of 100" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Rows to return from the current page (max 100)" } ], "columns": [ "rank", "date", "playerTeam", "opponent", "map", "kills", "deaths", "plusMinus", "rating", "playerId", "matchStatsId", "details" ], "type": "js", "modulePath": "hltv/player-matches.js", "sourceFile": "hltv/player-matches.js", "navigateBefore": false }, { "site": "hltv", "name": "player-summary", "description": "Read an HLTV player summary page", "access": "read", "example": "opencli hltv player-summary --player 3741/niko -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "player", "type": "string", "default": "3741/niko", "required": false, "help": "Player ref: 3741/niko or https://www.hltv.org/player/3741/niko" } ], "columns": [ "playerId", "slug", "nickname", "fullName", "age", "teamName", "prizeMoneyUsd", "maps", "rating", "roles", "completeStatsUrl", "url" ], "type": "js", "modulePath": "hltv/player-summary.js", "sourceFile": "hltv/player-summary.js", "navigateBefore": false }, { "site": "hltv", "name": "player-teammate-impact", "description": "Compare playerA maps with and without playerB present in the scanned sample", "access": "read", "example": "opencli hltv player-teammate-impact 3741/niko 19230/m0nesy --limit 50 -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "playerA", "type": "string", "required": true, "positional": true, "help": "Primary player ref" }, { "name": "playerB", "type": "string", "required": true, "positional": true, "help": "Teammate player ref" }, { "name": "period", "type": "string", "default": "all", "required": false, "help": "all / lastMonth / last3Months / last6Months / last12Months / YYYY / YYYY-MM-DD:YYYY-MM-DD" }, { "name": "eventType", "type": "string", "default": "all", "required": false, "help": "all / majors / bigEvents / mvpEvents / lan / online" }, { "name": "event", "type": "string", "default": "all", "required": false, "help": "all / event id / /events/:id URL / stats URL with event=" }, { "name": "ranking", "type": "string", "default": "all", "required": false, "help": "all / top5 / top10 / top20 / top30 / top50" }, { "name": "map", "type": "string", "default": "all", "required": false, "help": "all / ancient / anubis / dust2 / inferno / mirage / nuke / overpass / cache / cobblestone / season / train / tuscan / vertigo" }, { "name": "version", "type": "string", "default": "both", "required": false, "help": "both / cs2 / csgo" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset; must be a multiple of 100" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Rows to scan for each player from the current page (max 100)" } ], "columns": [ "category", "key", "playerId", "maps", "avgRating", "kdRatio", "killsPerMap", "plusMinusTotal", "winMaps", "lossMaps", "details" ], "type": "js", "modulePath": "hltv/player-teammate-impact.js", "sourceFile": "hltv/player-teammate-impact.js", "navigateBefore": false }, { "site": "hltv", "name": "player-vs-team", "description": "Filter a player matches page to maps played against a specific HLTV team", "access": "read", "example": "opencli hltv player-vs-team 7020/spirit --player 3741/niko --limit 20 -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "player", "type": "string", "default": "3741/niko", "required": false, "help": "Player ref: 3741/niko, player URL, or stats player URL" }, { "name": "team", "type": "string", "required": true, "positional": true, "help": "Team ref: 7020/spirit, team URL, or stats team URL" }, { "name": "period", "type": "string", "default": "all", "required": false, "help": "all / lastMonth / last3Months / last6Months / last12Months / YYYY / YYYY-MM-DD:YYYY-MM-DD" }, { "name": "eventType", "type": "string", "default": "all", "required": false, "help": "all / majors / bigEvents / mvpEvents / lan / online" }, { "name": "event", "type": "string", "default": "all", "required": false, "help": "all / event id / /events/:id URL / stats URL with event=" }, { "name": "ranking", "type": "string", "default": "all", "required": false, "help": "all / top5 / top10 / top20 / top30 / top50" }, { "name": "map", "type": "string", "default": "all", "required": false, "help": "all / ancient / anubis / dust2 / inferno / mirage / nuke / overpass / cache / cobblestone / season / train / tuscan / vertigo" }, { "name": "version", "type": "string", "default": "both", "required": false, "help": "both / cs2 / csgo" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset; must be a multiple of 100" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Rows to scan from the current page (max 100)" } ], "columns": [ "rowType", "rank", "date", "playerId", "opponent", "map", "kills", "deaths", "rating", "result", "matchStatsId", "details" ], "type": "js", "modulePath": "hltv/player-vs-team.js", "sourceFile": "hltv/player-vs-team.js", "navigateBefore": false }, { "site": "hltv", "name": "search", "description": "Search HLTV players, teams, events, and articles", "access": "read", "example": "opencli hltv search niko --limit 10 -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "query", "type": "string", "required": true, "positional": true, "help": "Search keyword, e.g. niko" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Maximum rows per result type (max 50)" } ], "columns": [ "rank", "type", "id", "name", "title", "date", "author", "url" ], "type": "js", "modulePath": "hltv/search.js", "sourceFile": "hltv/search.js", "navigateBefore": false }, { "site": "hltv", "name": "team-map-pool", "description": "Read the visible HLTV team map-pool page with win rate, pick rate, and ban rate", "access": "read", "example": "opencli hltv team-map-pool 11283/falcons -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "team", "type": "string", "required": true, "positional": true, "help": "Team ref: 11283/falcons, team URL, or stats team URL" } ], "columns": [ "category", "key", "teamId", "team", "maps", "winMaps", "lossMaps", "winRatePct", "avgRoundDiff", "details" ], "type": "js", "modulePath": "hltv/team-map-pool.js", "sourceFile": "hltv/team-map-pool.js", "navigateBefore": false }, { "site": "hltv", "name": "team-matches", "description": "Read recent HLTV team map results from the stats team matches page", "access": "read", "example": "opencli hltv team-matches 6667/falcons --limit 10 -f json", "domain": "www.hltv.org", "strategy": "ui", "browser": true, "args": [ { "name": "team", "type": "string", "required": true, "positional": true, "help": "Team ref: 6667/falcons, team URL, or stats team URL" }, { "name": "period", "type": "string", "default": "all", "required": false, "help": "all / lastMonth / last3Months / last6Months / last12Months / YYYY / YYYY-MM-DD:YYYY-MM-DD" }, { "name": "eventType", "type": "string", "default": "all", "required": false, "help": "all / majors / bigEvents / mvpEvents / lan / online" }, { "name": "event", "type": "string", "default": "all", "required": false, "help": "all / event id / /events/:id URL / stats URL with event=" }, { "name": "ranking", "type": "string", "default": "all", "required": false, "help": "all / top5 / top10 / top20 / top30 / top50" }, { "name": "map", "type": "string", "default": "all", "required": false, "help": "all / ancient / anubis / dust2 / inferno / mirage / nuke / overpass / cache / cobblestone / season / train / tuscan / vertigo" }, { "name": "version", "type": "string", "default": "both", "required": false, "help": "both / cs2 / csgo" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset; must be a multiple of 100" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Rows to return from the current page (max 100)" } ], "columns": [ "rank", "date", "team", "opponent", "map", "result", "teamId", "matchStatsId", "details" ], "type": "js", "modulePath": "hltv/team-matches.js", "sourceFile": "hltv/team-matches.js", "navigateBefore": false }, { "site": "homebrew", "name": "cask", "description": "Fetch a Homebrew cask's metadata (version, homepage, deprecation, download URL)", "access": "read", "domain": "formulae.brew.sh", "strategy": "public", "browser": false, "args": [ { "name": "token", "type": "str", "required": true, "positional": true, "help": "Cask token (e.g. \"firefox\", \"visual-studio-code\", \"google-chrome\")" } ], "columns": [ "cask", "tap", "name", "version", "description", "homepage", "deprecated", "disabled", "download", "url" ], "type": "js", "modulePath": "homebrew/cask.js", "sourceFile": "homebrew/cask.js" }, { "site": "homebrew", "name": "formula", "description": "Fetch a Homebrew formula's metadata (version, license, deps, deprecation, source)", "access": "read", "domain": "formulae.brew.sh", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Formula name (e.g. \"wget\", \"gcc@13\", \"imagemagick\")" } ], "columns": [ "formula", "tap", "version", "license", "description", "homepage", "dependencies", "deprecated", "disabled", "source", "url" ], "type": "js", "modulePath": "homebrew/formula.js", "sourceFile": "homebrew/formula.js" }, { "site": "homebrew", "name": "popular", "description": "List most-installed Homebrew formulae or casks (Homebrew's analytics ranking)", "access": "read", "domain": "formulae.brew.sh", "strategy": "public", "browser": false, "args": [ { "name": "type", "type": "str", "default": "formula", "required": false, "help": "Package type (formula / cask)" }, { "name": "window", "type": "str", "default": "30d", "required": false, "help": "Time window (30d / 90d / 365d)" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max rows (1-500)" } ], "columns": [ "rank", "token", "type", "installs", "percent", "window", "url" ], "type": "js", "modulePath": "homebrew/popular.js", "sourceFile": "homebrew/popular.js" }, { "site": "huodongxing", "name": "events", "description": "活动行活动搜索(按标签、城市、日期、线上/线下、名称过滤)", "access": "read", "domain": "www.huodongxing.com", "strategy": "public", "browser": true, "args": [ { "name": "tag", "type": "string", "default": "", "required": false, "help": "活动标签,例如 AI" }, { "name": "city", "type": "string", "default": "全部", "required": false, "help": "城市名,例如 北京 / 上海 / 全部" }, { "name": "date", "type": "string", "default": "", "required": false, "help": "开始日期,格式 YYYY-MM-DD" }, { "name": "dateTo", "type": "string", "default": "", "required": false, "help": "结束日期,格式 YYYY-MM-DD" }, { "name": "eventType", "type": "int", "required": false, "help": "活动类型:1 线下,2 线上" }, { "name": "qs", "type": "string", "default": "", "required": false, "help": "按活动名称关键词过滤" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回条数(1-50)" } ], "columns": [ "rank", "id", "title", "time", "eventType", "city", "location", "organizer", "url" ], "type": "js", "modulePath": "huodongxing/events.js", "sourceFile": "huodongxing/events.js" }, { "site": "hupu", "name": "detail", "description": "获取虎扑帖子详情 (使用Next.js JSON数据)", "access": "read", "domain": "bbs.hupu.com", "strategy": "public", "browser": true, "args": [ { "name": "tid", "type": "str", "required": true, "positional": true, "help": "帖子ID(9位数字)" }, { "name": "replies", "type": "boolean", "default": false, "required": false, "help": "是否包含热门回复" } ], "columns": [ "title", "author", "content", "replies", "lights", "url" ], "type": "js", "modulePath": "hupu/detail.js", "sourceFile": "hupu/detail.js" }, { "site": "hupu", "name": "hot", "description": "虎扑首页热门帖子(含 lights / replies / forum / is_hot 列)", "access": "read", "domain": "bbs.hupu.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of threads (1-100)" } ], "columns": [ "rank", "tid", "title", "lights", "replies", "forum", "is_hot", "url" ], "type": "js", "modulePath": "hupu/hot.js", "sourceFile": "hupu/hot.js" }, { "site": "hupu", "name": "like", "description": "点赞虎扑回复 (需要登录)", "access": "write", "domain": "bbs.hupu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "tid", "type": "str", "required": true, "positional": true, "help": "帖子ID(9位数字)" }, { "name": "pid", "type": "str", "required": true, "positional": true, "help": "回复ID" }, { "name": "fid", "type": "str", "required": true, "help": "板块ID(如278汽车区)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "hupu/like.js", "sourceFile": "hupu/like.js", "navigateBefore": false }, { "site": "hupu", "name": "login", "description": "Open hupu login and wait until the browser session is authenticated", "access": "write", "domain": "hupu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "username" ], "type": "js", "modulePath": "hupu/auth.js", "sourceFile": "hupu/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "hupu", "name": "mentions", "aliases": [ "mention" ], "description": "查看虎扑提到我的回复 (需要登录)", "access": "read", "domain": "my.hupu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "最多返回多少条消息" }, { "name": "max_pages", "type": "int", "default": 3, "required": false, "help": "最多抓取多少页" }, { "name": "page_str", "type": "str", "required": false, "help": "分页游标;不传时从第一页开始" } ], "columns": [ "time", "username", "thread_title", "tid", "pid", "post_content", "quote_content", "url", "reply_url" ], "type": "js", "modulePath": "hupu/mentions.js", "sourceFile": "hupu/mentions.js", "navigateBefore": false }, { "site": "hupu", "name": "reply", "description": "回复虎扑帖子 (需要登录)", "access": "write", "domain": "bbs.hupu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "tid", "type": "str", "required": true, "positional": true, "help": "帖子ID(9位数字)" }, { "name": "topic_id", "type": "str", "required": true, "help": "板块ID,即接口中的 topicId(如 502 篮球资讯)" }, { "name": "text", "type": "str", "required": true, "positional": true, "help": "回复内容" }, { "name": "quote_id", "type": "str", "required": false, "help": "被引用回复的 pid;填写后会以“回复某条热门回复”的方式发言" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "hupu/reply.js", "sourceFile": "hupu/reply.js", "navigateBefore": false }, { "site": "hupu", "name": "search", "description": "搜索虎扑帖子 (使用官方API)", "access": "read", "domain": "bbs.hupu.com", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "结果页码" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回结果数量" }, { "name": "forum", "type": "str", "required": false, "help": "板块ID过滤 (可选)" }, { "name": "sort", "type": "str", "default": "general", "required": false, "help": "排序方式: general/createtime/replytime/light/reply" } ], "columns": [ "rank", "tid", "title", "author", "replies", "lights", "forum", "url" ], "type": "js", "modulePath": "hupu/search.js", "sourceFile": "hupu/search.js" }, { "site": "hupu", "name": "unlike", "description": "取消点赞虎扑回复 (需要登录)", "access": "write", "domain": "bbs.hupu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "tid", "type": "str", "required": true, "positional": true, "help": "帖子ID(9位数字)" }, { "name": "pid", "type": "str", "required": true, "positional": true, "help": "回复ID" }, { "name": "fid", "type": "str", "required": true, "help": "板块ID(如278汽车区)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "hupu/unlike.js", "sourceFile": "hupu/unlike.js", "navigateBefore": false }, { "site": "hupu", "name": "whoami", "description": "Show the current logged-in hupu account", "access": "read", "domain": "hupu.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "username" ], "type": "js", "modulePath": "hupu/auth.js", "sourceFile": "hupu/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "imdb", "name": "person", "description": "Get actor or director info", "access": "read", "domain": "www.imdb.com", "strategy": "public", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "IMDb person ID (nm0634240) or URL" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max filmography entries" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "imdb/person.js", "sourceFile": "imdb/person.js" }, { "site": "imdb", "name": "reviews", "description": "Get user reviews for a movie or TV show", "access": "read", "domain": "www.imdb.com", "strategy": "public", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "IMDb title ID (tt1375666) or URL" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of reviews" } ], "columns": [ "rank", "title", "rating", "author", "date", "text" ], "type": "js", "modulePath": "imdb/reviews.js", "sourceFile": "imdb/reviews.js" }, { "site": "imdb", "name": "search", "description": "Search IMDb for movies, TV shows, and people", "access": "read", "domain": "www.imdb.com", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "id", "title", "year", "type", "url" ], "type": "js", "modulePath": "imdb/search.js", "sourceFile": "imdb/search.js" }, { "site": "imdb", "name": "title", "description": "Get movie or TV show details", "access": "read", "domain": "www.imdb.com", "strategy": "public", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "IMDb title ID (tt1375666) or URL" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "imdb/title.js", "sourceFile": "imdb/title.js" }, { "site": "imdb", "name": "top", "description": "IMDb Top 250 Movies", "access": "read", "domain": "www.imdb.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "rating", "votes", "genre", "url" ], "type": "js", "modulePath": "imdb/top.js", "sourceFile": "imdb/top.js" }, { "site": "imdb", "name": "trending", "description": "IMDb Most Popular Movies", "access": "read", "domain": "www.imdb.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "rating", "genre", "url" ], "type": "js", "modulePath": "imdb/trending.js", "sourceFile": "imdb/trending.js" }, { "site": "indeed", "name": "job", "aliases": [ "detail", "view" ], "description": "Read the full Indeed job posting by jk (job key)", "access": "read", "domain": "www.indeed.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Job key (16-char hex from `indeed search`, e.g. \"dccc07ac5a6a3683\")" } ], "columns": [ "id", "title", "company", "location", "salary", "job_type", "description", "url" ], "type": "js", "modulePath": "indeed/job.js", "sourceFile": "indeed/job.js", "navigateBefore": false }, { "site": "indeed", "name": "search", "description": "Indeed keyword job search (rendered DOM via browser session, US site)", "access": "read", "domain": "www.indeed.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Job keyword (title / skill / company)" }, { "name": "location", "type": "string", "default": "", "required": false, "help": "Location filter (e.g. \"remote\", \"New York, NY\", \"San Francisco\")" }, { "name": "fromage", "type": "string", "default": "", "required": false, "help": "Recency filter, days back: 1 / 3 / 7 / 14" }, { "name": "sort", "type": "string", "default": "relevance", "required": false, "help": "Sort order: relevance | date" }, { "name": "start", "type": "int", "default": 0, "required": false, "help": "Pagination offset (multiple of 10, 0-based)" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Max rows to return (1-25, capped at one page)" } ], "columns": [ "rank", "id", "title", "company", "location", "salary", "tags", "url" ], "type": "js", "modulePath": "indeed/search.js", "sourceFile": "indeed/search.js", "navigateBefore": false }, { "site": "instagram", "name": "collection-create", "description": "Create a new Instagram saved-posts collection (folder)", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Name of the collection to create" } ], "columns": [ "status", "collectionId", "collectionName", "mediaCount" ], "type": "js", "modulePath": "instagram/collection-create.js", "sourceFile": "instagram/collection-create.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "collection-delete", "description": "Delete an Instagram saved-posts collection (folder) by name or id", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "Collection name (case-insensitive) or numeric collection_id" } ], "columns": [ "status", "collectionId", "collectionName" ], "type": "js", "modulePath": "instagram/collection-delete.js", "sourceFile": "instagram/collection-delete.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "comment", "description": "Comment on an Instagram post", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username of the post author" }, { "name": "text", "type": "str", "required": true, "positional": true, "help": "Comment text" }, { "name": "index", "type": "int", "default": 1, "required": false, "help": "Post index (1 = most recent)" } ], "columns": [ "status", "user", "text" ], "type": "js", "modulePath": "instagram/comment.js", "sourceFile": "instagram/comment.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "download", "description": "Download images and videos from Instagram posts and reels", "access": "read", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "Instagram post / reel / tv URL" }, { "name": "path", "type": "str", "default": "~/Downloads/Instagram", "required": false, "help": "Download directory" } ], "type": "js", "modulePath": "instagram/download.js", "sourceFile": "instagram/download.js", "navigateBefore": false }, { "site": "instagram", "name": "explore", "description": "Instagram explore/discover trending posts", "access": "read", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts" } ], "columns": [ "rank", "user", "caption", "likes", "comments", "type" ], "type": "js", "modulePath": "instagram/explore.js", "sourceFile": "instagram/explore.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "follow", "description": "Follow an Instagram user", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Instagram username to follow" } ], "columns": [ "status", "username" ], "type": "js", "modulePath": "instagram/follow.js", "sourceFile": "instagram/follow.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "followers", "description": "List followers of an Instagram user", "access": "read", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Instagram username" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of followers" } ], "columns": [ "rank", "username", "name", "verified", "private" ], "type": "js", "modulePath": "instagram/followers.js", "sourceFile": "instagram/followers.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "following", "description": "List accounts an Instagram user is following", "access": "read", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Instagram username" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of accounts" } ], "columns": [ "rank", "username", "name", "verified", "private" ], "type": "js", "modulePath": "instagram/following.js", "sourceFile": "instagram/following.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "like", "description": "Like an Instagram post", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username of the post author" }, { "name": "index", "type": "int", "default": 1, "required": false, "help": "Post index (1 = most recent)" } ], "columns": [ "status", "user", "post" ], "type": "js", "modulePath": "instagram/like.js", "sourceFile": "instagram/like.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "login", "description": "Open instagram login and wait until the browser session is authenticated", "access": "write", "domain": "instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "username", "full_name" ], "type": "js", "modulePath": "instagram/auth.js", "sourceFile": "instagram/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "instagram", "name": "note", "description": "Publish a text Instagram note", "access": "write", "domain": "www.instagram.com", "strategy": "ui", "browser": true, "args": [ { "name": "content", "type": "str", "required": true, "positional": true, "help": "Note text (max 60 characters)" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds for the overall command (default: 120)" } ], "columns": [ "status", "detail", "noteId" ], "type": "js", "modulePath": "instagram/note.js", "sourceFile": "instagram/note.js", "navigateBefore": true }, { "site": "instagram", "name": "post", "description": "Post an Instagram feed image or mixed-media carousel", "access": "write", "domain": "www.instagram.com", "strategy": "ui", "browser": true, "args": [ { "name": "media", "type": "str", "required": false, "valueRequired": true, "help": "Comma-separated media paths (images/videos, up to 10)" }, { "name": "content", "type": "str", "required": false, "positional": true, "help": "Caption text" }, { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Max seconds for the overall command (default: 300)" } ], "columns": [ "status", "detail", "url" ], "type": "js", "modulePath": "instagram/post.js", "sourceFile": "instagram/post.js", "navigateBefore": true }, { "site": "instagram", "name": "profile", "description": "Get Instagram user profile info", "access": "read", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Instagram username" } ], "columns": [ "username", "name", "followers", "following", "posts", "verified", "bio" ], "type": "js", "modulePath": "instagram/profile.js", "sourceFile": "instagram/profile.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "reel", "description": "Post an Instagram reel video", "access": "write", "domain": "www.instagram.com", "strategy": "ui", "browser": true, "args": [ { "name": "video", "type": "str", "required": false, "valueRequired": true, "help": "Path to a single .mp4 video file" }, { "name": "content", "type": "str", "required": false, "positional": true, "help": "Caption text" }, { "name": "timeout", "type": "int", "default": 600, "required": false, "help": "Max seconds for the overall command (default: 600)" } ], "columns": [ "status", "detail", "url" ], "type": "js", "modulePath": "instagram/reel.js", "sourceFile": "instagram/reel.js", "navigateBefore": true }, { "site": "instagram", "name": "save", "description": "Save (bookmark) an Instagram post", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username of the post author" }, { "name": "index", "type": "int", "default": 1, "required": false, "help": "Post index (1 = most recent)" } ], "columns": [ "status", "user", "post" ], "type": "js", "modulePath": "instagram/save.js", "sourceFile": "instagram/save.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "saved", "description": "Get your saved Instagram posts (optionally from a specific collection)", "access": "read", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of saved posts" }, { "name": "collection", "type": "str", "required": false, "help": "Collection name (case-insensitive). Omit for the default \"All posts\" feed." } ], "columns": [ "index", "user", "caption", "likes", "comments", "type" ], "type": "js", "modulePath": "instagram/saved.js", "sourceFile": "instagram/saved.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "search", "description": "Search Instagram users", "access": "read", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "username", "name", "verified", "private", "url" ], "type": "js", "modulePath": "instagram/search.js", "sourceFile": "instagram/search.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "story", "description": "Post a single Instagram story image or video", "access": "write", "domain": "www.instagram.com", "strategy": "ui", "browser": true, "args": [ { "name": "media", "type": "str", "required": false, "valueRequired": true, "help": "Path to a single story image or video file" }, { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Max seconds for the overall command (default: 300)" } ], "columns": [ "status", "detail", "url" ], "type": "js", "modulePath": "instagram/story.js", "sourceFile": "instagram/story.js", "navigateBefore": true }, { "site": "instagram", "name": "unfollow", "description": "Unfollow an Instagram user", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Instagram username to unfollow" } ], "columns": [ "status", "username" ], "type": "js", "modulePath": "instagram/unfollow.js", "sourceFile": "instagram/unfollow.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "unlike", "description": "Unlike an Instagram post", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username of the post author" }, { "name": "index", "type": "int", "default": 1, "required": false, "help": "Post index (1 = most recent)" } ], "columns": [ "status", "user", "post" ], "type": "js", "modulePath": "instagram/unlike.js", "sourceFile": "instagram/unlike.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "unsave", "description": "Unsave (remove bookmark) an Instagram post", "access": "write", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username of the post author" }, { "name": "index", "type": "int", "default": 1, "required": false, "help": "Post index (1 = most recent)" } ], "columns": [ "status", "user", "post" ], "type": "js", "modulePath": "instagram/unsave.js", "sourceFile": "instagram/unsave.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "user", "description": "Get recent posts from an Instagram user", "access": "read", "domain": "www.instagram.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Instagram username" }, { "name": "limit", "type": "int", "default": 12, "required": false, "help": "Number of posts" } ], "columns": [ "index", "caption", "likes", "comments", "type", "date" ], "type": "js", "modulePath": "instagram/user.js", "sourceFile": "instagram/user.js", "navigateBefore": "https://www.instagram.com" }, { "site": "instagram", "name": "whoami", "description": "Show the current logged-in instagram account", "access": "read", "domain": "instagram.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "username", "full_name" ], "type": "js", "modulePath": "instagram/auth.js", "sourceFile": "instagram/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "jd", "name": "add-cart", "description": "京东加入购物车", "access": "write", "domain": "item.jd.com", "strategy": "cookie", "browser": true, "args": [ { "name": "sku", "type": "str", "required": true, "positional": true, "help": "商品 SKU ID" }, { "name": "num", "type": "int", "default": 1, "required": false, "help": "数量" }, { "name": "dry-run", "type": "bool", "default": false, "required": false, "help": "仅预览,不实际加入购物车" } ], "columns": [ "status", "title", "price", "sku" ], "type": "js", "modulePath": "jd/add-cart.js", "sourceFile": "jd/add-cart.js", "navigateBefore": false }, { "site": "jd", "name": "cart", "description": "查看京东购物车", "access": "read", "domain": "cart.jd.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "index", "title", "price", "quantity", "sku" ], "type": "js", "modulePath": "jd/cart.js", "sourceFile": "jd/cart.js", "navigateBefore": false }, { "site": "jd", "name": "detail", "description": "京东商品详情", "access": "read", "domain": "item.jd.com", "strategy": "cookie", "browser": true, "args": [ { "name": "sku", "type": "str", "required": true, "positional": true, "help": "商品 SKU ID" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "jd/detail.js", "sourceFile": "jd/detail.js", "navigateBefore": false }, { "site": "jd", "name": "item", "description": "京东商品详情(价格、店铺、规格参数、主图、详情图)", "access": "read", "domain": "item.jd.com", "strategy": "cookie", "browser": true, "args": [ { "name": "sku", "type": "str", "required": true, "positional": true, "help": "商品 SKU ID(如 100291143898)" }, { "name": "images", "type": "int", "default": 200, "required": false, "help": "图片数量上限(默认200)" } ], "columns": [ "title", "price", "shop", "specs", "mainImages", "detailImages" ], "type": "js", "modulePath": "jd/item.js", "sourceFile": "jd/item.js", "navigateBefore": "https://item.jd.com" }, { "site": "jd", "name": "login", "description": "Open jd login and wait until the browser session is authenticated", "access": "write", "domain": "jd.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "pin", "nickname" ], "type": "js", "modulePath": "jd/auth.js", "sourceFile": "jd/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "jd", "name": "reviews", "description": "京东商品评价", "access": "read", "domain": "item.jd.com", "strategy": "cookie", "browser": true, "args": [ { "name": "sku", "type": "str", "required": true, "positional": true, "help": "商品 SKU ID" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回评价数量 (max 20)" } ], "columns": [ "rank", "user", "content", "date" ], "type": "js", "modulePath": "jd/reviews.js", "sourceFile": "jd/reviews.js", "navigateBefore": false }, { "site": "jd", "name": "search", "description": "京东商品搜索", "access": "read", "domain": "search.jd.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 30)" } ], "columns": [ "rank", "title", "price", "shop", "sku", "url" ], "type": "js", "modulePath": "jd/search.js", "sourceFile": "jd/search.js", "navigateBefore": false }, { "site": "jd", "name": "whoami", "description": "Show the current logged-in jd account", "access": "read", "domain": "jd.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "pin", "nickname" ], "type": "js", "modulePath": "jd/auth.js", "sourceFile": "jd/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "jianyu", "name": "detail", "description": "读取剑鱼标讯详情页并抽取证据字段", "access": "read", "domain": "www.jianyu360.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "Detail page URL from jianyu/search" }, { "name": "query", "type": "str", "required": false, "help": "Optional query for evidence ranking" } ], "columns": [ "title", "publish_time", "content_type", "project_code", "budget_or_limit", "deadline_or_open_time", "url" ], "type": "js", "modulePath": "jianyu/detail.js", "sourceFile": "jianyu/detail.js", "navigateBefore": "https://www.jianyu360.cn" }, { "site": "jianyu", "name": "login", "description": "Open jianyu login and wait until the browser session is authenticated", "access": "write", "domain": "jianyu360.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "jianyu/auth.js", "sourceFile": "jianyu/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "jianyu", "name": "search", "description": "搜索剑鱼标讯公告", "access": "read", "domain": "www.jianyu360.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword, e.g. \"procurement\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results (max 50)" }, { "name": "since_days", "type": "int", "required": false, "help": "Only keep rows published within N days" } ], "columns": [ "rank", "content_type", "title", "published_at", "detail_status", "project_code", "budget_or_limit", "url" ], "type": "js", "modulePath": "jianyu/search.js", "sourceFile": "jianyu/search.js", "navigateBefore": "https://www.jianyu360.cn" }, { "site": "jianyu", "name": "whoami", "description": "Show the current logged-in jianyu account", "access": "read", "domain": "jianyu360.cn", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "jianyu/auth.js", "sourceFile": "jianyu/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "jike", "name": "comment", "description": "评论即刻帖子", "access": "write", "domain": "web.okjike.com", "strategy": "ui", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "帖子 ID" }, { "name": "text", "type": "string", "required": true, "positional": true, "help": "评论内容" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "jike/comment.js", "sourceFile": "jike/comment.js", "navigateBefore": true }, { "site": "jike", "name": "create", "description": "发布即刻动态", "access": "write", "domain": "web.okjike.com", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "string", "required": true, "positional": true, "help": "动态正文内容" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "jike/create.js", "sourceFile": "jike/create.js", "navigateBefore": true }, { "site": "jike", "name": "feed", "description": "即刻首页动态流", "access": "read", "domain": "web.okjike.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "id", "author", "content", "likes", "comments", "time", "url" ], "type": "js", "modulePath": "jike/feed.js", "sourceFile": "jike/feed.js", "navigateBefore": "https://web.okjike.com" }, { "site": "jike", "name": "like", "description": "点赞即刻帖子", "access": "write", "domain": "web.okjike.com", "strategy": "ui", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "帖子 ID" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "jike/like.js", "sourceFile": "jike/like.js", "navigateBefore": true }, { "site": "jike", "name": "login", "description": "Open jike login and wait until the browser session is authenticated", "access": "write", "domain": "web.okjike.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "screen_name", "username" ], "type": "js", "modulePath": "jike/auth.js", "sourceFile": "jike/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "jike", "name": "notifications", "description": "即刻通知", "access": "read", "domain": "web.okjike.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "type", "user", "content", "time" ], "type": "js", "modulePath": "jike/notifications.js", "sourceFile": "jike/notifications.js", "navigateBefore": "https://web.okjike.com" }, { "site": "jike", "name": "post", "description": "即刻帖子详情及评论", "access": "read", "domain": "m.okjike.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Post ID (from post URL)" } ], "columns": [ "type", "author", "content", "likes", "time" ], "type": "js", "modulePath": "jike/post.js", "sourceFile": "jike/post.js", "navigateBefore": "https://m.okjike.com" }, { "site": "jike", "name": "repost", "description": "转发即刻帖子", "access": "write", "domain": "web.okjike.com", "strategy": "ui", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "帖子 ID" }, { "name": "text", "type": "string", "required": false, "positional": true, "help": "转发附言(可选)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "jike/repost.js", "sourceFile": "jike/repost.js", "navigateBefore": true }, { "site": "jike", "name": "search", "description": "搜索即刻帖子", "access": "read", "domain": "web.okjike.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "string", "required": true, "positional": true, "help": "即刻搜索关键词" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "id", "author", "content", "likes", "comments", "time", "url" ], "type": "js", "modulePath": "jike/search.js", "sourceFile": "jike/search.js", "navigateBefore": "https://web.okjike.com" }, { "site": "jike", "name": "topic", "description": "即刻话题/圈子帖子", "access": "read", "domain": "m.okjike.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Topic ID (from topic URL, e.g. 553870e8e4b0cafb0a1bef68)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts" } ], "columns": [ "content", "author", "likes", "comments", "time", "url" ], "type": "js", "modulePath": "jike/topic.js", "sourceFile": "jike/topic.js", "navigateBefore": "https://m.okjike.com" }, { "site": "jike", "name": "user", "description": "即刻用户动态", "access": "read", "domain": "m.okjike.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Username from profile URL (e.g. wenhao1996)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts" } ], "columns": [ "id", "content", "type", "likes", "comments", "time", "url" ], "type": "js", "modulePath": "jike/user.js", "sourceFile": "jike/user.js", "navigateBefore": "https://m.okjike.com" }, { "site": "jike", "name": "whoami", "description": "Show the current logged-in jike account", "access": "read", "domain": "web.okjike.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "screen_name", "username" ], "type": "js", "modulePath": "jike/auth.js", "sourceFile": "jike/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "jimeng", "name": "generate", "description": "即梦AI 文生图 — 输入 prompt 生成图片", "access": "write", "domain": "jimeng.jianying.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "string", "required": true, "positional": true, "help": "图片描述 prompt" }, { "name": "model", "type": "string", "default": "high_aes_general_v50", "required": false, "help": "模型: high_aes_general_v50 (5.0 Lite), high_aes_general_v42 (4.6), high_aes_general_v40 (4.0)" }, { "name": "wait", "type": "int", "default": 40, "required": false, "help": "等待生成完成的秒数" } ], "columns": [ "status", "prompt", "image_count", "image_urls" ], "type": "js", "modulePath": "jimeng/generate.js", "sourceFile": "jimeng/generate.js", "navigateBefore": "https://jimeng.jianying.com" }, { "site": "jimeng", "name": "history", "description": "即梦AI 查看最近生成的作品", "access": "read", "domain": "jimeng.jianying.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 5, "required": false, "help": "" } ], "columns": [ "prompt", "model", "status", "image_url", "created_at" ], "type": "js", "modulePath": "jimeng/history.js", "sourceFile": "jimeng/history.js", "navigateBefore": "https://jimeng.jianying.com" }, { "site": "jimeng", "name": "login", "description": "Open jimeng login and wait until the browser session is authenticated", "access": "write", "domain": "jimeng.jianying.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "screen_name" ], "type": "js", "modulePath": "jimeng/auth.js", "sourceFile": "jimeng/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "jimeng", "name": "new", "description": "即梦AI 新建会话(workspace)", "access": "write", "domain": "jimeng.jianying.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "workspace_id", "workspace_url" ], "type": "js", "modulePath": "jimeng/new.js", "sourceFile": "jimeng/new.js", "navigateBefore": "https://jimeng.jianying.com" }, { "site": "jimeng", "name": "whoami", "description": "Show the current logged-in jimeng account", "access": "read", "domain": "jimeng.jianying.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "screen_name" ], "type": "js", "modulePath": "jimeng/auth.js", "sourceFile": "jimeng/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "jimeng", "name": "workspaces", "description": "即梦AI 查看所有工作区(会话窗口)", "access": "read", "domain": "jimeng.jianying.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "workspace_id", "name", "is_pinned", "updated_at" ], "type": "js", "modulePath": "jimeng/workspaces.js", "sourceFile": "jimeng/workspaces.js", "navigateBefore": "https://jimeng.jianying.com" }, { "site": "jira", "name": "attachments", "description": "Jira issue attachment metadata", "access": "read", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "Jira issue key, e.g. PROJ-123" } ], "columns": [ "id", "filename", "mimeType", "size", "url" ], "type": "js", "modulePath": "jira/attachments.js", "sourceFile": "jira/attachments.js" }, { "site": "jira", "name": "comments", "description": "Jira issue comments as Markdown", "access": "read", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "Jira issue key, e.g. PROJ-123" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max comments to return (1-100)" } ], "columns": [ "id", "author", "created", "updated", "markdown" ], "type": "js", "modulePath": "jira/comments.js", "sourceFile": "jira/comments.js" }, { "site": "jira", "name": "issue", "description": "Jira issue detail normalized for agents (description, comments, attachments, links)", "access": "read", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "Jira issue key, e.g. PROJ-123" }, { "name": "comments-limit", "type": "int", "default": 100, "required": false, "help": "Max comments to include (1-100)" } ], "columns": [ "key", "summary", "issueType", "status", "priority", "assignee", "updated", "url" ], "type": "js", "modulePath": "jira/issue.js", "sourceFile": "jira/issue.js" }, { "site": "jira", "name": "links", "description": "Jira issue links", "access": "read", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "Jira issue key, e.g. PROJ-123" } ], "columns": [ "key", "type", "direction" ], "type": "js", "modulePath": "jira/links.js", "sourceFile": "jira/links.js" }, { "site": "jira", "name": "search", "description": "Search Jira issues with JQL", "access": "read", "domain": "atlassian.net", "strategy": "public", "browser": false, "args": [ { "name": "jql", "type": "str", "required": true, "positional": true, "help": "JQL query, e.g. \"project = PROJ order by updated desc\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max issues to return (1-100)" } ], "columns": [ "key", "summary", "issueType", "status", "priority", "assignee", "updated", "url" ], "type": "js", "modulePath": "jira/search.js", "sourceFile": "jira/search.js" }, { "site": "juejin", "name": "hot", "description": "Juejin (掘金) hot article ranking, optionally scoped to a category", "access": "read", "domain": "api.juejin.cn", "strategy": "public", "browser": false, "args": [ { "name": "category", "type": "string", "required": false, "help": "Category slug or numeric id. Slugs: backend, frontend, android, ios, ai. Defaults to \"backend\"." }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max articles (1-50)." } ], "columns": [ "rank", "article_id", "title", "brief", "views", "likes", "comments", "hot_rank", "author", "url" ], "type": "js", "modulePath": "juejin/hot.js", "sourceFile": "juejin/hot.js" }, { "site": "juejin", "name": "recommend", "description": "Juejin (掘金) homepage recommended article feed", "access": "read", "domain": "api.juejin.cn", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max articles (1-100, single page)." }, { "name": "cursor", "type": "string", "default": "0", "required": false, "help": "Pagination cursor; pass back the previous response's next-page cursor to keep scrolling." } ], "columns": [ "rank", "article_id", "title", "brief", "views", "likes", "comments", "author", "tags", "url", "next_cursor", "has_more" ], "type": "js", "modulePath": "juejin/recommend.js", "sourceFile": "juejin/recommend.js" }, { "site": "ke", "name": "chengjiao", "description": "贝壳找房成交记录", "access": "read", "domain": "ke.com", "strategy": "cookie", "browser": true, "args": [ { "name": "city", "type": "str", "default": "bj", "required": false, "help": "城市代码,如 bj(北京), sh(上海), gz(广州), sz(深圳), zs(中山)" }, { "name": "district", "type": "str", "required": false, "help": "区域拼音,如 chaoyang, haidian" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量" } ], "columns": [ "title", "community", "layout", "area", "deal_price", "unit_price", "deal_date" ], "type": "js", "modulePath": "ke/chengjiao.js", "sourceFile": "ke/chengjiao.js", "navigateBefore": "https://ke.com" }, { "site": "ke", "name": "ershoufang", "description": "贝壳找房二手房列表", "access": "read", "domain": "ke.com", "strategy": "cookie", "browser": true, "args": [ { "name": "city", "type": "str", "default": "bj", "required": false, "help": "城市代码,如 bj(北京), sh(上海), gz(广州), sz(深圳), zs(中山)" }, { "name": "district", "type": "str", "required": false, "help": "区域拼音,如 chaoyang, haidian, tianhe" }, { "name": "min-price", "type": "int", "required": false, "help": "最低总价(万元)" }, { "name": "max-price", "type": "int", "required": false, "help": "最高总价(万元)" }, { "name": "rooms", "type": "int", "required": false, "help": "几居室 (1-5)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量" } ], "columns": [ "title", "community", "layout", "area", "direction", "total_price", "unit_price", "url" ], "type": "js", "modulePath": "ke/ershoufang.js", "sourceFile": "ke/ershoufang.js", "navigateBefore": "https://ke.com" }, { "site": "ke", "name": "login", "description": "Open ke login and wait until the browser session is authenticated", "access": "write", "domain": "ke.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "username" ], "type": "js", "modulePath": "ke/auth.js", "sourceFile": "ke/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "ke", "name": "whoami", "description": "Show the current logged-in ke account", "access": "read", "domain": "ke.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "username" ], "type": "js", "modulePath": "ke/auth.js", "sourceFile": "ke/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "ke", "name": "xiaoqu", "description": "贝壳找房小区列表", "access": "read", "domain": "ke.com", "strategy": "cookie", "browser": true, "args": [ { "name": "city", "type": "str", "default": "bj", "required": false, "help": "城市代码,如 bj(北京), sh(上海), gz(广州), sz(深圳), zs(中山)" }, { "name": "district", "type": "str", "required": false, "help": "区域拼音,如 chaoyang, haidian" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量" } ], "columns": [ "name", "district", "avg_price", "year", "on_sale" ], "type": "js", "modulePath": "ke/xiaoqu.js", "sourceFile": "ke/xiaoqu.js", "navigateBefore": "https://ke.com" }, { "site": "ke", "name": "zufang", "description": "贝壳找房租房列表", "access": "read", "domain": "ke.com", "strategy": "cookie", "browser": true, "args": [ { "name": "city", "type": "str", "default": "bj", "required": false, "help": "城市代码,如 bj(北京), sh(上海), gz(广州), sz(深圳), zs(中山)" }, { "name": "district", "type": "str", "required": false, "help": "区域拼音,如 chaoyang, haidian" }, { "name": "min-price", "type": "int", "required": false, "help": "最低月租(元)" }, { "name": "max-price", "type": "int", "required": false, "help": "最高月租(元)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量" } ], "columns": [ "title", "community", "area", "layout", "price", "url" ], "type": "js", "modulePath": "ke/zufang.js", "sourceFile": "ke/zufang.js", "navigateBefore": "https://ke.com" }, { "site": "kimi", "name": "account", "description": "Read account info from the Kimi sidebar (display name + plan label, e.g. \"Allegretto\").", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Mode", "Status", "Url", "Field", "Value", "Index", "Model", "Active" ], "type": "js", "modulePath": "kimi/ui.js", "sourceFile": "kimi/ui.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "ask", "description": "Send a message and wait up to --timeout seconds for the assistant reply (best-effort: polls for turn count to grow + stabilize).", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt text" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "cookies", "description": "List kimi.com cookies visible to JavaScript (httpOnly cookies are deliberately not shown).", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Field", "Value", "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version" ], "type": "js", "modulePath": "kimi/storage.js", "sourceFile": "kimi/storage.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "copy-message", "description": "Return the text of the last assistant message. Pass --conv to navigate to a specific chat first.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "conv", "type": "str", "required": false, "help": "Chat id or URL (navigates there before reading)" }, { "name": "click-button", "type": "boolean", "default": false, "required": false, "help": "Also click in-UI Copy button (writes to clipboard)" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "detail", "description": "Open a Kimi chat by ID and return its visible messages.", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Chat ID or full /chat/ URL" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "dismiss-banner", "description": "Close any visible sidebar banner (e.g., \"Make a Review & Earn Credit\", \"获取应用程序\") by clicking its Close svg.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Index", "Category", "Title", "ChatId", "NewTitle" ], "type": "js", "modulePath": "kimi/audit-extras.js", "sourceFile": "kimi/audit-extras.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "history", "description": "List recent Kimi chats from the sidebar (with chat IDs extracted from href).", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 30, "required": false, "help": "" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "history-rename", "description": "Rename a chat from the /chat/history page (clicks the inline Edit svg next to a chat row, types the new title, and saves). Requires --yes.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "chat-id", "type": "str", "required": true, "positional": true, "help": "Chat id (UUID-like)" }, { "name": "new-title", "type": "str", "required": true, "positional": true, "help": "New title" }, { "name": "yes", "type": "boolean", "default": false, "required": false, "help": "Actually rename (default: dry-run)" } ], "columns": [ "Status", "Index", "Category", "Title", "ChatId", "NewTitle" ], "type": "js", "modulePath": "kimi/audit-extras.js", "sourceFile": "kimi/audit-extras.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "idb-list", "description": "List IndexedDB databases on kimi.com.", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Field", "Value", "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version" ], "type": "js", "modulePath": "kimi/storage.js", "sourceFile": "kimi/storage.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "login", "description": "Open kimi login and wait until the browser session is authenticated", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "kimi/auth.js", "sourceFile": "kimi/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "kimi", "name": "mode", "description": "Switch to a Kimi work mode: ppt | docs | deep-research | websites | sheets | agent-swarm | code. With no argument, lists modes.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "name", "type": "str", "required": false, "positional": true, "help": "Mode name (omit to list all)" } ], "columns": [ "Mode", "Status", "Url", "Field", "Value", "Index", "Model", "Active" ], "type": "js", "modulePath": "kimi/ui.js", "sourceFile": "kimi/ui.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "model", "description": "Read the current Kimi model (e.g. \"K2.6 思考\") or switch by clicking the model dropdown. With no argument, returns current; with --list, opens dropdown + lists; with --set , switches.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "list", "type": "boolean", "default": false, "required": false, "help": "Open model dropdown + list options" }, { "name": "set", "type": "str", "required": false, "help": "Substring (case-insensitive) of model to switch to" } ], "columns": [ "Mode", "Status", "Url", "Field", "Value", "Index", "Model", "Active" ], "type": "js", "modulePath": "kimi/ui.js", "sourceFile": "kimi/ui.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "new", "description": "Start a new Kimi chat (navigates to / with chat_enter_method=new_chat).", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "react", "description": "Like or dislike the last assistant message. Pass --conv to target a specific chat.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "kind", "type": "str", "required": true, "positional": true, "help": "like or dislike" }, { "name": "conv", "type": "str", "required": false, "help": "Chat id or URL" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "read", "description": "Read messages in the current Kimi chat. Pass --conv to navigate to a specific chat first.", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "conv", "type": "str", "required": false, "help": "Chat id or URL (navigates there before reading)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "regenerate", "description": "Click Refresh (Kimi's regenerate button) on the last assistant message. Pass --conv to target a specific chat.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "conv", "type": "str", "required": false, "help": "Chat id or URL" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "send", "description": "Send a message in the current Kimi chat (fire-and-forget; does not wait for reply).", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Message text" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "settings", "description": "Open the Kimi settings page (/settings).", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Mode", "Status", "Url", "Field", "Value", "Index", "Model", "Active" ], "type": "js", "modulePath": "kimi/ui.js", "sourceFile": "kimi/ui.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "share", "description": "Click Share on the last assistant message (opens Kimi's share dialog). Pass --conv to target a specific chat.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "conv", "type": "str", "required": false, "help": "Chat id or URL" } ], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "sidebar-toggle", "description": "Click the LeftBar svg to toggle the Kimi sidebar.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Mode", "Status", "Url", "Field", "Value", "Index", "Model", "Active" ], "type": "js", "modulePath": "kimi/ui.js", "sourceFile": "kimi/ui.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "sign-out", "description": "Click SignOut on the Kimi /settings page. Navigates to /settings first if not already there. Requires --yes.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "yes", "type": "boolean", "default": false, "required": false, "help": "Actually sign out (default: dry-run)" } ], "columns": [ "Status", "Index", "Category", "Title", "ChatId", "NewTitle" ], "type": "js", "modulePath": "kimi/audit-extras.js", "sourceFile": "kimi/audit-extras.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "status", "description": "Check Kimi page connection, login state, and current URL.", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Field", "Value", "Status", "Url", "Index", "Title", "ChatId", "Role", "Text", "Length", "ClipboardClicked", "Reaction", "WaitedSeconds", "ReplyPreview" ], "type": "js", "modulePath": "kimi/chat.js", "sourceFile": "kimi/chat.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "storage-get", "description": "Read a single localStorage / sessionStorage value on kimi.com. Auto-decodes JSON.", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "Storage key" }, { "name": "storage", "type": "str", "default": "local", "required": false, "help": "" }, { "name": "max-bytes", "type": "int", "default": 4000, "required": false, "help": "" } ], "columns": [ "Field", "Value", "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version" ], "type": "js", "modulePath": "kimi/storage.js", "sourceFile": "kimi/storage.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "storage-keys", "description": "List localStorage / sessionStorage keys on kimi.com (with byte sizes).", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "storage", "type": "str", "default": "local", "required": false, "help": "\"local\" or \"session\"" }, { "name": "filter", "type": "str", "required": false, "help": "Case-insensitive substring filter over keys" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "" } ], "columns": [ "Field", "Value", "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version" ], "type": "js", "modulePath": "kimi/storage.js", "sourceFile": "kimi/storage.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "templates", "description": "List template cards visible on a Kimi mode page (PPT/docs/deep-research/agent). Each mode shows curated example projects organized by category. Pass --mode to navigate first.", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "mode", "type": "str", "required": false, "help": "Navigate to mode first: ppt|docs|deep-research|agent|websites|sheets|agent-swarm|code" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "" } ], "columns": [ "Status", "Index", "Category", "Title", "ChatId", "NewTitle" ], "type": "js", "modulePath": "kimi/audit-extras.js", "sourceFile": "kimi/audit-extras.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "upgrade", "description": "Click the \"Upgrade\" button (or 升级会员) in the Kimi sidebar — opens the membership/upgrade page or dialog.", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Index", "Category", "Title", "ChatId", "NewTitle" ], "type": "js", "modulePath": "kimi/audit-extras.js", "sourceFile": "kimi/audit-extras.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "usage", "description": "Read Kimi Code console usage cards: weekly quota, rate limit, membership, and model permission.", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "weeklyUsagePct", "weeklyResetIn", "rateLimitPct", "rateLimitResetIn", "membershipName", "membershipTier", "modelPermission", "modelCost" ], "type": "js", "modulePath": "kimi/usage.js", "sourceFile": "kimi/usage.js", "navigateBefore": true, "siteSession": "persistent" }, { "site": "kimi", "name": "view-all-history", "description": "Navigate to /chat/history (full conversation list page).", "access": "write", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Mode", "Status", "Url", "Field", "Value", "Index", "Model", "Active" ], "type": "js", "modulePath": "kimi/ui.js", "sourceFile": "kimi/ui.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "kimi", "name": "whoami", "description": "Show the current logged-in kimi account", "access": "read", "domain": "kimi.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "kimi/auth.js", "sourceFile": "kimi/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "lesswrong", "name": "comments", "description": "Top comments on a post", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "url-or-id", "type": "string", "required": true, "positional": true, "help": "Post URL or LessWrong post ID" }, { "name": "limit", "type": "int", "default": 5, "required": false, "help": "Number of comments" } ], "columns": [ "rank", "score", "author", "text" ], "type": "js", "modulePath": "lesswrong/comments.js", "sourceFile": "lesswrong/comments.js" }, { "site": "lesswrong", "name": "curated", "description": "Curated editor's picks", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/curated.js", "sourceFile": "lesswrong/curated.js" }, { "site": "lesswrong", "name": "frontpage", "description": "Algorithmic frontpage", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/frontpage.js", "sourceFile": "lesswrong/frontpage.js" }, { "site": "lesswrong", "name": "new", "description": "Latest posts", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/new.js", "sourceFile": "lesswrong/new.js" }, { "site": "lesswrong", "name": "read", "description": "Read full post by URL or ID", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "url-or-id", "type": "string", "required": true, "positional": true, "help": "Post URL or LessWrong post ID" } ], "columns": [ "title", "author", "karma", "comments", "tags", "content", "url" ], "type": "js", "modulePath": "lesswrong/read.js", "sourceFile": "lesswrong/read.js" }, { "site": "lesswrong", "name": "sequences", "description": "List post collections", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author" ], "type": "js", "modulePath": "lesswrong/sequences.js", "sourceFile": "lesswrong/sequences.js" }, { "site": "lesswrong", "name": "shortform", "description": "Quick takes / shortform posts", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/shortform.js", "sourceFile": "lesswrong/shortform.js" }, { "site": "lesswrong", "name": "tag", "description": "Posts by tag", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "tag", "type": "string", "required": true, "positional": true, "help": "Tag slug or name" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/tag.js", "sourceFile": "lesswrong/tag.js" }, { "site": "lesswrong", "name": "tags", "description": "List popular tags", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "name", "posts" ], "type": "js", "modulePath": "lesswrong/tags.js", "sourceFile": "lesswrong/tags.js" }, { "site": "lesswrong", "name": "top", "description": "Top all-time", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/top.js", "sourceFile": "lesswrong/top.js" }, { "site": "lesswrong", "name": "top-month", "description": "Top this month", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/top-month.js", "sourceFile": "lesswrong/top-month.js" }, { "site": "lesswrong", "name": "top-week", "description": "Top this week", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/top-week.js", "sourceFile": "lesswrong/top-week.js" }, { "site": "lesswrong", "name": "top-year", "description": "Top this year", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "karma", "comments", "url" ], "type": "js", "modulePath": "lesswrong/top-year.js", "sourceFile": "lesswrong/top-year.js" }, { "site": "lesswrong", "name": "user", "description": "User profile", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "LessWrong username or slug" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "lesswrong/user.js", "sourceFile": "lesswrong/user.js" }, { "site": "lesswrong", "name": "user-posts", "description": "List a user's posts", "access": "read", "domain": "www.lesswrong.com", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "LessWrong username or slug" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "karma", "comments", "date", "url" ], "type": "js", "modulePath": "lesswrong/user-posts.js", "sourceFile": "lesswrong/user-posts.js" }, { "site": "lichess", "name": "top", "description": "Top-N Lichess leaderboard for a perf type (bullet/blitz/rapid/classical/...)", "access": "read", "domain": "lichess.org", "strategy": "public", "browser": false, "args": [ { "name": "perf", "type": "str", "required": true, "positional": true, "help": "Perf type (bullet, blitz, rapid, classical, ultraBullet, chess960, ...)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Top-N rows (1-200)" } ], "columns": [ "rank", "username", "id", "title", "rating", "progress", "patron", "url" ], "type": "js", "modulePath": "lichess/top.js", "sourceFile": "lichess/top.js" }, { "site": "lichess", "name": "user", "description": "Fetch a Lichess player profile by username (rating, perfs, counts)", "access": "read", "domain": "lichess.org", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Lichess username (case-insensitive)" } ], "columns": [ "username", "id", "title", "patron", "online", "tosViolation", "createdAt", "seenAt", "gamesAll", "gamesWin", "gamesLoss", "gamesDraw", "topPerfName", "topPerfRating", "topPerfGames", "fideRating", "country", "bio", "url" ], "type": "js", "modulePath": "lichess/user.js", "sourceFile": "lichess/user.js" }, { "site": "linkedin", "name": "company", "description": "Read a LinkedIn company page: industry, size, HQ, founded, website, followers, about", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "company", "type": "string", "required": true, "positional": true, "help": "Company universal name (nvidia), /company/ path, or full URL" } ], "columns": [ "name", "industry", "size", "headquarters", "founded", "website", "specialties", "followers", "about", "url" ], "type": "js", "modulePath": "linkedin/company.js", "sourceFile": "linkedin/company.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "connect", "description": "Fail-closed LinkedIn connection request sender that verifies the exact profile before optionally sending a note", "access": "write", "domain": "www.linkedin.com", "strategy": "ui", "browser": true, "args": [ { "name": "profile-url", "type": "string", "required": true, "positional": true, "help": "Exact LinkedIn profile URL to open and verify" }, { "name": "expected-name", "type": "string", "required": true, "help": "Expected visible profile name" }, { "name": "note", "type": "string", "default": "", "required": false, "help": "Optional connection note, max 300 chars" }, { "name": "send", "type": "bool", "default": false, "required": false, "help": "Actually click Send. Default is dry-run verification only." } ], "columns": [ "status", "recipient", "reason", "profile_url", "note_chars", "connectable", "delivery_verified", "matched_invitation_name", "matched_invitation_url", "actualValue", "blockReason", "expectedValue", "observedUrl", "safety" ], "type": "js", "modulePath": "linkedin/connect.js", "sourceFile": "linkedin/connect.js", "navigateBefore": true }, { "site": "linkedin", "name": "connections", "description": "List your LinkedIn first-degree connections (name, headline, profile URL)", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of connections to return (max 500)" } ], "columns": [ "rank", "name", "occupation", "public_id", "connected_at", "url" ], "type": "js", "modulePath": "linkedin/connections.js", "sourceFile": "linkedin/connections.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "inbox", "description": "List LinkedIn messaging inbox conversations and unread messages", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 40, "required": false, "help": "Maximum conversations to return (1-100)" }, { "name": "unread-only", "type": "bool", "default": false, "required": false, "help": "Return only conversations with unread messages" } ], "columns": [ "rank", "thread_url", "thread_id", "person_name", "last_message_preview", "unread", "counterparty_type", "category", "timestamp" ], "type": "js", "modulePath": "linkedin/inbox.js", "sourceFile": "linkedin/inbox.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "job-detail", "description": "Read one LinkedIn job page with description, apply URL, workplace type, applicants, and company metadata", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "job-url", "type": "string", "required": true, "positional": true, "help": "Exact LinkedIn job URL, e.g. https://www.linkedin.com/jobs/view/123/" } ], "columns": [ "title", "company", "location", "workplace_type", "job_type", "applicants", "listed", "apply_url", "company_url", "url", "description" ], "type": "js", "modulePath": "linkedin/job-detail.js", "sourceFile": "linkedin/job-detail.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "jobs-preferences", "description": "Read visible LinkedIn Jobs preferences and alert settings without changing them", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "open_to_work", "job_titles", "locations", "job_alerts", "preferences_url", "alerts_url", "raw_preferences" ], "type": "js", "modulePath": "linkedin/jobs-preferences.js", "sourceFile": "linkedin/jobs-preferences.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "login", "description": "Open linkedin login and wait until the browser session is authenticated", "access": "write", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "public_id", "plain_id", "name" ], "type": "js", "modulePath": "linkedin/auth.js", "sourceFile": "linkedin/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "linkedin", "name": "people-search", "description": "Search standard LinkedIn (not Sales Navigator) for people by keyword. Each invocation consumes against LinkedIn's monthly Commercial Use Limit on people search; throttle accordingly.", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "keywords", "type": "string", "required": true, "positional": true, "help": "People search keywords, e.g. \"site reliability engineer berlin\"" }, { "name": "limit", "type": "int", "default": 5, "required": false, "help": "Maximum people to return (1-10); each query counts toward LinkedIn's monthly CUL" } ], "columns": [ "rank", "name", "headline", "location", "profile_url" ], "type": "js", "modulePath": "linkedin/people-search.js", "sourceFile": "linkedin/people-search.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "post-analytics", "description": "Summarize raw visible LinkedIn post counters without custom scoring or classification", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "profile-url", "type": "string", "required": false, "help": "LinkedIn /in// profile URL. Defaults to /in/me/." }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Maximum posts to summarize (1-100)" } ], "columns": [ "posts_analyzed", "total_reactions", "total_comments", "total_reposts", "total_impressions", "posts_with_media", "posts_with_urls", "latest_posted_at", "latest_reactions", "latest_comments", "latest_reposts", "latest_impressions", "latest_url" ], "type": "js", "modulePath": "linkedin/post-analytics.js", "sourceFile": "linkedin/post-analytics.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "posts", "description": "Export visible posts from a LinkedIn profile activity page with engagement metrics", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "profile-url", "type": "string", "required": false, "help": "LinkedIn /in// profile URL. Defaults to /in/me/." }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum posts to return (1-100)" } ], "columns": [ "rank", "author", "posted_at", "body", "reactions", "comments", "reposts", "impressions", "media", "media_urls", "url", "raw_text" ], "type": "js", "modulePath": "linkedin/posts.js", "sourceFile": "linkedin/posts.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "profile-analytics", "description": "Read visible LinkedIn profile dashboard metrics such as profile views, post impressions, and search appearances", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "profile-url", "type": "string", "required": false, "help": "LinkedIn /in// profile URL. Defaults to /in/me/." } ], "columns": [ "profile_url", "profile_views", "post_impressions", "search_appearances", "followers", "connections", "raw_analytics" ], "type": "js", "modulePath": "linkedin/profile-analytics.js", "sourceFile": "linkedin/profile-analytics.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "profile-experience", "description": "Read visible LinkedIn profile experience entries with titles, dates, locations, skills, media, and URLs", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "profile-url", "type": "string", "required": false, "help": "LinkedIn /in// profile URL. Defaults to /in/me/." } ], "columns": [ "rank", "total_count", "title", "employment_type", "company", "date_range", "start_date", "end_date", "location", "location_type", "description", "skills", "media", "urls", "skill_url", "media_url", "profile_url", "raw_text" ], "type": "js", "modulePath": "linkedin/profile-experience.js", "sourceFile": "linkedin/profile-experience.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "profile-projects", "description": "Read visible LinkedIn profile projects with descriptions, dates, skills, media, and URLs", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "profile-url", "type": "string", "required": false, "help": "LinkedIn /in// profile URL. Defaults to /in/me/." } ], "columns": [ "rank", "title", "date_range", "associated_with", "description", "skills", "media", "urls", "profile_url", "raw_text" ], "type": "js", "modulePath": "linkedin/profile-projects.js", "sourceFile": "linkedin/profile-projects.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "profile-read", "description": "Read visible LinkedIn profile sections: headline, About, experience, education, services, and featured sections", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "profile-url", "type": "string", "required": false, "help": "LinkedIn /in// profile URL. Defaults to /in/me/." } ], "columns": [ "profile_url", "name", "headline", "location", "about", "about_character_count", "about_skills", "experience", "education", "services", "featured" ], "type": "js", "modulePath": "linkedin/profile-read.js", "sourceFile": "linkedin/profile-read.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "safe-send", "description": "Fail-closed LinkedIn message sender that verifies exact thread, recipient, and latest message before filling/sending", "access": "write", "domain": "www.linkedin.com", "strategy": "ui", "browser": true, "args": [ { "name": "thread-url", "type": "str", "required": true, "help": "Exact LinkedIn messaging thread URL to open and verify" }, { "name": "expected-name", "type": "str", "required": true, "help": "Expected visible recipient name in the active thread header" }, { "name": "message", "type": "str", "required": true, "help": "Message body to send or dry-run" }, { "name": "expected-last-text", "type": "str", "required": false, "help": "Substring expected in the currently visible latest conversation context" }, { "name": "expected-last-hash", "type": "str", "required": false, "help": "SHA-256 hash of expected latest visible message text" }, { "name": "send", "type": "bool", "default": false, "required": false, "help": "Actually click Send. Default is dry-run verification only." }, { "name": "screenshot", "type": "bool", "default": false, "required": false, "help": "Capture a screenshot during verification" } ], "columns": [ "status", "recipient", "reason", "thread_url", "message_chars", "screenshot" ], "type": "js", "modulePath": "linkedin/safe-send.js", "sourceFile": "linkedin/safe-send.js", "navigateBefore": true }, { "site": "linkedin", "name": "salesnav-inbox", "description": "List LinkedIn Sales Navigator message conversations with API pagination", "access": "read", "domain": "www.linkedin.com", "strategy": "ui", "browser": true, "args": [ { "name": "limit", "type": "number", "default": 40, "required": false, "help": "Maximum conversations to return (1-500)" }, { "name": "max-pages", "type": "number", "default": 30, "required": false, "help": "Maximum Sales Navigator API pages to fetch" }, { "name": "unread-only", "type": "bool", "default": false, "required": false, "help": "Return only unread conversations" } ], "columns": [ "rank", "thread_id", "thread_url", "person_name", "last_message_snippet", "last_activity_time", "unread", "unread_count", "total_message_count", "archived", "participants", "next_page_starts_at" ], "type": "js", "modulePath": "linkedin/salesnav-inbox.js", "sourceFile": "linkedin/salesnav-inbox.js", "navigateBefore": true }, { "site": "linkedin", "name": "salesnav-message", "description": "Send or dry-run a LinkedIn Sales Navigator InMail to a lead using the Sales Navigator messaging API", "access": "write", "domain": "www.linkedin.com", "strategy": "ui", "browser": true, "args": [ { "name": "recipient", "type": "string", "required": true, "positional": true, "help": "Sales Navigator lead URL, LinkedIn /in/ URL from salesnav-search, or urn:li:fs_salesProfile:(...)" }, { "name": "subject", "type": "string", "required": true, "help": "InMail subject" }, { "name": "body", "type": "string", "required": true, "help": "InMail body" }, { "name": "send", "type": "bool", "default": false, "required": false, "help": "Actually send the InMail. Default is dry-run validation only." }, { "name": "copy-to-crm", "type": "bool", "default": false, "required": false, "help": "Set Sales Navigator copyToCrm on the message request" } ], "columns": [ "status", "recipient", "title", "company", "credits_remaining", "credits_before", "credits_after", "sent_in_salesnav", "message_chars", "subject_chars", "recipient_urn", "degree", "inmail_restriction", "open_link" ], "type": "js", "modulePath": "linkedin/salesnav-message.js", "sourceFile": "linkedin/salesnav-message.js", "navigateBefore": true }, { "site": "linkedin", "name": "salesnav-search", "description": "Search LinkedIn Sales Navigator for people leads by keyword", "access": "read", "domain": "www.linkedin.com", "strategy": "ui", "browser": true, "args": [ { "name": "keywords", "type": "string", "required": true, "positional": true, "help": "People search keywords, e.g. \"quality manager food manufacturing\"" }, { "name": "limit", "type": "number", "default": 25, "required": false, "help": "Maximum leads to return (1-500, fetched 25 per request)" } ], "columns": [ "rank", "name", "title", "company", "location", "degree", "profile_url", "lead_url", "recipient_urn" ], "type": "js", "modulePath": "linkedin/salesnav-search.js", "sourceFile": "linkedin/salesnav-search.js", "navigateBefore": true }, { "site": "linkedin", "name": "salesnav-thread", "description": "Return full Sales Navigator message history for a thread id, Sales Navigator inbox URL, lead URL, recipient urn, or exact recipient name", "access": "read", "domain": "www.linkedin.com", "strategy": "ui", "browser": true, "args": [ { "name": "thread-or-recipient", "type": "string", "required": true, "positional": true, "help": "Sales Navigator inbox URL/thread id, Sales Navigator lead URL, recipient urn, or exact participant name" }, { "name": "limit", "type": "number", "default": 200, "required": false, "help": "Maximum messages to return (1-500)" }, { "name": "max-pages", "type": "number", "default": 30, "required": false, "help": "Maximum inbox pages to scan when resolving a recipient" } ], "columns": [ "index", "thread_id", "thread_url", "sender", "text", "timestamp", "subject", "message_id", "sender_urn", "delivered_at", "type", "total_message_count" ], "type": "js", "modulePath": "linkedin/salesnav-thread.js", "sourceFile": "linkedin/salesnav-thread.js", "navigateBefore": true }, { "site": "linkedin", "name": "search", "description": "Search LinkedIn jobs", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "string", "required": true, "positional": true, "help": "Job search keywords" }, { "name": "location", "type": "string", "required": false, "help": "Location text such as San Francisco Bay Area" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of jobs to return (max 100)" }, { "name": "start", "type": "int", "default": 0, "required": false, "help": "Result offset for pagination" }, { "name": "details", "type": "bool", "default": false, "required": false, "help": "Include full job description and apply URL (slower)" }, { "name": "company", "type": "string", "required": false, "help": "Comma-separated company names or LinkedIn company IDs" }, { "name": "experience-level", "type": "string", "required": false, "help": "Comma-separated: internship, entry, associate, mid-senior, director, executive" }, { "name": "job-type", "type": "string", "required": false, "help": "Comma-separated: full-time, part-time, contract, temporary, volunteer, internship, other" }, { "name": "date-posted", "type": "string", "required": false, "help": "One of: any, month, week, 24h" }, { "name": "remote", "type": "string", "required": false, "help": "Comma-separated: on-site, hybrid, remote" } ], "columns": [ "rank", "title", "company", "location", "listed", "salary", "url" ], "type": "js", "modulePath": "linkedin/search.js", "sourceFile": "linkedin/search.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "sent-invitations", "description": "List pending LinkedIn sent invitations for CRM reconciliation", "access": "read", "domain": "www.linkedin.com", "strategy": "ui", "browser": true, "args": [], "columns": [ "rank", "name", "profile_url", "invited_date_text" ], "type": "js", "modulePath": "linkedin/sent-invitations.js", "sourceFile": "linkedin/sent-invitations.js", "navigateBefore": true }, { "site": "linkedin", "name": "services-read", "description": "Read LinkedIn Services page details including services, overview, availability, pricing, and media titles/descriptions", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "profile-url", "type": "string", "required": false, "help": "LinkedIn /in// profile URL. Defaults to /in/me/." }, { "name": "services-url", "type": "string", "required": false, "help": "LinkedIn /services/page// URL. If omitted, it is discovered from the profile." } ], "columns": [ "service_url", "page_title", "overview", "availability", "work_locations", "pricing", "services_provided", "services_count", "media", "media_count", "messages", "reviews_visibility" ], "type": "js", "modulePath": "linkedin/services-read.js", "sourceFile": "linkedin/services-read.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "thread-snapshot", "description": "Load a LinkedIn messaging thread, scroll for available history, and return a full context snapshot", "access": "read", "domain": "www.linkedin.com", "strategy": "ui", "browser": true, "args": [ { "name": "thread-url", "type": "str", "required": true, "help": "Exact LinkedIn messaging thread URL to open and snapshot" }, { "name": "max-scrolls", "type": "number", "default": 30, "required": false, "help": "Maximum upward scroll attempts to load older messages" }, { "name": "json", "type": "bool", "default": false, "required": false, "help": "Return only JSON snapshot string in the snapshot_json field" } ], "columns": [ "thread_url", "recipient", "message_count", "latest_text", "snapshot_json" ], "type": "js", "modulePath": "linkedin/thread-snapshot.js", "sourceFile": "linkedin/thread-snapshot.js", "navigateBefore": true }, { "site": "linkedin", "name": "timeline", "description": "Read LinkedIn home timeline posts", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts to return (max 100)" } ], "columns": [ "rank", "author", "author_url", "headline", "text", "posted_at", "reactions", "comments", "url" ], "type": "js", "modulePath": "linkedin/timeline.js", "sourceFile": "linkedin/timeline.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin", "name": "whoami", "description": "Show the current logged-in linkedin account", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "public_id", "plain_id", "name" ], "type": "js", "modulePath": "linkedin/auth.js", "sourceFile": "linkedin/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "linkedin-learning", "name": "course", "description": "Get LinkedIn Learning course detail by slug or course URL", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "slug", "type": "string", "required": true, "positional": true, "help": "Course slug (e.g. agentic-ai-build-your-first-agentic-ai-system) or full /learning/ URL" } ], "columns": [ "title", "slug", "description", "difficulty", "duration_sec", "videos_count", "rating", "rating_count", "released", "url" ], "type": "js", "modulePath": "linkedin-learning/course.js", "sourceFile": "linkedin-learning/course.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin-learning", "name": "login", "description": "Open linkedin-learning login and wait until the browser session is authenticated", "access": "write", "domain": "linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "public_id", "plain_id", "name" ], "type": "js", "modulePath": "linkedin-learning/auth.js", "sourceFile": "linkedin-learning/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "linkedin-learning", "name": "search", "description": "Search LinkedIn Learning courses, videos, and learning paths by keyword", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "keywords", "type": "string", "required": true, "positional": true, "help": "Search keywords, e.g. \"AI agent\"" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Maximum results to return (1-50)" } ], "columns": [ "rank", "type", "title", "instructor", "difficulty", "duration_sec", "rating", "rating_count", "viewers", "url" ], "type": "js", "modulePath": "linkedin-learning/search.js", "sourceFile": "linkedin-learning/search.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin-learning", "name": "trending", "description": "Browse LinkedIn Learning recommended courses across personalized carousels", "access": "read", "domain": "www.linkedin.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Maximum results to return (1-50)" } ], "columns": [ "rank", "group", "type", "title", "difficulty", "viewers", "url" ], "type": "js", "modulePath": "linkedin-learning/trending.js", "sourceFile": "linkedin-learning/trending.js", "navigateBefore": "https://www.linkedin.com" }, { "site": "linkedin-learning", "name": "whoami", "description": "Show the current logged-in linkedin-learning account", "access": "read", "domain": "linkedin.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "public_id", "plain_id", "name" ], "type": "js", "modulePath": "linkedin-learning/auth.js", "sourceFile": "linkedin-learning/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "linux-do", "name": "categories", "description": "linux.do 分类列表", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "subcategories", "type": "boolean", "default": false, "required": false, "help": "Include subcategories" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of categories" } ], "columns": [ "name", "slug", "id", "topics", "description" ], "type": "js", "modulePath": "linux-do/categories.js", "sourceFile": "linux-do/categories.js", "navigateBefore": "https://linux.do" }, { "site": "linux-do", "name": "feed", "description": "linux.do 话题列表(需登录;支持全站、标签、分类)", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "view", "type": "str", "default": "latest", "required": false, "help": "View type", "choices": [ "latest", "hot", "top" ] }, { "name": "tag", "type": "str", "required": false, "help": "Tag name, slug, or id" }, { "name": "category", "type": "str", "required": false, "help": "Category name, slug, id, or parent/name path" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items (per_page)" }, { "name": "order", "type": "str", "default": "default", "required": false, "help": "Sort order", "choices": [ "default", "created", "activity", "views", "posts", "category", "likes", "op_likes", "posters" ] }, { "name": "ascending", "type": "boolean", "default": false, "required": false, "help": "Sort ascending (default: desc)" }, { "name": "period", "type": "str", "required": false, "help": "Time period (only for --view top)", "choices": [ "all", "daily", "weekly", "monthly", "quarterly", "yearly" ] } ], "columns": [ "title", "replies", "created", "likes", "views", "url" ], "type": "js", "modulePath": "linux-do/categories.js", "sourceFile": "linux-do/categories.js", "navigateBefore": "https://linux.do" }, { "site": "linux-do", "name": "login", "description": "Open linux-do login and wait until the browser session is authenticated", "access": "write", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "username", "name" ], "type": "js", "modulePath": "linux-do/auth.js", "sourceFile": "linux-do/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "linux-do", "name": "search", "description": "搜索 linux.do", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "views", "likes", "replies", "url" ], "type": "js", "modulePath": "linux-do/search.js", "sourceFile": "linux-do/search.js", "navigateBefore": "https://linux.do" }, { "site": "linux-do", "name": "tags", "description": "linux.do 标签列表", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Number of tags" } ], "columns": [ "rank", "name", "slug", "count", "url" ], "type": "js", "modulePath": "linux-do/tags.js", "sourceFile": "linux-do/tags.js", "navigateBefore": "https://linux.do" }, { "site": "linux-do", "name": "topic", "description": "linux.do 帖子首页摘要和回复(首屏)", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "int", "required": true, "positional": true, "help": "Topic ID" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts" } ], "columns": [ "author", "content", "likes", "created_at" ], "type": "js", "modulePath": "linux-do/topic.js", "sourceFile": "linux-do/topic.js", "navigateBefore": "https://linux.do" }, { "site": "linux-do", "name": "topic-content", "description": "Get the main topic body as Markdown", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "int", "required": true, "positional": true, "help": "Topic ID" } ], "columns": [ "content" ], "defaultFormat": "plain", "type": "js", "modulePath": "linux-do/topic-content.js", "sourceFile": "linux-do/topic-content.js", "navigateBefore": "https://linux.do" }, { "site": "linux-do", "name": "user-posts", "description": "linux.do 用户的帖子", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts" } ], "columns": [ "index", "topic_user", "topic", "reply", "time", "url" ], "type": "js", "modulePath": "linux-do/user-posts.js", "sourceFile": "linux-do/user-posts.js", "navigateBefore": "https://linux.do" }, { "site": "linux-do", "name": "user-topics", "description": "linux.do 用户创建的话题", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of topics" } ], "columns": [ "rank", "title", "replies", "created_at", "likes", "views", "url" ], "type": "js", "modulePath": "linux-do/user-topics.js", "sourceFile": "linux-do/user-topics.js", "navigateBefore": "https://linux.do" }, { "site": "linux-do", "name": "whoami", "description": "Show the current logged-in linux-do account", "access": "read", "domain": "linux.do", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "username", "name" ], "type": "js", "modulePath": "linux-do/auth.js", "sourceFile": "linux-do/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "lobsters", "name": "active", "description": "Lobste.rs most active discussions", "access": "read", "domain": "lobste.rs", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "created_at", "tags", "url" ], "type": "js", "modulePath": "lobsters/active.js", "sourceFile": "lobsters/active.js" }, { "site": "lobsters", "name": "domain", "description": "Lobste.rs stories submitted from a specific domain", "access": "read", "domain": "lobste.rs", "strategy": "public", "browser": false, "args": [ { "name": "domain", "type": "str", "required": true, "positional": true, "help": "Source domain (e.g. github.com, arxiv.org, blog.cloudflare.com)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories (1-25 — single page)" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "created_at", "tags", "submission_url", "comments_url" ], "type": "js", "modulePath": "lobsters/domain.js", "sourceFile": "lobsters/domain.js" }, { "site": "lobsters", "name": "hot", "description": "Lobste.rs hottest stories", "access": "read", "domain": "lobste.rs", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "created_at", "tags", "url" ], "type": "js", "modulePath": "lobsters/hot.js", "sourceFile": "lobsters/hot.js" }, { "site": "lobsters", "name": "newest", "description": "Lobste.rs newest stories", "access": "read", "domain": "lobste.rs", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "created_at", "tags", "url" ], "type": "js", "modulePath": "lobsters/newest.js", "sourceFile": "lobsters/newest.js" }, { "site": "lobsters", "name": "read", "description": "Read a Lobste.rs story and its comment tree", "access": "read", "domain": "lobste.rs", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Lobste.rs short_id (e.g. 6cmh6h)" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Max top-level comments" }, { "name": "depth", "type": "int", "default": 2, "required": false, "help": "Max reply depth (1=no replies, 2=one level of replies, etc.)" }, { "name": "replies", "type": "int", "default": 5, "required": false, "help": "Max replies shown per comment at each level" }, { "name": "max-length", "type": "int", "default": 2000, "required": false, "help": "Max characters per comment body (min 100)" } ], "columns": [ "type", "author", "score", "text" ], "type": "js", "modulePath": "lobsters/read.js", "sourceFile": "lobsters/read.js" }, { "site": "lobsters", "name": "tag", "description": "Lobste.rs stories by tag", "access": "read", "domain": "lobste.rs", "strategy": "public", "browser": false, "args": [ { "name": "tag", "type": "str", "required": true, "positional": true, "help": "Tag name (e.g. programming, rust, security, ai)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of stories" } ], "columns": [ "rank", "id", "title", "score", "author", "comments", "created_at", "tags", "url" ], "type": "js", "modulePath": "lobsters/tag.js", "sourceFile": "lobsters/tag.js" }, { "site": "maimai", "name": "login", "description": "Open maimai login and wait until the browser session is authenticated", "access": "write", "domain": "maimai.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name", "company" ], "type": "js", "modulePath": "maimai/auth.js", "sourceFile": "maimai/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "maimai", "name": "search-talents", "description": "Search for candidates on Maimai with multi-dimensional filters", "access": "read", "domain": "maimai.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g., \"Java\", \"产品经理\")" }, { "name": "page", "type": "int", "default": 0, "required": false, "help": "Page number (0-based)" }, { "name": "size", "type": "int", "default": 20, "required": false, "help": "Results per page" }, { "name": "positions", "type": "str", "required": false, "help": "Positions (e.g., \"运营\", \"Java 开发工程师\")" }, { "name": "companies", "type": "str", "required": false, "help": "Companies, comma-separated (e.g., \"百度\", \"字节跳动,阿里巴巴\")" }, { "name": "schools", "type": "str", "required": false, "help": "Schools, comma-separated (e.g., \"北京大学\", \"清华大学,复旦大学\")" }, { "name": "provinces", "type": "str", "required": false, "help": "Provinces (e.g., \"北京\", \"上海\")" }, { "name": "cities", "type": "str", "required": false, "help": "Cities (e.g., \"北京市\", \"上海市\")" }, { "name": "worktimes", "type": "str", "required": false, "help": "Work years: 1=1-3y, 2=3-5y, 3=5-10y, 4=10+y" }, { "name": "degrees", "type": "str", "required": false, "help": "Education: 1=大专,2=本科,3=硕士,4=博士,5=MBA" }, { "name": "professions", "type": "str", "required": false, "help": "Industries: 01=互联网,02=金融,03=电子,04=通信" }, { "name": "is_211", "type": "int", "required": false, "help": "211 university: 0=any, 1=211" }, { "name": "is_985", "type": "int", "required": false, "help": "985 university: 0=any, 1=985" }, { "name": "sortby", "type": "int", "default": 0, "required": false, "help": "Sort: 0=relevance, 1=activity, 2=work_years, 3=education" }, { "name": "is_direct_chat", "type": "int", "default": 0, "required": false, "help": "Direct chat: 0=any, 1=available" } ], "columns": [ "name", "job_title", "company", "historical_companies", "location", "work_year", "school", "degree", "active_status", "age", "tags", "mutual_friends" ], "type": "js", "modulePath": "maimai/search-talents.js", "sourceFile": "maimai/search-talents.js", "navigateBefore": "https://maimai.cn" }, { "site": "maimai", "name": "whoami", "description": "Show the current logged-in maimai account", "access": "read", "domain": "maimai.cn", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name", "company" ], "type": "js", "modulePath": "maimai/auth.js", "sourceFile": "maimai/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "manus", "name": "connectors", "description": "List available Manus connectors (integrations).", "access": "read", "domain": "manus.im", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max connectors to return" } ], "columns": [ "UID", "Name", "Brief" ], "type": "js", "modulePath": "manus/connectors.js", "sourceFile": "manus/connectors.js", "navigateBefore": true, "siteSession": "persistent" }, { "site": "manus", "name": "credits", "description": "Show Manus credit balance and refresh details.", "access": "read", "domain": "manus.im", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "manus/credits.js", "sourceFile": "manus/credits.js", "navigateBefore": true, "siteSession": "persistent" }, { "site": "manus", "name": "list", "description": "List Manus sessions (tasks).", "access": "read", "domain": "manus.im", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max sessions to return" }, { "name": "archived", "type": "bool", "default": false, "required": false, "help": "Include archived sessions" } ], "columns": [ "id", "Title", "Status", "Last Message", "Last Updated", "Credits" ], "type": "js", "modulePath": "manus/list.js", "sourceFile": "manus/list.js", "navigateBefore": true, "siteSession": "persistent" }, { "site": "manus", "name": "login", "description": "Open manus login and wait until the browser session is authenticated", "access": "write", "domain": "manus.im", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "manus/auth.js", "sourceFile": "manus/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "manus", "name": "read", "description": "Show details for a specific Manus session.", "access": "read", "domain": "manus.im", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Session UID" } ], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "manus/read.js", "sourceFile": "manus/read.js", "navigateBefore": true, "siteSession": "persistent" }, { "site": "manus", "name": "skills", "description": "List Manus skills (user-added and system).", "access": "read", "domain": "manus.im", "strategy": "cookie", "browser": true, "args": [], "columns": [ "ID", "Name", "Description", "Source" ], "type": "js", "modulePath": "manus/skills.js", "sourceFile": "manus/skills.js", "navigateBefore": true, "siteSession": "persistent" }, { "site": "manus", "name": "status", "description": "Show current Manus user profile and credit summary.", "access": "read", "domain": "manus.im", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "manus/status.js", "sourceFile": "manus/status.js", "navigateBefore": true, "siteSession": "persistent" }, { "site": "manus", "name": "whoami", "description": "Show the current logged-in manus account", "access": "read", "domain": "manus.im", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "manus/auth.js", "sourceFile": "manus/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "maven", "name": "artifact", "description": "Fetch a Maven Central artifact's version history (groupId:artifactId[:version])", "access": "read", "domain": "search.maven.org", "strategy": "public", "browser": false, "args": [ { "name": "coordinate", "type": "str", "required": true, "positional": true, "help": "Maven coord \"groupId:artifactId\" or \"groupId:artifactId:version\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max versions (1-200, ignored when version is pinned)" } ], "columns": [ "groupId", "artifactId", "version", "packaging", "publishedAt", "tags", "url" ], "type": "js", "modulePath": "maven/artifact.js", "sourceFile": "maven/artifact.js" }, { "site": "maven", "name": "search", "description": "Search Maven Central by keyword (artifact name, groupId, tag)", "access": "read", "domain": "search.maven.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"jackson\", \"guava\", \"ai.koog\")" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max artifacts (1-200)" } ], "columns": [ "rank", "coordinate", "groupId", "artifactId", "latestVersion", "packaging", "versions", "lastPublished", "repository", "url" ], "type": "js", "modulePath": "maven/search.js", "sourceFile": "maven/search.js" }, { "site": "mdn", "name": "search", "description": "Search MDN Web Docs by keyword", "access": "read", "domain": "developer.mozilla.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"fetch\", \"flexbox\", \"Array.prototype.map\")" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max results (1-50)" }, { "name": "locale", "type": "str", "default": "en-US", "required": false, "help": "Doc locale (en-US default; de / es / fr / ja / ko / pt-BR / ru / zh-CN / zh-TW)" } ], "columns": [ "rank", "title", "slug", "locale", "summary", "url" ], "type": "js", "modulePath": "mdn/search.js", "sourceFile": "mdn/search.js" }, { "site": "medium", "name": "feed", "description": "Medium 热门文章 Feed", "access": "read", "domain": "medium.com", "strategy": "cookie", "browser": true, "args": [ { "name": "topic", "type": "str", "default": "", "required": false, "help": "话题标签(如 technology, programming, ai)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的文章数量" } ], "columns": [ "rank", "title", "author", "date", "readTime", "claps" ], "type": "js", "modulePath": "medium/feed.js", "sourceFile": "medium/feed.js", "navigateBefore": "https://medium.com" }, { "site": "medium", "name": "search", "description": "搜索 Medium 文章", "access": "read", "domain": "medium.com", "strategy": "cookie", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的文章数量" } ], "columns": [ "rank", "title", "author", "date", "readTime", "claps", "url" ], "type": "js", "modulePath": "medium/search.js", "sourceFile": "medium/search.js", "navigateBefore": "https://medium.com" }, { "site": "medium", "name": "tag", "description": "Latest Medium articles tagged with a given keyword (RSS feed)", "access": "read", "domain": "medium.com", "strategy": "public", "browser": false, "args": [ { "name": "tag", "type": "str", "required": true, "positional": true, "help": "Lowercase tag slug (e.g. \"programming\", \"machine-learning\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max articles (1-25 — single RSS page)" } ], "columns": [ "rank", "title", "author", "description", "categories", "published", "url" ], "type": "js", "modulePath": "medium/tag.js", "sourceFile": "medium/tag.js" }, { "site": "medium", "name": "user", "description": "获取 Medium 用户的文章列表", "access": "read", "domain": "medium.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Medium 用户名(如 @username 或 username)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的文章数量" } ], "columns": [ "rank", "title", "date", "readTime", "claps", "url" ], "type": "js", "modulePath": "medium/user.js", "sourceFile": "medium/user.js", "navigateBefore": "https://medium.com" }, { "site": "mercury", "name": "check-login", "description": "Open Mercury reimbursements and report whether the active browser profile is logged in", "access": "read", "example": "opencli --profile mercury check-login -f json", "domain": "app.mercury.com", "strategy": "ui", "browser": true, "args": [], "columns": [ "status", "loggedIn", "url", "hasSubmitExpense", "hasReimbursements", "title" ], "type": "js", "modulePath": "mercury/check-login.js", "sourceFile": "mercury/check-login.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "mercury", "name": "reimbursement-draft", "description": "Create a Mercury reimbursement draft from a local receipt, correct OCR fields, and stop at Review", "access": "write", "example": "opencli --profile mercury reimbursement-draft --receipt /tmp/receipt.png --amount 140.00 --currency CNY --date 2026-06-26 --merchant \"Example Merchant\" --category \"Marketing & Advertising\" --notes \"Example business purpose.\" -f json", "domain": "app.mercury.com", "strategy": "ui", "browser": true, "args": [ { "name": "receipt", "type": "str", "required": true, "help": "Local receipt/proof file path" }, { "name": "amount", "type": "str", "required": true, "help": "Original-currency amount, e.g. 140.00" }, { "name": "currency", "type": "str", "default": "CNY", "required": false, "help": "Original currency code" }, { "name": "date", "type": "str", "required": true, "help": "Expense date as YYYY-MM-DD" }, { "name": "merchant", "type": "str", "required": true, "help": "Merchant shown on the reimbursement" }, { "name": "category", "type": "str", "default": "Marketing & Advertising", "required": false, "help": "Mercury expense category" }, { "name": "notes", "type": "str", "required": true, "help": "Business purpose / reimbursement notes" }, { "name": "ocr-wait-seconds", "type": "str", "default": "8", "required": false, "help": "Seconds to wait after receipt upload before correcting OCR-overwritten fields" }, { "name": "close-after-review", "type": "boolean", "default": false, "required": false, "help": "Close the Review dialog after verification; final Submit is still never clicked" } ], "columns": [ "status", "url", "receipt", "uploaded", "fieldsTouched", "reviewReady", "submitBlocked", "warnings" ], "type": "js", "modulePath": "mercury/reimbursement-draft.js", "sourceFile": "mercury/reimbursement-draft.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "mercury", "name": "reimbursement-plan", "description": "Validate Mercury reimbursement inputs and print the draft plan without opening a browser", "access": "read", "example": "opencli mercury reimbursement-plan --receipt /tmp/receipt.png --amount 140.00 --currency CNY --date 2026-06-26 --merchant \"Example Merchant\" --category \"Marketing & Advertising\" --notes \"Example business purpose.\" -f json", "strategy": "local", "browser": false, "args": [ { "name": "receipt", "type": "str", "required": true, "help": "Local receipt/proof file path" }, { "name": "amount", "type": "str", "required": true, "help": "Original-currency amount, e.g. 140.00" }, { "name": "currency", "type": "str", "default": "CNY", "required": false, "help": "Original currency code" }, { "name": "date", "type": "str", "required": true, "help": "Expense date as YYYY-MM-DD" }, { "name": "merchant", "type": "str", "required": true, "help": "Merchant shown on the reimbursement" }, { "name": "category", "type": "str", "default": "Marketing & Advertising", "required": false, "help": "Mercury expense category" }, { "name": "notes", "type": "str", "required": true, "help": "Business purpose / reimbursement notes" }, { "name": "ocr-wait-seconds", "type": "str", "default": "8", "required": false, "help": "Seconds the draft command waits after receipt upload before correcting OCR fields" }, { "name": "close-after-review", "type": "boolean", "default": false, "required": false, "help": "For draft command: close the Review dialog after verification" } ], "columns": [ "status", "receipt", "amount", "currency", "date", "merchant", "category", "notes", "safety" ], "type": "js", "modulePath": "mercury/reimbursement-plan.js", "sourceFile": "mercury/reimbursement-plan.js" }, { "site": "mubu", "name": "doc", "description": "读取幕布文档内容(默认输出 Markdown,可用 --output text 输出纯文本)", "access": "read", "domain": "mubu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "文档 ID" }, { "name": "output", "type": "str", "default": "md", "required": false, "help": "输出格式:md(默认,缩进列表 Markdown,适合导入 Obsidian)或 text(纯文本,适合终端阅读)" } ], "columns": [ "content" ], "defaultFormat": "plain", "type": "js", "modulePath": "mubu/doc.js", "sourceFile": "mubu/doc.js", "navigateBefore": "https://mubu.com" }, { "site": "mubu", "name": "docs", "description": "列出幕布文档(默认根目录,--starred 查看快速访问列表)", "access": "read", "domain": "mubu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "folder", "type": "str", "default": "0", "required": false, "help": "文件夹 ID(默认根目录 0)" }, { "name": "starred", "type": "bool", "default": false, "required": false, "help": "只显示快速访问的文档和文件夹" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "最多显示条数" } ], "columns": [ "type", "id", "name", "updated", "stared" ], "type": "js", "modulePath": "mubu/docs.js", "sourceFile": "mubu/docs.js", "navigateBefore": "https://mubu.com" }, { "site": "mubu", "name": "notes", "description": "读取幕布速记(默认今天)。支持 --date/--month/--year/--from/--to 指定时间范围,--list 为概览模式(日期+条数)。", "access": "read", "domain": "mubu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "list", "type": "bool", "default": false, "required": false, "help": "概览模式:只输出日期和条数,不含速记内容。可与任意时间范围参数组合。" }, { "name": "date", "type": "str", "required": false, "help": "单日,格式 YYYY-MM-DD。不指定时间范围则默认今天(系统本地时间)。" }, { "name": "month", "type": "str", "required": false, "help": "整月,格式 YYYY-MM。" }, { "name": "year", "type": "int", "required": false, "help": "整年,格式 YYYY(整数)。" }, { "name": "from", "type": "str", "required": false, "help": "范围起始日,格式 YYYY-MM-DD。须与 --to 同时使用。" }, { "name": "to", "type": "str", "required": false, "help": "范围截止日,格式 YYYY-MM-DD。须与 --from 同时使用。" }, { "name": "output", "type": "str", "default": "md", "required": false, "help": "输出格式:md(默认,Markdown)或 text(纯文本)" } ], "columns": [ "date", "content" ], "type": "js", "modulePath": "mubu/notes.js", "sourceFile": "mubu/notes.js", "navigateBefore": "https://mubu.com" }, { "site": "mubu", "name": "recent", "description": "最近编辑的幕布文档", "access": "read", "domain": "mubu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "最多显示条数" } ], "columns": [ "id", "name", "updated" ], "type": "js", "modulePath": "mubu/recent.js", "sourceFile": "mubu/recent.js", "navigateBefore": "https://mubu.com" }, { "site": "mubu", "name": "search", "description": "全局搜索幕布文档和文件夹(标题+内容,服务端全量匹配)。结果含 type/id/name/path/hits/snippet 字段。", "access": "read", "domain": "mubu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "最多显示条数(默认 100,结果被截断时用 --limit N 调大)" } ], "columns": [ "type", "id", "name", "path", "hits", "snippet" ], "type": "js", "modulePath": "mubu/search.js", "sourceFile": "mubu/search.js", "navigateBefore": "https://mubu.com" }, { "site": "notebooklm", "name": "add-source", "description": "Add a URL, text, or local file source to an existing NotebookLM notebook", "access": "write", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "notebook", "type": "str", "required": true, "positional": true, "help": "Notebook id from `notebooklm list` or full notebook URL" }, { "name": "url", "type": "str", "required": false, "help": "Source URL to add (http/https). Pass exactly one of --url, --content, --file." }, { "name": "content", "type": "str", "required": false, "help": "Raw text content to add as a Text source (max 10 MB)." }, { "name": "file", "type": "str", "required": false, "help": "Local file path to upload as a source (max 52428800 bytes; pdf / txt / md / html / docx / etc.). Uses Google Drive's 3-step resumable upload protocol." }, { "name": "title", "type": "str", "required": false, "help": "Title for the text source (default \"Text Source\"). Ignored for --url and --file." }, { "name": "mime-type", "type": "str", "required": false, "help": "Override the auto-detected MIME type when --file is given." }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually add the remote source to the NotebookLM notebook" } ], "columns": [ "notebook_id", "source_id", "kind", "identifier", "notebook_url" ], "type": "js", "modulePath": "notebooklm/add-source.js", "sourceFile": "notebooklm/add-source.js", "navigateBefore": false }, { "site": "notebooklm", "name": "create", "description": "Create a new NotebookLM notebook with the given title", "access": "write", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "title", "type": "str", "required": true, "positional": true, "help": "Notebook title (1-200 chars)" }, { "name": "emoji", "type": "str", "required": false, "help": "Notebook emoji icon (default 📒)" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually create the remote NotebookLM notebook" } ], "columns": [ "id", "title", "emoji", "url" ], "type": "js", "modulePath": "notebooklm/create.js", "sourceFile": "notebooklm/create.js", "navigateBefore": false }, { "site": "notebooklm", "name": "current", "description": "Show metadata for the currently opened NotebookLM notebook tab", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "id", "title", "url", "source" ], "type": "js", "modulePath": "notebooklm/current.js", "sourceFile": "notebooklm/current.js", "navigateBefore": false }, { "site": "notebooklm", "name": "generate-audio", "description": "Trigger an Audio Overview (Deep Dive podcast) generation for a NotebookLM notebook, using all of its sources", "access": "write", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "notebook", "type": "str", "required": true, "positional": true, "help": "Notebook id from `notebooklm list` or full notebook URL" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually trigger remote NotebookLM audio generation" } ], "columns": [ "notebook_id", "audio_id", "source_count", "status", "notebook_url" ], "type": "js", "modulePath": "notebooklm/generate-audio.js", "sourceFile": "notebooklm/generate-audio.js", "navigateBefore": false }, { "site": "notebooklm", "name": "generate-slides", "description": "Trigger a Slide Deck (AI presentation) generation for a NotebookLM notebook, using all of its sources", "access": "write", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "notebook", "type": "str", "required": true, "positional": true, "help": "Notebook id from `notebooklm list` or full notebook URL" }, { "name": "length", "type": "str", "required": false, "help": "Slide deck length: 1=Short, 3=Default (default 3)" }, { "name": "language", "type": "str", "required": false, "help": "Language code (default en)" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually trigger remote NotebookLM slide deck generation" } ], "columns": [ "notebook_id", "slides_id", "source_count", "status", "notebook_url" ], "type": "js", "modulePath": "notebooklm/generate-slides.js", "sourceFile": "notebooklm/generate-slides.js", "navigateBefore": false }, { "site": "notebooklm", "name": "get", "aliases": [ "metadata" ], "description": "Get rich metadata for the currently opened NotebookLM notebook", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "id", "title", "emoji", "source_count", "created_at", "updated_at", "url", "source" ], "type": "js", "modulePath": "notebooklm/get.js", "sourceFile": "notebooklm/get.js", "navigateBefore": false }, { "site": "notebooklm", "name": "history", "description": "List NotebookLM conversation history threads in the current notebook", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "thread_id", "item_count", "preview", "source", "notebook_id", "url" ], "type": "js", "modulePath": "notebooklm/history.js", "sourceFile": "notebooklm/history.js", "navigateBefore": false }, { "site": "notebooklm", "name": "list", "description": "List NotebookLM notebooks via in-page batchexecute RPC in the current logged-in session", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "title", "id", "is_owner", "created_at", "source", "url" ], "type": "js", "modulePath": "notebooklm/list.js", "sourceFile": "notebooklm/list.js", "navigateBefore": false }, { "site": "notebooklm", "name": "login", "description": "Open notebooklm login and wait until the browser session is authenticated", "access": "write", "domain": "google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "name", "authuser" ], "type": "js", "modulePath": "notebooklm/auth.js", "sourceFile": "notebooklm/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "notebooklm", "name": "note-list", "aliases": [ "notes-list" ], "description": "List saved notes from the Studio panel of the current NotebookLM notebook", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "title", "created_at", "source", "url" ], "type": "js", "modulePath": "notebooklm/note-list.js", "sourceFile": "notebooklm/note-list.js", "navigateBefore": false }, { "site": "notebooklm", "name": "notes-get", "description": "Get one note from the current NotebookLM notebook by title from the visible note editor", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note", "type": "str", "required": true, "positional": true, "help": "Note title or id from the current notebook" } ], "columns": [ "title", "content", "source", "url" ], "type": "js", "modulePath": "notebooklm/notes-get.js", "sourceFile": "notebooklm/notes-get.js", "navigateBefore": false }, { "site": "notebooklm", "name": "open", "aliases": [ "select" ], "description": "Open one NotebookLM notebook in the adapter session by id or URL", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "notebook", "type": "str", "required": true, "positional": true, "help": "Notebook id from list output, or a full NotebookLM notebook URL" } ], "columns": [ "id", "title", "url", "source" ], "type": "js", "modulePath": "notebooklm/open.js", "sourceFile": "notebooklm/open.js", "navigateBefore": false }, { "site": "notebooklm", "name": "source-fulltext", "description": "Get the extracted fulltext for one source in the currently opened NotebookLM notebook", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "source", "type": "str", "required": true, "positional": true, "help": "Source id or title from the current notebook" } ], "columns": [ "title", "kind", "char_count", "url", "source" ], "type": "js", "modulePath": "notebooklm/source-fulltext.js", "sourceFile": "notebooklm/source-fulltext.js", "navigateBefore": false }, { "site": "notebooklm", "name": "source-get", "description": "Get one source from the currently opened NotebookLM notebook by id or title", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "source", "type": "str", "required": true, "positional": true, "help": "Source id or title from the current notebook" } ], "columns": [ "title", "id", "type", "size", "created_at", "updated_at", "url", "source" ], "type": "js", "modulePath": "notebooklm/source-get.js", "sourceFile": "notebooklm/source-get.js", "navigateBefore": false }, { "site": "notebooklm", "name": "source-guide", "description": "Get the guide summary and keywords for one source in the currently opened NotebookLM notebook", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "source", "type": "str", "required": true, "positional": true, "help": "Source id or title from the current notebook" } ], "columns": [ "source_id", "notebook_id", "title", "type", "summary", "keywords", "source" ], "type": "js", "modulePath": "notebooklm/source-guide.js", "sourceFile": "notebooklm/source-guide.js", "navigateBefore": false }, { "site": "notebooklm", "name": "source-list", "description": "List sources for the currently opened NotebookLM notebook", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "title", "id", "type", "size", "created_at", "updated_at", "url", "source" ], "type": "js", "modulePath": "notebooklm/source-list.js", "sourceFile": "notebooklm/source-list.js", "navigateBefore": false }, { "site": "notebooklm", "name": "status", "description": "Check NotebookLM page availability and login state in the current Chrome session", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "status", "login", "page", "url", "title", "notebooks" ], "type": "js", "modulePath": "notebooklm/status.js", "sourceFile": "notebooklm/status.js", "navigateBefore": false }, { "site": "notebooklm", "name": "summary", "description": "Get the summary block from the currently opened NotebookLM notebook", "access": "read", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "title", "summary", "source", "url" ], "type": "js", "modulePath": "notebooklm/summary.js", "sourceFile": "notebooklm/summary.js", "navigateBefore": false }, { "site": "notebooklm", "name": "whoami", "description": "Show the current logged-in notebooklm account", "access": "read", "domain": "google.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "name", "authuser" ], "type": "js", "modulePath": "notebooklm/auth.js", "sourceFile": "notebooklm/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "notebooklm", "name": "write-note", "description": "Create a Studio note in an existing NotebookLM notebook with the given title and Markdown content", "access": "write", "domain": "notebooklm.google.com", "strategy": "cookie", "browser": true, "args": [ { "name": "notebook", "type": "str", "required": true, "positional": true, "help": "Notebook id from `notebooklm list` or full notebook URL" }, { "name": "title", "type": "str", "required": true, "help": "Note title (1-200 chars)" }, { "name": "content", "type": "str", "required": true, "help": "Note body as Markdown" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually create the remote NotebookLM note" } ], "columns": [ "notebook_id", "note_id", "title", "notebook_url" ], "type": "js", "modulePath": "notebooklm/write-note.js", "sourceFile": "notebooklm/write-note.js", "navigateBefore": false }, { "site": "nowcoder", "name": "companies", "description": "Hot companies for interview prep", "access": "read", "domain": "www.nowcoder.com", "strategy": "public", "browser": false, "args": [ { "name": "job", "type": "str", "default": "11002", "required": false, "help": "Job ID (11002=Java, 11003=C++, 11200=Backend, 11203=QA, 11201=Frontend)" } ], "columns": [ "rank", "company", "companyId" ], "type": "js", "modulePath": "nowcoder/companies.js", "sourceFile": "nowcoder/companies.js" }, { "site": "nowcoder", "name": "creators", "description": "Top content creators leaderboard", "access": "read", "domain": "www.nowcoder.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of items" } ], "columns": [ "rank", "nickname", "school", "level", "heat", "tag" ], "type": "js", "modulePath": "nowcoder/creators.js", "sourceFile": "nowcoder/creators.js" }, { "site": "nowcoder", "name": "detail", "description": "Post detail view (supports ID / UUID / URL)", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Post ID, UUID, or URL" } ], "columns": [ "title", "author", "school", "content", "likes", "comments", "views", "time", "location" ], "type": "js", "modulePath": "nowcoder/detail.js", "sourceFile": "nowcoder/detail.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "experience", "description": "Interview experience posts", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of items" } ], "columns": [ "rank", "title", "author", "school", "likes", "comments", "views", "id" ], "type": "js", "modulePath": "nowcoder/experience.js", "sourceFile": "nowcoder/experience.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "hot", "description": "Hot search ranking", "access": "read", "domain": "www.nowcoder.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of items" } ], "columns": [ "rank", "title", "heat" ], "type": "js", "modulePath": "nowcoder/hot.js", "sourceFile": "nowcoder/hot.js" }, { "site": "nowcoder", "name": "jobs", "description": "Career category listing", "access": "read", "domain": "www.nowcoder.com", "strategy": "public", "browser": false, "args": [], "columns": [ "id", "career", "learners" ], "type": "js", "modulePath": "nowcoder/jobs.js", "sourceFile": "nowcoder/jobs.js" }, { "site": "nowcoder", "name": "login", "description": "Open nowcoder login and wait until the browser session is authenticated", "access": "write", "domain": "nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "nowcoder/auth.js", "sourceFile": "nowcoder/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "nowcoder", "name": "notifications", "description": "Unread message summary", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "type", "unread" ], "type": "js", "modulePath": "nowcoder/notifications.js", "sourceFile": "nowcoder/notifications.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "papers", "description": "Interview question bank by company and job", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "job", "type": "str", "default": "11002", "required": false, "help": "Job ID (11002=Java, 11003=C++, 11200=Backend, 11203=QA, 11201=Frontend)" }, { "name": "company", "type": "str", "default": "", "required": false, "help": "Company ID (e.g. 139=Baidu, 138=Tencent, 239=Huawei)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of items" } ], "columns": [ "rank", "title", "company", "practitioners" ], "type": "js", "modulePath": "nowcoder/papers.js", "sourceFile": "nowcoder/papers.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "practice", "description": "Categorized practice questions with progress", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "job", "type": "str", "default": "11226", "required": false, "help": "Career ID (11226=Software, 11227=Hardware, 11229=Product, 11230=Finance)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items" } ], "columns": [ "category", "subject", "total", "done", "remaining" ], "type": "js", "modulePath": "nowcoder/practice.js", "sourceFile": "nowcoder/practice.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "recommend", "description": "Recommended feed", "access": "read", "domain": "www.nowcoder.com", "strategy": "public", "browser": false, "args": [ { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of items" } ], "columns": [ "rank", "title", "author", "likes", "comments", "views", "id" ], "type": "js", "modulePath": "nowcoder/recommend.js", "sourceFile": "nowcoder/recommend.js" }, { "site": "nowcoder", "name": "referral", "description": "Internal referral posts", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of items" } ], "columns": [ "rank", "title", "author", "school", "likes", "comments", "views", "id" ], "type": "js", "modulePath": "nowcoder/referral.js", "sourceFile": "nowcoder/referral.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "salary", "description": "Salary disclosure posts", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of items" } ], "columns": [ "rank", "title", "author", "school", "likes", "comments", "views", "id" ], "type": "js", "modulePath": "nowcoder/salary.js", "sourceFile": "nowcoder/salary.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "search", "description": "Full-text search", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "type", "type": "str", "default": "all", "required": false, "help": "Search type (all/post/question/user/job)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "school", "content", "id" ], "type": "js", "modulePath": "nowcoder/search.js", "sourceFile": "nowcoder/search.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "suggest", "description": "Search suggestions", "access": "read", "domain": "www.nowcoder.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" } ], "columns": [ "rank", "suggestion", "type" ], "type": "js", "modulePath": "nowcoder/suggest.js", "sourceFile": "nowcoder/suggest.js", "navigateBefore": "https://www.nowcoder.com" }, { "site": "nowcoder", "name": "topics", "description": "Hot discussion topics", "access": "read", "domain": "www.nowcoder.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of items" } ], "columns": [ "rank", "topic", "views", "posts", "heat", "id" ], "type": "js", "modulePath": "nowcoder/topics.js", "sourceFile": "nowcoder/topics.js" }, { "site": "nowcoder", "name": "trending", "description": "Trending posts", "access": "read", "domain": "www.nowcoder.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of items" } ], "columns": [ "rank", "title", "heat", "id" ], "type": "js", "modulePath": "nowcoder/trending.js", "sourceFile": "nowcoder/trending.js" }, { "site": "nowcoder", "name": "whoami", "description": "Show the current logged-in nowcoder account", "access": "read", "domain": "nowcoder.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "nowcoder/auth.js", "sourceFile": "nowcoder/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "npm", "name": "downloads", "description": "Daily download counts for an npm package over a window", "access": "read", "domain": "api.npmjs.org", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "npm package name (e.g. \"react\", \"@vercel/og\")" }, { "name": "period", "type": "str", "default": "last-week", "required": false, "help": "last-day / last-week / last-month / last-year, or YYYY-MM-DD:YYYY-MM-DD" } ], "columns": [ "rank", "package", "day", "downloads" ], "type": "js", "modulePath": "npm/downloads.js", "sourceFile": "npm/downloads.js" }, { "site": "npm", "name": "package", "description": "Single npm package metadata (latest version, license, homepage, repository). Use `npm downloads` for stats.", "access": "read", "domain": "registry.npmjs.org", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "npm package name (e.g. \"react\", \"@vercel/og\")" } ], "columns": [ "name", "latestVersion", "description", "license", "homepage", "repository", "bugs", "maintainers", "keywords", "created", "modified", "url" ], "type": "js", "modulePath": "npm/package.js", "sourceFile": "npm/package.js" }, { "site": "npm", "name": "search", "description": "Search the public npm registry by keyword", "access": "read", "domain": "registry.npmjs.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"react\", \"graphql client\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-250)" } ], "columns": [ "rank", "name", "version", "description", "weeklyDownloads", "dependents", "license", "publisher", "updated", "url" ], "type": "js", "modulePath": "npm/search.js", "sourceFile": "npm/search.js" }, { "site": "nuget", "name": "package", "description": "Full NuGet package version history (catalogEntry per release)", "access": "read", "domain": "api.nuget.org", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "NuGet package id (e.g. \"Newtonsoft.Json\", case-insensitive)" } ], "columns": [ "rank", "id", "version", "title", "authors", "tags", "language", "licenseExpression", "projectUrl", "published", "listed", "url" ], "type": "js", "modulePath": "nuget/package.js", "sourceFile": "nuget/package.js" }, { "site": "nuget", "name": "search", "description": "Search NuGet packages by keyword", "access": "read", "domain": "api.nuget.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max packages (1-1000)" }, { "name": "prerelease", "type": "boolean", "default": false, "required": false, "help": "Include prerelease versions" } ], "columns": [ "rank", "id", "version", "title", "description", "authors", "tags", "totalDownloads", "verified", "projectUrl", "url" ], "type": "js", "modulePath": "nuget/search.js", "sourceFile": "nuget/search.js" }, { "site": "nvd", "name": "cve", "description": "NIST NVD CVE detail (description, CVSS, CWE, KEV flag)", "access": "read", "domain": "services.nvd.nist.gov", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "CVE identifier (e.g. \"CVE-2021-44228\")" } ], "columns": [ "id", "published", "lastModified", "vulnStatus", "baseScore", "severity", "attackVector", "cwe", "kevAdded", "description", "url" ], "type": "js", "modulePath": "nvd/cve.js", "sourceFile": "nvd/cve.js" }, { "site": "oeis", "name": "search", "description": "Search OEIS sequences by keyword or numeric pattern", "access": "read", "domain": "oeis.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword or comma-separated terms (e.g. \"fibonacci\", \"1,1,2,3,5,8\")" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max sequences (1-100)" } ], "columns": [ "rank", "id", "name", "keywords", "preview", "author", "created", "url" ], "type": "js", "modulePath": "oeis/search.js", "sourceFile": "oeis/search.js" }, { "site": "oeis", "name": "sequence", "description": "Full OEIS sequence detail by A-number (terms, name, keywords, formula counts)", "access": "read", "domain": "oeis.org", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "OEIS sequence id (e.g. \"A000045\" for Fibonacci)" } ], "columns": [ "id", "name", "keywords", "preview", "termCount", "offset", "author", "created", "revision", "commentCount", "formulaCount", "referenceCount", "xrefCount", "linkCount", "url" ], "type": "js", "modulePath": "oeis/sequence.js", "sourceFile": "oeis/sequence.js" }, { "site": "ones", "name": "login", "description": "ONES Project API — login via Chrome Bridge (POST auth/login); stderr prints export hints for ONES_USER_ID / TOKEN", "access": "write", "domain": "ones.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "email", "type": "str", "required": false, "help": "Account email (or set ONES_EMAIL)" }, { "name": "phone", "type": "str", "required": false, "help": "Account phone (or set ONES_PHONE); ignored if email is set" }, { "name": "password", "type": "str", "required": false, "help": "Password (or set ONES_PASSWORD)" } ], "columns": [ "uuid", "name", "email", "token_preview" ], "type": "js", "modulePath": "ones/login.js", "sourceFile": "ones/login.js", "navigateBefore": false }, { "site": "ones", "name": "logout", "description": "ONES Project API — invalidate current token (GET auth/logout) via Chrome Bridge", "access": "write", "domain": "ones.cn", "strategy": "cookie", "browser": true, "args": [], "columns": [ "ok", "detail" ], "type": "js", "modulePath": "ones/logout.js", "sourceFile": "ones/logout.js", "navigateBefore": false }, { "site": "ones", "name": "me", "description": "ONES Project API — current user (GET users/me) via Chrome Bridge", "access": "read", "domain": "ones.cn", "strategy": "cookie", "browser": true, "args": [], "columns": [ "uuid", "name", "email", "phone", "status" ], "type": "js", "modulePath": "ones/me.js", "sourceFile": "ones/me.js", "navigateBefore": false }, { "site": "ones", "name": "my-tasks", "description": "ONES — my work items (filters/peek + strict must query). Default: assignee=me. Use --mode if your site uses field004 for assignee.", "access": "read", "domain": "ones.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "team", "type": "str", "required": false, "positional": true, "help": "Team UUID from URL …/team//…, or set ONES_TEAM_UUID" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Max rows (default 100, max 500)" }, { "name": "mode", "type": "str", "default": "assign", "required": false, "help": "assign=负责人(顶层 assign);field004=负责人(筛选器示例里的 field004);owner=创建者;both=负责人∪创建者(两次 peek 去重)", "choices": [ "assign", "field004", "owner", "both" ] } ], "columns": [ "title", "status", "project", "uuid", "updated", "工时" ], "type": "js", "modulePath": "ones/my-tasks.js", "sourceFile": "ones/my-tasks.js", "navigateBefore": false }, { "site": "ones", "name": "task", "description": "ONES — work item detail (GET team/:team/task/:id/info); id is URL segment after …/task/", "access": "read", "domain": "ones.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Work item UUID (often 16 chars) from …/task/" }, { "name": "team", "type": "str", "required": false, "help": "Team UUID (8 chars from …/team//…), or set ONES_TEAM_UUID" } ], "columns": [ "uuid", "summary", "number", "status_uuid", "assign", "owner", "project_uuid", "updated" ], "type": "js", "modulePath": "ones/task.js", "sourceFile": "ones/task.js", "navigateBefore": false }, { "site": "ones", "name": "tasks", "description": "ONES Project API — list work items (POST team/:team/filters/peek); use token-info -f json for team uuid", "access": "read", "domain": "ones.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "team", "type": "str", "required": false, "positional": true, "help": "Team UUID (8 chars), or set ONES_TEAM_UUID" }, { "name": "project", "type": "str", "required": false, "help": "Filter by project UUID (field006 / 所属项目)" }, { "name": "assign", "type": "str", "required": false, "help": "Filter by assignee user UUID (负责人 assign)" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max rows after flattening groups (default 30)" } ], "columns": [ "title", "status", "project", "uuid", "updated", "工时" ], "type": "js", "modulePath": "ones/tasks.js", "sourceFile": "ones/tasks.js", "navigateBefore": false }, { "site": "ones", "name": "token-info", "description": "ONES Project API — session detail (GET auth/token_info) via Chrome Bridge: user, teams, org", "access": "read", "domain": "ones.cn", "strategy": "cookie", "browser": true, "args": [], "columns": [ "uuid", "name", "email", "teams", "org_name" ], "type": "js", "modulePath": "ones/token-info.js", "sourceFile": "ones/token-info.js", "navigateBefore": false }, { "site": "ones", "name": "worklog", "description": "ONES — log work hours on a task (defaults to today; use --date to backfill; endpoint falls back by deployment).", "access": "write", "domain": "ones.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "task", "type": "str", "required": true, "positional": true, "help": "Work item UUID (usually 16 chars), from my-tasks or browser URL …/task/" }, { "name": "hours", "type": "str", "required": true, "positional": true, "help": "Hours to log for this entry (e.g. 2 or 1.5), converted with ONES_MANHOUR_SCALE" }, { "name": "team", "type": "str", "required": false, "help": "Team UUID from URL …/team//…, or set ONES_TEAM_UUID" }, { "name": "date", "type": "str", "required": false, "help": "Entry date YYYY-MM-DD, defaults to today (local timezone); use for backfill" }, { "name": "note", "type": "str", "required": false, "help": "Optional note (written to description/desc)" }, { "name": "owner", "type": "str", "required": false, "help": "Owner user UUID (defaults to current logged-in user)" } ], "columns": [ "task", "date", "hours", "owner", "endpoint" ], "type": "js", "modulePath": "ones/worklog.js", "sourceFile": "ones/worklog.js", "navigateBefore": false }, { "site": "openalex", "name": "search", "description": "Search OpenAlex Works (papers, books, preprints) by keyword", "access": "read", "domain": "api.openalex.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search text (e.g. \"transformers\", \"open access scholarly\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max works (1-200, single OpenAlex page)" } ], "columns": [ "rank", "id", "title", "year", "citations", "firstAuthor", "venue", "openAccess", "type", "doi", "url" ], "type": "js", "modulePath": "openalex/search.js", "sourceFile": "openalex/search.js" }, { "site": "openalex", "name": "work", "description": "Fetch a single OpenAlex Work (paper / preprint / book) — metadata + abstract", "access": "read", "domain": "api.openalex.org", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "OpenAlex Work id (\"W2741809807\"), DOI (\"10.7717/peerj.4375\"), or full URL" } ], "columns": [ "id", "title", "type", "year", "date", "language", "authors", "venue", "citations", "openAccess", "openAccessUrl", "referencedCount", "doi", "abstract", "url" ], "type": "js", "modulePath": "openalex/work.js", "sourceFile": "openalex/work.js" }, { "site": "openfda", "name": "drug-label", "description": "Search FDA-approved drug labels (brand or generic name)", "access": "read", "domain": "fda.gov", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Brand or generic drug name (e.g. \"aspirin\", \"lisinopril\")" }, { "name": "limit", "type": "int", "default": 5, "required": false, "help": "Max rows (1-25, default 5; openFDA caps anonymous tier at 25/page)" } ], "columns": [ "rank", "id", "brandName", "genericName", "manufacturer", "productType", "route", "productNdc", "pharmClass", "purpose", "indications", "warnings", "dosage", "effectiveTime" ], "type": "js", "modulePath": "openfda/drug-label.js", "sourceFile": "openfda/drug-label.js" }, { "site": "openfda", "name": "food-recall", "description": "FDA food recall and enforcement actions (most recent first)", "access": "read", "domain": "fda.gov", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": false, "help": "Free-text Lucene query (e.g. \"salmonella\", \"listeria\"); default: all recent recalls" }, { "name": "status", "type": "str", "required": false, "help": "Filter by status: \"Ongoing\", \"Completed\", \"Terminated\"" }, { "name": "classification", "type": "str", "required": false, "help": "Filter by class: \"Class I\" (most serious), \"Class II\", \"Class III\"" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max rows (1-100, default 10; openFDA caps anonymous tier at 100/page)" } ], "columns": [ "rank", "recallNumber", "status", "classification", "voluntary", "recallingFirm", "city", "state", "country", "productDescription", "reasonForRecall", "productQuantity", "distributionPattern", "reportDate", "recallInitiationDate", "terminationDate" ], "type": "js", "modulePath": "openfda/food-recall.js", "sourceFile": "openfda/food-recall.js" }, { "site": "openreview", "name": "author", "description": "List OpenReview submissions by an author profile id (newest first)", "access": "read", "domain": "openreview.net", "strategy": "public", "browser": false, "args": [ { "name": "profile", "type": "str", "required": true, "positional": true, "help": "OpenReview profile id (e.g. \"~Yoshua_Bengio1\"). Find it on the author profile URL on openreview.net." }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max submissions (1-1000)" } ], "columns": [ "rank", "id", "title", "authors", "venue", "pdate", "url" ], "type": "js", "modulePath": "openreview/author.js", "sourceFile": "openreview/author.js" }, { "site": "openreview", "name": "paper", "description": "Show full metadata for a single OpenReview paper", "access": "read", "domain": "openreview.net", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "OpenReview note id (e.g. \"5sRnsubyAK\")" } ], "columns": [ "id", "title", "authors", "keywords", "venue", "venueid", "primary_area", "abstract", "pdate", "pdf", "url" ], "type": "js", "modulePath": "openreview/paper.js", "sourceFile": "openreview/paper.js" }, { "site": "openreview", "name": "reviews", "description": "Show full review thread (paper + reviews + decisions) for an OpenReview forum", "access": "read", "domain": "openreview.net", "strategy": "public", "browser": false, "args": [ { "name": "forum", "type": "str", "required": true, "positional": true, "help": "OpenReview forum id (same as paper id)" }, { "name": "max-length", "type": "int", "default": 4000, "required": false, "help": "Per-row text truncation (min 200)" } ], "columns": [ "type", "author", "rating", "confidence", "text" ], "type": "js", "modulePath": "openreview/reviews.js", "sourceFile": "openreview/reviews.js" }, { "site": "openreview", "name": "search", "description": "Search OpenReview papers by free-text query", "access": "read", "domain": "openreview.net", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"diffusion model\")" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Max results (max 50)" } ], "columns": [ "rank", "id", "title", "authors", "venue", "pdate", "url" ], "type": "js", "modulePath": "openreview/search.js", "sourceFile": "openreview/search.js" }, { "site": "openreview", "name": "venue", "description": "List papers at an OpenReview venue (e.g. \"ICLR 2024 oral\" or full invitation id)", "access": "read", "domain": "openreview.net", "strategy": "public", "browser": false, "args": [ { "name": "venue", "type": "str", "required": true, "positional": true, "help": "Venue name (\"ICLR 2024 oral\") or invitation (\"ICLR.cc/2025/Conference/-/Submission\")" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Max results (max 200)" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset" } ], "columns": [ "rank", "id", "title", "authors", "keywords", "primary_area", "pdate", "pdf", "url" ], "type": "js", "modulePath": "openreview/venue.js", "sourceFile": "openreview/venue.js" }, { "site": "osv", "name": "query", "description": "OSV.dev vulnerabilities affecting a package (optionally pinned to a version)", "access": "read", "domain": "osv.dev", "strategy": "public", "browser": false, "args": [ { "name": "package", "type": "string", "required": true, "positional": true, "help": "Package name (e.g. \"lodash\", \"django\")" }, { "name": "ecosystem", "type": "string", "required": true, "help": "OSV ecosystem (npm / PyPI / Go / Maven / NuGet / RubyGems / crates.io / Packagist / ...)" }, { "name": "version", "type": "string", "required": false, "help": "Pin to a specific version (e.g. \"4.17.20\"); omit for all known vulns" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max rows to return (1-200)" } ], "columns": [ "rank", "id", "summary", "severity", "aliases", "published", "modified", "affectedPackages", "url" ], "type": "js", "modulePath": "osv/query.js", "sourceFile": "osv/query.js" }, { "site": "osv", "name": "vulnerability", "description": "Single OSV.dev vulnerability detail (severity, affected packages, CVE/GHSA aliases)", "access": "read", "domain": "osv.dev", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "OSV vulnerability id (e.g. \"GHSA-29mw-wpgm-hmr9\", \"CVE-2020-28500\")" } ], "columns": [ "id", "summary", "severity", "aliases", "published", "modified", "affectedPackages", "cwes", "referenceCount", "url" ], "type": "js", "modulePath": "osv/vulnerability.js", "sourceFile": "osv/vulnerability.js" }, { "site": "packagist", "name": "package", "description": "Fetch a Packagist package's metadata (version, downloads, license, repo, GitHub stars)", "access": "read", "domain": "packagist.org", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Composer package \"/\" (e.g. \"symfony/console\", \"monolog/monolog\")" } ], "columns": [ "package", "version", "releasedAt", "license", "description", "repository", "githubStars", "favers", "downloads", "monthlyDownloads", "dailyDownloads", "url" ], "type": "js", "modulePath": "packagist/package.js", "sourceFile": "packagist/package.js" }, { "site": "packagist", "name": "search", "description": "Search Packagist (PHP / Composer) packages by keyword", "access": "read", "domain": "packagist.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"symfony\", \"laravel http\")" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max packages (1-100, single Packagist page)" } ], "columns": [ "rank", "package", "description", "downloads", "favers", "repository", "url" ], "type": "js", "modulePath": "packagist/search.js", "sourceFile": "packagist/search.js" }, { "site": "paperreview", "name": "feedback", "description": "Submit feedback for a paperreview.ai review token", "access": "write", "domain": "paperreview.ai", "strategy": "public", "browser": false, "args": [ { "name": "token", "type": "str", "required": true, "positional": true, "help": "Review token returned by paperreview.ai" }, { "name": "helpfulness", "type": "int", "required": true, "help": "Helpfulness score from 1 to 5" }, { "name": "critical-error", "type": "str", "required": true, "help": "Whether the review contains a critical error", "choices": [ "yes", "no" ] }, { "name": "actionable-suggestions", "type": "str", "required": true, "help": "Whether the review contains actionable suggestions", "choices": [ "yes", "no" ] }, { "name": "additional-comments", "type": "str", "required": false, "help": "Optional free-text feedback" }, { "name": "timeout", "type": "int", "default": 30, "required": false, "help": "Max seconds for the overall command (default: 30)" } ], "columns": [ "status", "token", "helpfulness", "critical_error", "actionable_suggestions", "message" ], "type": "js", "modulePath": "paperreview/feedback.js", "sourceFile": "paperreview/feedback.js" }, { "site": "paperreview", "name": "review", "description": "Fetch a paperreview.ai review by token", "access": "read", "domain": "paperreview.ai", "strategy": "public", "browser": false, "args": [ { "name": "token", "type": "str", "required": true, "positional": true, "help": "Review token returned by paperreview.ai" }, { "name": "timeout", "type": "int", "default": 30, "required": false, "help": "Max seconds for the overall command (default: 30)" } ], "columns": [ "status", "title", "venue", "numerical_score", "has_feedback", "review_url" ], "type": "js", "modulePath": "paperreview/review.js", "sourceFile": "paperreview/review.js" }, { "site": "paperreview", "name": "submit", "description": "Submit a PDF to paperreview.ai for review", "access": "write", "domain": "paperreview.ai", "strategy": "public", "browser": false, "args": [ { "name": "pdf", "type": "str", "required": true, "positional": true, "help": "Path to the paper PDF" }, { "name": "email", "type": "str", "required": true, "help": "Email address for the submission" }, { "name": "venue", "type": "str", "required": false, "help": "Optional target venue such as ICLR or NeurIPS" }, { "name": "dry-run", "type": "bool", "default": false, "required": false, "help": "Validate the input and stop before remote submission" }, { "name": "prepare-only", "type": "bool", "default": false, "required": false, "help": "Request an upload slot but stop before uploading the PDF" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds for the overall command (default: 120)" } ], "columns": [ "status", "file", "email", "venue", "token", "review_url", "message" ], "type": "js", "modulePath": "paperreview/submit.js", "sourceFile": "paperreview/submit.js" }, { "site": "pixiv", "name": "detail", "description": "View illustration details (tags, stats, URLs)", "access": "read", "domain": "www.pixiv.net", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Illustration ID" } ], "columns": [ "illust_id", "title", "author", "type", "pages", "bookmarks", "likes", "views", "tags", "created", "url" ], "type": "js", "modulePath": "pixiv/detail.js", "sourceFile": "pixiv/detail.js", "navigateBefore": "https://www.pixiv.net" }, { "site": "pixiv", "name": "download", "description": "Download illustration images from Pixiv", "access": "read", "domain": "www.pixiv.net", "strategy": "cookie", "browser": true, "args": [ { "name": "illust-id", "type": "str", "required": true, "positional": true, "help": "Illustration ID" }, { "name": "output", "type": "str", "default": "./pixiv-downloads", "required": false, "help": "Output directory" } ], "columns": [ "index", "type", "status", "size" ], "type": "js", "modulePath": "pixiv/download.js", "sourceFile": "pixiv/download.js", "navigateBefore": "https://www.pixiv.net" }, { "site": "pixiv", "name": "illusts", "description": "List a Pixiv artist's illustrations", "access": "read", "domain": "www.pixiv.net", "strategy": "cookie", "browser": true, "args": [ { "name": "user-id", "type": "str", "required": true, "positional": true, "help": "Pixiv user ID" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "illust_id", "pages", "bookmarks", "tags", "created", "url" ], "type": "js", "modulePath": "pixiv/illusts.js", "sourceFile": "pixiv/illusts.js", "navigateBefore": "https://www.pixiv.net" }, { "site": "pixiv", "name": "login", "description": "Open pixiv login and wait until the browser session is authenticated", "access": "write", "domain": "pixiv.net", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "pixiv/auth.js", "sourceFile": "pixiv/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "pixiv", "name": "ranking", "description": "Pixiv illustration rankings (daily/weekly/monthly)", "access": "read", "domain": "www.pixiv.net", "strategy": "cookie", "browser": true, "args": [ { "name": "mode", "type": "str", "default": "daily", "required": false, "help": "Ranking mode", "choices": [ "daily", "weekly", "monthly", "rookie", "original", "male", "female", "daily_r18", "weekly_r18" ] }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "user_id", "illust_id", "pages", "bookmarks", "url" ], "type": "js", "modulePath": "pixiv/ranking.js", "sourceFile": "pixiv/ranking.js", "navigateBefore": "https://www.pixiv.net" }, { "site": "pixiv", "name": "search", "description": "Search Pixiv illustrations by keyword", "access": "read", "domain": "www.pixiv.net", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword or tag" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" }, { "name": "order", "type": "str", "default": "date_d", "required": false, "help": "Sort order", "choices": [ "date_d", "date", "popular_d", "popular_male_d", "popular_female_d" ] }, { "name": "mode", "type": "str", "default": "all", "required": false, "help": "Search mode", "choices": [ "all", "safe", "r18" ] }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" } ], "columns": [ "rank", "title", "author", "user_id", "illust_id", "pages", "bookmarks", "tags", "url" ], "type": "js", "modulePath": "pixiv/search.js", "sourceFile": "pixiv/search.js", "navigateBefore": "https://www.pixiv.net" }, { "site": "pixiv", "name": "user", "description": "View Pixiv artist profile", "access": "read", "domain": "www.pixiv.net", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "Pixiv user ID" } ], "columns": [ "user_id", "name", "premium", "following", "illusts", "manga", "novels", "comment", "url" ], "type": "js", "modulePath": "pixiv/user.js", "sourceFile": "pixiv/user.js", "navigateBefore": "https://www.pixiv.net" }, { "site": "pixiv", "name": "whoami", "description": "Show the current logged-in pixiv account", "access": "read", "domain": "pixiv.net", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "pixiv/auth.js", "sourceFile": "pixiv/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "powerchina", "name": "login", "description": "Open powerchina login and wait until the browser session is authenticated", "access": "write", "domain": "powerchina.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "name" ], "type": "js", "modulePath": "powerchina/auth.js", "sourceFile": "powerchina/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "powerchina", "name": "search", "description": "搜索中国电建阳光采购公告", "access": "read", "domain": "bid.powerchina.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword, e.g. \"procurement\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results (max 50)" } ], "columns": [ "rank", "content_type", "title", "publish_time", "project_code", "budget_or_limit", "url" ], "type": "js", "modulePath": "powerchina/search.js", "sourceFile": "powerchina/search.js", "navigateBefore": "https://bid.powerchina.cn" }, { "site": "powerchina", "name": "whoami", "description": "Show the current logged-in powerchina account", "access": "read", "domain": "powerchina.cn", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "name" ], "type": "js", "modulePath": "powerchina/auth.js", "sourceFile": "powerchina/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "producthunt", "name": "browse", "description": "Best products in a Product Hunt category", "access": "read", "domain": "www.producthunt.com", "strategy": "intercept", "browser": true, "args": [ { "name": "category", "type": "string", "required": true, "positional": true, "help": "Category slug, e.g. vibe-coding, ai-agents, developer-tools" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results (max 50)" } ], "columns": [ "rank", "name", "tagline", "reviews", "url" ], "type": "js", "modulePath": "producthunt/browse.js", "sourceFile": "producthunt/browse.js", "navigateBefore": true }, { "site": "producthunt", "name": "hot", "description": "Today's top Product Hunt launches with vote counts", "access": "read", "domain": "www.producthunt.com", "strategy": "intercept", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results (max 50)" } ], "columns": [ "rank", "name", "votes", "url" ], "type": "js", "modulePath": "producthunt/hot.js", "sourceFile": "producthunt/hot.js", "navigateBefore": true }, { "site": "producthunt", "name": "posts", "description": "Latest Product Hunt launches (optional category filter)", "access": "read", "domain": "www.producthunt.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results (max 50)" }, { "name": "category", "type": "string", "default": "", "required": false, "help": "Category filter: ai-agents, ai-coding-agents, ai-code-editors, ai-chatbots, ai-workflow-automation, vibe-coding, developer-tools, productivity, design-creative, marketing-sales, no-code-platforms, llms, finance, social-community, engineering-development" } ], "columns": [ "rank", "name", "tagline", "author", "date", "url" ], "type": "js", "modulePath": "producthunt/posts.js", "sourceFile": "producthunt/posts.js" }, { "site": "producthunt", "name": "today", "description": "Today's Product Hunt launches (most recent day in feed)", "access": "read", "domain": "www.producthunt.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results" } ], "columns": [ "rank", "name", "tagline", "author", "url" ], "type": "js", "modulePath": "producthunt/today.js", "sourceFile": "producthunt/today.js" }, { "site": "pubmed", "name": "article", "aliases": [ "paper", "read" ], "description": "Get detailed information for a PubMed article by PMID", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "pmid", "type": "str", "required": true, "positional": true, "help": "PubMed ID, e.g. 37780221" }, { "name": "full-abstract", "type": "boolean", "default": false, "required": false, "help": "Do not truncate the abstract in table output" } ], "columns": [ "pmid", "title", "authors", "journal", "year", "date", "article_type", "language", "doi", "pmc", "affiliations", "grants", "mesh_terms", "keywords", "abstract", "url" ], "defaultFormat": "plain", "type": "js", "modulePath": "pubmed/article.js", "sourceFile": "pubmed/article.js" }, { "site": "pubmed", "name": "author", "description": "Search PubMed articles by author name and optional affiliation", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Author name, e.g. \"Smith J\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" }, { "name": "affiliation", "type": "str", "required": false, "help": "Filter by author affiliation" }, { "name": "position", "type": "str", "default": "any", "required": false, "help": "Author position: any, first, or last", "choices": [ "any", "first", "last" ] }, { "name": "year-from", "type": "int", "required": false, "help": "Filter publication year from" }, { "name": "year-to", "type": "int", "required": false, "help": "Filter publication year to" }, { "name": "sort", "type": "str", "default": "date", "required": false, "help": "Sort by date or relevance", "choices": [ "date", "relevance" ] } ], "columns": [ "rank", "pmid", "title", "authors", "journal", "year", "article_type", "doi", "url" ], "type": "js", "modulePath": "pubmed/author.js", "sourceFile": "pubmed/author.js" }, { "site": "pubmed", "name": "citations", "description": "Get PubMed citation relationships for an article", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "pmid", "type": "str", "required": true, "positional": true, "help": "PubMed ID, e.g. 37780221" }, { "name": "direction", "type": "str", "default": "citedby", "required": false, "help": "citedby or references", "choices": [ "citedby", "references" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" } ], "columns": [ "rank", "pmid", "title", "authors", "journal", "year", "article_type", "doi", "url" ], "type": "js", "modulePath": "pubmed/citations.js", "sourceFile": "pubmed/citations.js" }, { "site": "pubmed", "name": "clinical-trial", "description": "Search PubMed clinical trials with a trial-study preset", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Clinical topic query, e.g. \"breast cancer\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" }, { "name": "year-from", "type": "int", "required": false, "help": "Filter publication year from" }, { "name": "year-to", "type": "int", "required": false, "help": "Filter publication year to" }, { "name": "free-full-text", "type": "boolean", "default": false, "required": false, "help": "Only include free full text articles" }, { "name": "sort", "type": "str", "default": "date", "required": false, "help": "Sort by date or relevance", "choices": [ "date", "relevance" ] } ], "columns": [ "rank", "pmid", "title", "authors", "journal", "year", "article_type", "doi", "url" ], "type": "js", "modulePath": "pubmed/clinical-trial.js", "sourceFile": "pubmed/clinical-trial.js" }, { "site": "pubmed", "name": "journal", "description": "Search PubMed articles by journal name", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "journal", "type": "str", "required": true, "positional": true, "help": "Journal name, e.g. \"Nature\" or \"The Lancet\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" }, { "name": "year-from", "type": "int", "required": false, "help": "Filter publication year from" }, { "name": "year-to", "type": "int", "required": false, "help": "Filter publication year to" }, { "name": "sort", "type": "str", "default": "relevance", "required": false, "help": "Sort by relevance or date", "choices": [ "relevance", "date" ] } ], "columns": [ "rank", "pmid", "title", "authors", "journal", "year", "article_type", "doi", "url" ], "type": "js", "modulePath": "pubmed/journal.js", "sourceFile": "pubmed/journal.js" }, { "site": "pubmed", "name": "mesh", "description": "Search PubMed articles by MeSH term", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "term", "type": "str", "required": true, "positional": true, "help": "MeSH term, e.g. \"Neoplasms\" or \"Machine Learning\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" }, { "name": "major", "type": "boolean", "default": false, "required": false, "help": "Only include articles where this is a major MeSH topic" }, { "name": "sort", "type": "str", "default": "relevance", "required": false, "help": "Sort by relevance or date", "choices": [ "relevance", "date" ] } ], "columns": [ "rank", "pmid", "title", "authors", "journal", "year", "article_type", "doi", "url" ], "type": "js", "modulePath": "pubmed/mesh.js", "sourceFile": "pubmed/mesh.js" }, { "site": "pubmed", "name": "related", "description": "Find articles related to a PubMed article", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "pmid", "type": "str", "required": true, "positional": true, "help": "PubMed ID, e.g. 37780221" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" }, { "name": "score", "type": "boolean", "default": false, "required": false, "help": "Show similarity scores when available" } ], "columns": [ "rank", "pmid", "title", "authors", "journal", "year", "article_type", "score", "doi", "url" ], "type": "js", "modulePath": "pubmed/related.js", "sourceFile": "pubmed/related.js" }, { "site": "pubmed", "name": "review", "description": "Search PubMed review articles with a review preset", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Review topic query, e.g. \"immunotherapy\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" }, { "name": "year-from", "type": "int", "required": false, "help": "Filter publication year from" }, { "name": "year-to", "type": "int", "required": false, "help": "Filter publication year to" }, { "name": "has-abstract", "type": "boolean", "default": false, "required": false, "help": "Only include articles with abstracts" }, { "name": "sort", "type": "str", "default": "date", "required": false, "help": "Sort by date or relevance", "choices": [ "date", "relevance" ] } ], "columns": [ "rank", "pmid", "title", "authors", "journal", "year", "article_type", "doi", "url" ], "type": "js", "modulePath": "pubmed/review.js", "sourceFile": "pubmed/review.js" }, { "site": "pubmed", "name": "search", "description": "Search PubMed articles with advanced filters", "access": "read", "domain": "pubmed.ncbi.nlm.nih.gov", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query, e.g. \"machine learning cancer\"" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-100)" }, { "name": "author", "type": "str", "required": false, "help": "Filter by author name" }, { "name": "journal", "type": "str", "required": false, "help": "Filter by journal name" }, { "name": "year-from", "type": "int", "required": false, "help": "Filter publication year from" }, { "name": "year-to", "type": "int", "required": false, "help": "Filter publication year to" }, { "name": "article-type", "type": "str", "required": false, "help": "Filter by publication type, e.g. Review or Clinical Trial" }, { "name": "has-abstract", "type": "boolean", "default": false, "required": false, "help": "Only include articles with abstracts" }, { "name": "free-full-text", "type": "boolean", "default": false, "required": false, "help": "Only include free full text articles" }, { "name": "humans-only", "type": "boolean", "default": false, "required": false, "help": "Only include human studies" }, { "name": "english-only", "type": "boolean", "default": false, "required": false, "help": "Only include English articles" }, { "name": "sort", "type": "str", "default": "relevance", "required": false, "help": "Sort by relevance, date, author, or journal", "choices": [ "relevance", "date", "author", "journal" ] } ], "columns": [ "rank", "pmid", "title", "authors", "journal", "year", "article_type", "doi", "url" ], "type": "js", "modulePath": "pubmed/search.js", "sourceFile": "pubmed/search.js" }, { "site": "pypi", "name": "downloads", "description": "PyPI download stats for a package (recent totals or full daily history)", "access": "read", "domain": "pypistats.org", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "PyPI package name (e.g. \"requests\", \"pandas\")" }, { "name": "period", "type": "str", "default": "recent", "required": false, "help": "recent (default — 1 row, last day/week/month) or overall (1 row per day)" } ], "columns": [ "rank", "package", "period", "date", "downloads" ], "type": "js", "modulePath": "pypi/downloads.js", "sourceFile": "pypi/downloads.js" }, { "site": "pypi", "name": "package", "description": "Single PyPI package metadata (latest version, license, homepage, classifiers)", "access": "read", "domain": "pypi.org", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "PyPI package name (e.g. \"requests\", \"pandas\")" } ], "columns": [ "name", "latestVersion", "summary", "author", "license", "homepage", "repository", "requiresPython", "keywords", "releases", "firstReleased", "lastReleased", "url" ], "type": "js", "modulePath": "pypi/package.js", "sourceFile": "pypi/package.js" }, { "site": "qoder", "name": "account", "description": "Click the account button (username) in the Qoder sidebar and return the visible account dropdown items.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "username", "type": "str", "required": false, "help": "Username text shown in the sidebar (default: tries common short labels)" } ], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "add-workspace", "description": "Click \"Add Workspace\" — opens the folder picker. Note: this opens a system file-picker dialog that Qoder controls; the actual folder selection must be done in the UI by the user.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "ask", "description": "Send a prompt to Qoder and wait up to --timeout seconds for the reply (best-effort: polls for the chat turn count to grow + stabilize).", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt text" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait" } ], "columns": [ "Role", "Text", "WaitedSeconds" ], "type": "js", "modulePath": "qoder/quest.js", "sourceFile": "qoder/quest.js", "navigateBefore": true }, { "site": "qoder", "name": "credits", "description": "Click \"Credits Usage\" and return the credits-usage display text.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "history", "description": "List Quests visible in the Qoder sidebar. Returns title + visible metadata.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "" } ], "columns": [ "Index", "Title" ], "type": "js", "modulePath": "qoder/history.js", "sourceFile": "qoder/history.js", "navigateBefore": true }, { "site": "qoder", "name": "knowledge", "description": "Open the Knowledge view (Qoder's personal/team knowledge base).", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "marketplace", "description": "Open the Qoder Marketplace.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "more-actions", "description": "Click the \"More Actions\" button and list its menu items.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Item" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "new", "description": "Start a new Qoder Quest (conversation). Clicks the \"New Quest\" button in the sidebar (or its ⌘N variant).", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/quest.js", "sourceFile": "qoder/quest.js", "navigateBefore": true }, { "site": "qoder", "name": "open-editor", "description": "Click \"Open Editor\" — opens the current draft in a full editor pane.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/composer.js", "sourceFile": "qoder/composer.js", "navigateBefore": true }, { "site": "qoder", "name": "open-panel", "description": "Open / close the Qoder bottom panel (Output / Terminal / Debug Console). ⌥⌘B equivalent.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "prompt-enhance", "description": "Click \"Prompt Enhance\" — Qoder rewrites the current composer draft for better LLM consumption.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/composer.js", "sourceFile": "qoder/composer.js", "navigateBefore": true }, { "site": "qoder", "name": "read", "description": "Read messages in the current Qoder Quest. Returns role + text for each visible turn.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 30, "required": false, "help": "" } ], "columns": [ "Index", "Role", "Text" ], "type": "js", "modulePath": "qoder/read.js", "sourceFile": "qoder/read.js", "navigateBefore": true }, { "site": "qoder", "name": "search", "description": "Open Qoder Search palette (⌘P), type a query, return matched options.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search text" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "Index", "Item" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "send", "description": "Type text into the Qoder composer and click \"Send message\" (fire-and-forget).", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Text to send" } ], "columns": [ "Status", "Length" ], "type": "js", "modulePath": "qoder/quest.js", "sourceFile": "qoder/quest.js", "navigateBefore": true }, { "site": "qoder", "name": "settings", "description": "Click the Settings button in the Qoder sidebar.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "sidebar-toggle", "description": "Collapse / Expand the Qoder Quest List sidebar (⌘B).", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "qoder", "name": "status", "description": "Check Qoder CDP connection and report the current renderer URL + title.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "Url", "Title" ], "type": "js", "modulePath": "qoder/status.js", "sourceFile": "qoder/status.js", "navigateBefore": true }, { "site": "qoder", "name": "view-all", "description": "Click \"View all\" to show all Quests.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qoder/ui.js", "sourceFile": "qoder/ui.js", "navigateBefore": true }, { "site": "quark", "name": "login", "description": "Open quark login and wait until the browser session is authenticated", "access": "write", "domain": "quark.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "nickname" ], "type": "js", "modulePath": "quark/auth.js", "sourceFile": "quark/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "quark", "name": "ls", "description": "List files in your Quark Drive", "access": "read", "domain": "pan.quark.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "path", "type": "str", "default": "", "required": false, "positional": true, "help": "Folder path to list (empty for root)" }, { "name": "depth", "type": "int", "default": 0, "required": false, "help": "Max depth to traverse" }, { "name": "dirs-only", "type": "boolean", "default": false, "required": false, "help": "Show directories only" } ], "columns": [ "name", "is_dir", "size", "fid", "path" ], "type": "js", "modulePath": "quark/ls.js", "sourceFile": "quark/ls.js", "navigateBefore": "https://pan.quark.cn" }, { "site": "quark", "name": "mkdir", "description": "Create a folder in your Quark Drive", "access": "write", "domain": "pan.quark.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Folder name" }, { "name": "parent", "type": "str", "required": false, "help": "Parent folder path (resolved by name)" }, { "name": "parent-fid", "type": "str", "required": false, "help": "Parent folder fid (use directly)" } ], "defaultFormat": "json", "type": "js", "modulePath": "quark/mkdir.js", "sourceFile": "quark/mkdir.js", "navigateBefore": "https://pan.quark.cn" }, { "site": "quark", "name": "mv", "description": "Move files to a folder in your Quark Drive", "access": "write", "domain": "pan.quark.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "fids", "type": "str", "required": true, "positional": true, "help": "File IDs to move (comma-separated)" }, { "name": "to", "type": "str", "default": "", "required": false, "help": "Destination folder path (required unless --to-fid is set)" }, { "name": "to-fid", "type": "str", "default": "", "required": false, "help": "Destination folder ID (overrides --to)" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds for the overall command (default: 120)" } ], "defaultFormat": "json", "type": "js", "modulePath": "quark/mv.js", "sourceFile": "quark/mv.js", "navigateBefore": "https://pan.quark.cn" }, { "site": "quark", "name": "rename", "description": "Rename a file in your Quark Drive", "access": "write", "domain": "pan.quark.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "fid", "type": "str", "required": true, "positional": true, "help": "File ID to rename" }, { "name": "name", "type": "str", "required": true, "help": "New file name" } ], "defaultFormat": "json", "type": "js", "modulePath": "quark/rename.js", "sourceFile": "quark/rename.js", "navigateBefore": "https://pan.quark.cn" }, { "site": "quark", "name": "rm", "description": "Delete files from your Quark Drive", "access": "write", "domain": "pan.quark.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "fids", "type": "str", "required": true, "positional": true, "help": "File IDs to delete (comma-separated)" } ], "defaultFormat": "json", "type": "js", "modulePath": "quark/rm.js", "sourceFile": "quark/rm.js", "navigateBefore": "https://pan.quark.cn" }, { "site": "quark", "name": "save", "description": "Save shared files to your Quark Drive", "access": "write", "domain": "pan.quark.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "Quark share URL or pwd_id" }, { "name": "to", "type": "str", "default": "", "required": false, "help": "Destination folder path" }, { "name": "to-fid", "type": "str", "default": "", "required": false, "help": "Destination folder ID (overrides --to)" }, { "name": "fids", "type": "str", "default": "", "required": false, "help": "File IDs to save (comma-separated, from share-tree). Omit to save all." }, { "name": "stoken", "type": "str", "default": "", "required": false, "help": "Share token (from share-tree output, required with --fids)" }, { "name": "passcode", "type": "str", "default": "", "required": false, "help": "Share passcode (if required)" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds for the overall command (default: 120)" } ], "defaultFormat": "json", "type": "js", "modulePath": "quark/save.js", "sourceFile": "quark/save.js", "navigateBefore": "https://pan.quark.cn" }, { "site": "quark", "name": "share-tree", "description": "Get directory tree from Quark Drive share link as nested JSON", "access": "read", "domain": "pan.quark.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "Quark share URL or pwd_id" }, { "name": "passcode", "type": "str", "default": "", "required": false, "help": "Share passcode (if required)" }, { "name": "depth", "type": "int", "default": 10, "required": false, "help": "Max directory depth" } ], "defaultFormat": "json", "type": "js", "modulePath": "quark/share-tree.js", "sourceFile": "quark/share-tree.js", "navigateBefore": "https://pan.quark.cn" }, { "site": "quark", "name": "whoami", "description": "Show the current logged-in quark account", "access": "read", "domain": "quark.cn", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "nickname" ], "type": "js", "modulePath": "quark/auth.js", "sourceFile": "quark/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "ask", "description": "Send a prompt to Qianwen and return the assistant reply", "access": "write", "domain": "www.qianwen.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send to Qianwen" }, { "name": "timeout", "type": "int", "default": 120, "required": false, "help": "Max seconds to wait for the response" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" }, { "name": "think", "type": "boolean", "default": false, "required": false, "help": "Enable 深度思考 (DeepThink)" }, { "name": "research", "type": "boolean", "default": false, "required": false, "help": "Enable 深度研究 (DeepResearch)" }, { "name": "markdown", "type": "boolean", "default": false, "required": false, "help": "Emit assistant reply as markdown" } ], "columns": [ "Role", "Text" ], "defaultFormat": "plain", "type": "js", "modulePath": "qwen/ask.js", "sourceFile": "qwen/ask.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "detail", "description": "Open a Qianwen conversation by ID and read its messages", "access": "read", "domain": "www.qianwen.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Session ID (32-char hex) or full https://www.qianwen.com/chat/ URL" }, { "name": "markdown", "type": "boolean", "default": false, "required": false, "help": "Emit assistant replies as markdown" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "qwen/detail.js", "sourceFile": "qwen/detail.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "history", "description": "List recent Qianwen conversations (requires login)", "access": "read", "domain": "www.qianwen.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max conversations to show (default 20, max 100)" } ], "columns": [ "Index", "Title", "Updated", "Url" ], "type": "js", "modulePath": "qwen/history.js", "sourceFile": "qwen/history.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "image", "description": "Generate images with Qianwen (AI生图) and save them locally", "access": "write", "domain": "www.qianwen.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Image prompt to send" }, { "name": "op", "type": "str", "default": "~/Pictures/qianwen", "required": false, "help": "Output directory" }, { "name": "new", "type": "boolean", "default": true, "required": false, "help": "Start a new chat before generating (default: true)" }, { "name": "sd", "type": "boolean", "default": false, "required": false, "help": "Skip download; only show the Qianwen link" }, { "name": "timeout", "type": "int", "default": 180, "required": false, "help": "Max seconds to wait for the image response" } ], "columns": [ "Status", "File", "Link" ], "defaultFormat": "plain", "type": "js", "modulePath": "qwen/image.js", "sourceFile": "qwen/image.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "login", "description": "Open qwen login and wait until the browser session is authenticated", "access": "write", "domain": "qwen.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "qwen/auth.js", "sourceFile": "qwen/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "qwen", "name": "new", "description": "Start a new conversation in Qianwen", "access": "write", "domain": "www.qianwen.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status" ], "type": "js", "modulePath": "qwen/new.js", "sourceFile": "qwen/new.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "read", "description": "Read messages in the current Qianwen conversation", "access": "read", "domain": "www.qianwen.com", "strategy": "cookie", "browser": true, "args": [ { "name": "markdown", "type": "boolean", "default": false, "required": false, "help": "Emit assistant replies as markdown" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "qwen/read.js", "sourceFile": "qwen/read.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "send", "description": "Fire-and-forget: send a prompt to Qianwen without waiting for the reply", "access": "write", "domain": "www.qianwen.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send to Qianwen" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" }, { "name": "think", "type": "boolean", "default": false, "required": false, "help": "Enable 深度思考 (DeepThink)" }, { "name": "research", "type": "boolean", "default": false, "required": false, "help": "Enable 深度研究 (DeepResearch)" } ], "columns": [ "Status", "Prompt" ], "type": "js", "modulePath": "qwen/send.js", "sourceFile": "qwen/send.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "status", "description": "Check Qianwen page availability, login state, current session and model", "access": "read", "domain": "www.qianwen.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Login", "Model", "SessionId", "Url" ], "type": "js", "modulePath": "qwen/status.js", "sourceFile": "qwen/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "qwen", "name": "whoami", "description": "Show the current logged-in qwen account", "access": "read", "domain": "qwen.ai", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "qwen/auth.js", "sourceFile": "qwen/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "reddit", "name": "comment", "description": "Post a comment on a Reddit post", "access": "write", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "post-id", "type": "string", "required": true, "positional": true, "help": "Post ID (e.g. 1abc123) or fullname (t3_xxx)" }, { "name": "text", "type": "string", "required": true, "positional": true, "help": "Comment text" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "reddit/comment.js", "sourceFile": "reddit/comment.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "frontpage", "description": "Reddit Frontpage / r/all", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 15, "required": false, "help": "" } ], "columns": [ "title", "subreddit", "author", "upvotes", "comments", "url", "post_hint", "url_overridden_by_dest", "preview_image_url", "gallery_urls" ], "type": "js", "modulePath": "reddit/frontpage.js", "sourceFile": "reddit/frontpage.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "home", "description": "Reddit personalized home feed (Best, requires login)", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Number of posts (1–100)" } ], "columns": [ "rank", "title", "subreddit", "score", "comments", "postId", "author", "url", "post_hint", "url_overridden_by_dest", "preview_image_url", "gallery_urls" ], "type": "js", "modulePath": "reddit/home.js", "sourceFile": "reddit/home.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "hot", "description": "Reddit 热门帖子", "access": "read", "domain": "www.reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "subreddit", "type": "str", "default": "", "required": false, "help": "Subreddit name (e.g. programming). Empty for frontpage" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts" } ], "columns": [ "rank", "title", "subreddit", "score", "comments", "postId", "author", "url", "post_hint", "url_overridden_by_dest", "preview_image_url", "gallery_urls" ], "type": "js", "modulePath": "reddit/hot.js", "sourceFile": "reddit/hot.js", "navigateBefore": "https://www.reddit.com" }, { "site": "reddit", "name": "login", "description": "Open reddit login and wait until the browser session is authenticated", "access": "write", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "username", "id" ], "type": "js", "modulePath": "reddit/auth.js", "sourceFile": "reddit/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "reddit", "name": "popular", "description": "Reddit Popular posts (/r/popular)", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "rank", "id", "title", "subreddit", "score", "comments", "author", "url", "created_utc", "selftext", "post_hint", "url_overridden_by_dest", "preview_image_url", "gallery_urls" ], "type": "js", "modulePath": "reddit/popular.js", "sourceFile": "reddit/popular.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "read", "description": "Read a Reddit post and its comments", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "post-id", "type": "str", "required": true, "positional": true, "help": "Post ID (e.g. 1abc123) or full URL" }, { "name": "sort", "type": "str", "default": "best", "required": false, "help": "Comment sort: best, top, new, controversial, old, qa" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Number of top-level comments" }, { "name": "depth", "type": "int", "default": 2, "required": false, "help": "Max reply depth (1=no replies, 2=one level of replies, etc.)" }, { "name": "replies", "type": "int", "default": 5, "required": false, "help": "Max replies shown per comment at each level (sorted by score)" }, { "name": "max-length", "type": "int", "default": 2000, "required": false, "help": "Max characters per comment body (min 100)" }, { "name": "expand-more", "type": "bool", "default": false, "required": false, "help": "Follow Reddit \"more comments\" stubs by calling /api/morechildren.json" }, { "name": "expand-rounds", "type": "int", "default": 2, "required": false, "help": "Max expansion passes when --expand-more is on (1–5; each round can fan out new \"more\" stubs)" } ], "columns": [ "type", "author", "score", "text", "post_hint", "url_overridden_by_dest", "preview_image_url", "gallery_urls" ], "type": "js", "modulePath": "reddit/read.js", "sourceFile": "reddit/read.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "reply", "description": "Reply to a Reddit comment", "access": "write", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "comment-id", "type": "string", "required": true, "positional": true, "help": "Comment ID (e.g. okf3s7u) or fullname (t1_xxx)" }, { "name": "text", "type": "string", "required": true, "positional": true, "help": "Reply text" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "reddit/reply.js", "sourceFile": "reddit/reply.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "save", "description": "Save or unsave a Reddit post", "access": "write", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "post-id", "type": "string", "required": true, "positional": true, "help": "Post ID (e.g. 1abc123) or fullname (t3_xxx)" }, { "name": "undo", "type": "boolean", "default": false, "required": false, "help": "Unsave instead of save" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "reddit/save.js", "sourceFile": "reddit/save.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "saved", "description": "Browse your saved Reddit posts", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 15, "required": false, "help": "" } ], "columns": [ "title", "subreddit", "score", "comments", "url" ], "type": "js", "modulePath": "reddit/saved.js", "sourceFile": "reddit/saved.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "search", "description": "Search Reddit Posts", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "string", "required": true, "positional": true, "help": "Reddit search query" }, { "name": "subreddit", "type": "string", "default": "", "required": false, "help": "Search within a specific subreddit" }, { "name": "sort", "type": "string", "default": "relevance", "required": false, "help": "Sort order: relevance, hot, top, new, comments" }, { "name": "time", "type": "string", "default": "all", "required": false, "help": "Time filter: hour, day, week, month, year, all" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "" } ], "columns": [ "id", "title", "subreddit", "author", "score", "comments", "url", "created_utc", "selftext", "post_hint", "url_overridden_by_dest", "preview_image_url", "gallery_urls" ], "type": "js", "modulePath": "reddit/search.js", "sourceFile": "reddit/search.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "subreddit", "description": "Get posts from a specific Subreddit", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "name", "type": "string", "required": true, "positional": true, "help": "Subreddit name (no `r/` prefix; e.g. `python`)" }, { "name": "sort", "type": "string", "default": "hot", "required": false, "help": "Sorting method: hot, new, top, rising, controversial" }, { "name": "time", "type": "string", "default": "all", "required": false, "help": "Time filter for top/controversial: hour, day, week, month, year, all" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "" } ], "columns": [ "id", "title", "subreddit", "author", "upvotes", "comments", "url", "created_utc", "selftext", "post_hint", "url_overridden_by_dest", "preview_image_url", "gallery_urls" ], "type": "js", "modulePath": "reddit/subreddit.js", "sourceFile": "reddit/subreddit.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "subreddit-info", "description": "Show metadata for a Reddit subreddit (subscribers, description, created date, NSFW)", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "name", "type": "string", "required": true, "positional": true, "help": "Subreddit name (no `r/` prefix needed)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "reddit/subreddit-info.js", "sourceFile": "reddit/subreddit-info.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "subscribe", "description": "Subscribe or unsubscribe to a subreddit", "access": "write", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "subreddit", "type": "string", "required": true, "positional": true, "help": "Subreddit name (e.g. python)" }, { "name": "undo", "type": "boolean", "default": false, "required": false, "help": "Unsubscribe instead of subscribe" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "reddit/subscribe.js", "sourceFile": "reddit/subscribe.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "subscribed", "description": "List subreddits you are subscribed to", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Max subreddits to return (1-1000, auto-paginates)" } ], "columns": [ "id", "subreddit", "title", "subscribers", "description", "url" ], "type": "js", "modulePath": "reddit/subscribed.js", "sourceFile": "reddit/subscribed.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "upvote", "description": "Upvote or downvote a Reddit post", "access": "write", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "post-id", "type": "string", "required": true, "positional": true, "help": "Post ID (e.g. 1abc123) or fullname (t3_xxx)" }, { "name": "direction", "type": "string", "default": "up", "required": false, "help": "Vote direction: up, down, none" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "reddit/upvote.js", "sourceFile": "reddit/upvote.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "upvoted", "description": "Browse your upvoted Reddit posts", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 15, "required": false, "help": "" } ], "columns": [ "title", "subreddit", "score", "comments", "url" ], "type": "js", "modulePath": "reddit/upvoted.js", "sourceFile": "reddit/upvoted.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "user", "description": "View a Reddit user profile", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Reddit username (no `u/` prefix needed)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "reddit/user.js", "sourceFile": "reddit/user.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "user-comments", "description": "View a Reddit user's comment history", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Reddit username (no `u/` prefix needed)" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "" } ], "columns": [ "subreddit", "score", "body", "url" ], "type": "js", "modulePath": "reddit/user-comments.js", "sourceFile": "reddit/user-comments.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "user-posts", "description": "View a Reddit user's submitted posts", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Reddit username (no `u/` prefix needed)" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "" } ], "columns": [ "title", "subreddit", "score", "comments", "url" ], "type": "js", "modulePath": "reddit/user-posts.js", "sourceFile": "reddit/user-posts.js", "navigateBefore": "https://reddit.com" }, { "site": "reddit", "name": "whoami", "description": "Show the currently logged-in Reddit user", "access": "read", "domain": "reddit.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "field", "value" ], "type": "js", "modulePath": "reddit/whoami.js", "sourceFile": "reddit/whoami.js", "navigateBefore": "https://reddit.com" }, { "site": "rednote", "name": "comments", "description": "Read comments from a rednote note (supports nested replies)", "access": "read", "domain": "www.rednote.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note-id", "type": "str", "required": true, "positional": true, "help": "Full rednote note URL with xsec_token" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of top-level comments (max 50)" }, { "name": "with-replies", "type": "boolean", "default": false, "required": false, "help": "Include nested replies (楼中楼)" } ], "columns": [ "rank", "author", "text", "likes", "time", "is_reply", "reply_to" ], "type": "js", "modulePath": "rednote/comments.js", "sourceFile": "rednote/comments.js", "navigateBefore": false }, { "site": "rednote", "name": "download", "description": "Download images and videos from a rednote note", "access": "read", "domain": "www.rednote.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note-id", "type": "str", "required": true, "positional": true, "help": "Full rednote note URL with xsec_token" }, { "name": "output", "type": "str", "default": "./rednote-downloads", "required": false, "help": "Output directory" } ], "columns": [ "index", "type", "status", "size" ], "type": "js", "modulePath": "rednote/download.js", "sourceFile": "rednote/download.js", "navigateBefore": false }, { "site": "rednote", "name": "feed", "description": "Rednote home feed (reads hydrated Pinia store)", "access": "read", "domain": "www.rednote.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items to return" } ], "columns": [ "id", "title", "author", "likes", "type", "url" ], "type": "js", "modulePath": "rednote/feed.js", "sourceFile": "rednote/feed.js", "navigateBefore": false }, { "site": "rednote", "name": "login", "description": "Open rednote login and wait until the browser session is authenticated", "access": "write", "domain": "rednote.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "rednote/auth.js", "sourceFile": "rednote/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "rednote", "name": "note", "description": "Read note body and engagement counts from a rednote note", "access": "read", "domain": "www.rednote.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note-id", "type": "str", "required": true, "positional": true, "help": "Full rednote note URL with xsec_token" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "rednote/note.js", "sourceFile": "rednote/note.js", "navigateBefore": false }, { "site": "rednote", "name": "notifications", "description": "Rednote notifications (mentions/likes/connections)", "access": "read", "domain": "www.rednote.com", "strategy": "cookie", "browser": true, "args": [ { "name": "type", "type": "str", "default": "mentions", "required": false, "help": "Notification type: mentions, likes, or connections" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of notifications to return" } ], "columns": [ "rank", "user", "action", "content", "note", "time" ], "type": "js", "modulePath": "rednote/notifications.js", "sourceFile": "rednote/notifications.js", "navigateBefore": false }, { "site": "rednote", "name": "search", "description": "Search rednote notes", "access": "read", "domain": "www.rednote.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "likes", "published_at", "url", "author_url" ], "type": "js", "modulePath": "rednote/search.js", "sourceFile": "rednote/search.js", "navigateBefore": false }, { "site": "rednote", "name": "user", "description": "Get public notes from a rednote user profile", "access": "read", "domain": "www.rednote.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "User id or profile URL" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of notes to return" } ], "columns": [ "id", "title", "type", "likes", "url" ], "type": "js", "modulePath": "rednote/user.js", "sourceFile": "rednote/user.js", "navigateBefore": false }, { "site": "rednote", "name": "whoami", "description": "Show the current logged-in rednote account", "access": "read", "domain": "rednote.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "rednote/auth.js", "sourceFile": "rednote/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "rest-countries", "name": "country", "description": "Look up countries by name (common / official, substring match)", "access": "read", "domain": "restcountries.com", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Country name (e.g. \"japan\", \"united kingdom\")" }, { "name": "limit", "type": "int", "default": 25, "required": false, "help": "Max rows (1-250)" } ], "columns": [ "rank", "commonName", "officialName", "cca2", "cca3", "ccn3", "capital", "region", "subregion", "population", "area", "languages", "currencies", "latitude", "longitude", "timezones", "independent", "unMember", "landlocked", "flag", "url" ], "type": "js", "modulePath": "rest-countries/country.js", "sourceFile": "rest-countries/country.js" }, { "site": "rest-countries", "name": "region", "description": "List countries in a region (africa / americas / asia / europe / oceania / antarctic)", "access": "read", "domain": "restcountries.com", "strategy": "public", "browser": false, "args": [ { "name": "region", "type": "str", "required": true, "positional": true, "help": "Region name (case-insensitive)" }, { "name": "limit", "type": "int", "default": 250, "required": false, "help": "Max rows (1-250)" } ], "columns": [ "rank", "commonName", "officialName", "cca2", "cca3", "ccn3", "capital", "region", "subregion", "population", "area", "languages", "currencies", "latitude", "longitude", "timezones", "independent", "unMember", "landlocked", "flag", "url" ], "type": "js", "modulePath": "rest-countries/region.js", "sourceFile": "rest-countries/region.js" }, { "site": "reuters", "name": "article-detail", "description": "Reuters 路透社文章详情:标题/作者/正文文本", "access": "read", "domain": "www.reuters.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "Reuters article URL (must be on reuters.com)" } ], "columns": [ "title", "date", "section", "section_path", "authors", "description", "word_count", "url", "body" ], "type": "js", "modulePath": "reuters/article-detail.js", "sourceFile": "reuters/article-detail.js", "navigateBefore": "https://www.reuters.com" }, { "site": "reuters", "name": "login", "description": "Open reuters login and wait until the browser session is authenticated", "access": "write", "domain": "reuters.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "subscribed" ], "type": "js", "modulePath": "reuters/auth.js", "sourceFile": "reuters/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "reuters", "name": "search", "description": "Reuters 路透社新闻搜索", "access": "read", "domain": "www.reuters.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results (1-40)" } ], "columns": [ "rank", "title", "date", "section", "section_path", "authors", "url" ], "type": "js", "modulePath": "reuters/search.js", "sourceFile": "reuters/search.js", "navigateBefore": "https://www.reuters.com" }, { "site": "reuters", "name": "whoami", "description": "Show the current logged-in reuters account", "access": "read", "domain": "reuters.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "subscribed" ], "type": "js", "modulePath": "reuters/auth.js", "sourceFile": "reuters/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "rfc", "name": "rfc", "description": "Single IETF RFC metadata (title, abstract, working group, authors, std level)", "access": "read", "domain": "datatracker.ietf.org", "strategy": "public", "browser": false, "args": [ { "name": "number", "type": "int", "required": true, "positional": true, "help": "RFC number (e.g. 9000, 791, 2616)" } ], "columns": [ "rfc", "title", "state", "stdLevel", "group", "groupType", "pages", "published", "authors", "abstract", "rfcEditorUrl", "url" ], "type": "js", "modulePath": "rfc/rfc.js", "sourceFile": "rfc/rfc.js" }, { "site": "rubygems", "name": "gem", "description": "Fetch a RubyGems.org gem's metadata (version, downloads, license, links)", "access": "read", "domain": "rubygems.org", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Gem name (e.g. \"rails\", \"sidekiq\")" } ], "columns": [ "gem", "version", "releasedAt", "downloads", "versionDownloads", "license", "authors", "homepage", "source", "bugs", "info", "url" ], "type": "js", "modulePath": "rubygems/gem.js", "sourceFile": "rubygems/gem.js" }, { "site": "rubygems", "name": "search", "description": "Search RubyGems.org gems by keyword", "access": "read", "domain": "rubygems.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"rails\", \"redis\")" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max gems (1-100, single RubyGems page)" } ], "columns": [ "rank", "gem", "version", "downloads", "license", "authors", "info", "url" ], "type": "js", "modulePath": "rubygems/search.js", "sourceFile": "rubygems/search.js" }, { "site": "semanticscholar", "name": "citations", "description": "List papers that cite a Semantic Scholar paper (paginated)", "access": "read", "domain": "api.semanticscholar.org", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "paperId (40-char hex), DOI, arXiv id, or prefixed id" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max citing papers (1-1000, single Semantic Scholar page)" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Page offset (0-based)" } ], "columns": [ "rank", "paperId", "doi", "title", "year", "firstAuthor", "citationCount", "url" ], "type": "js", "modulePath": "semanticscholar/citations.js", "sourceFile": "semanticscholar/citations.js" }, { "site": "semanticscholar", "name": "paper", "description": "Semantic Scholar paper detail (citation graph + AI tldr) by paperId, DOI, or arXiv id", "access": "read", "domain": "api.semanticscholar.org", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "paperId (40-char hex), DOI, arXiv id, or prefixed id (e.g. \"ARXIV:1706.03762\", \"PMID:12345\")" } ], "columns": [ "paperId", "doi", "title", "year", "firstAuthor", "citationCount", "influentialCitationCount", "referenceCount", "tldr", "url" ], "type": "js", "modulePath": "semanticscholar/paper.js", "sourceFile": "semanticscholar/paper.js" }, { "site": "semanticscholar", "name": "recommendations", "description": "Semantic Scholar AI-curated related papers for a paperId, DOI, or arXiv id", "access": "read", "domain": "api.semanticscholar.org", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "paperId (40-char hex), DOI, arXiv id, or prefixed id" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max recommendations (1-500)" } ], "columns": [ "rank", "paperId", "doi", "title", "year", "firstAuthor", "citationCount", "url" ], "type": "js", "modulePath": "semanticscholar/recommendations.js", "sourceFile": "semanticscholar/recommendations.js" }, { "site": "semanticscholar", "name": "search", "description": "Search Semantic Scholar papers by free text", "access": "read", "domain": "api.semanticscholar.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search text (e.g. \"attention is all you need\", \"diffusion model\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max papers (1-100, single Semantic Scholar page)" } ], "columns": [ "rank", "paperId", "doi", "title", "year", "firstAuthor", "citationCount", "url" ], "type": "js", "modulePath": "semanticscholar/search.js", "sourceFile": "semanticscholar/search.js" }, { "site": "sinablog", "name": "article", "description": "获取新浪博客单篇文章详情", "access": "read", "domain": "blog.sina.com.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "文章URL(如 https://blog.sina.com.cn/s/blog_xxx.html)" } ], "columns": [ "title", "author", "date", "category", "readCount", "commentCount" ], "type": "js", "modulePath": "sinablog/article.js", "sourceFile": "sinablog/article.js", "navigateBefore": "https://blog.sina.com.cn" }, { "site": "sinablog", "name": "hot", "description": "获取新浪博客热门文章/推荐", "access": "read", "domain": "blog.sina.com.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的文章数量" } ], "columns": [ "rank", "title", "author", "date", "readCount", "url" ], "type": "js", "modulePath": "sinablog/hot.js", "sourceFile": "sinablog/hot.js", "navigateBefore": "https://blog.sina.com.cn" }, { "site": "sinablog", "name": "search", "description": "搜索新浪博客文章(通过新浪搜索)", "access": "read", "domain": "blog.sina.com.cn", "strategy": "public", "browser": false, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的文章数量" } ], "columns": [ "rank", "title", "author", "date", "description", "url" ], "type": "js", "modulePath": "sinablog/search.js", "sourceFile": "sinablog/search.js" }, { "site": "sinablog", "name": "user", "description": "获取新浪博客用户的文章列表", "access": "read", "domain": "blog.sina.com.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "uid", "type": "str", "required": true, "positional": true, "help": "新浪博客用户ID(如 1234567890)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的文章数量" } ], "columns": [ "rank", "title", "author", "date", "readCount", "url" ], "type": "js", "modulePath": "sinablog/user.js", "sourceFile": "sinablog/user.js", "navigateBefore": "https://blog.sina.com.cn" }, { "site": "sinafinance", "name": "news", "description": "新浪财经 7x24 小时实时快讯", "access": "read", "domain": "app.cj.sina.com.cn", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (max 50)" }, { "name": "type", "type": "int", "default": 0, "required": false, "help": "News type: 0=全部 1=A股 2=宏观 3=公司 4=数据 5=市场 6=国际 7=观点 8=央行 9=其它" } ], "columns": [ "id", "time", "content", "views" ], "type": "js", "modulePath": "sinafinance/news.js", "sourceFile": "sinafinance/news.js" }, { "site": "sinafinance", "name": "rolling-news", "description": "新浪财经滚动新闻", "access": "read", "domain": "finance.sina.com.cn/roll", "strategy": "cookie", "browser": true, "args": [], "columns": [ "column", "title", "date", "url" ], "type": "js", "modulePath": "sinafinance/rolling-news.js", "sourceFile": "sinafinance/rolling-news.js", "navigateBefore": "https://finance.sina.com.cn/roll" }, { "site": "sinafinance", "name": "stock", "description": "新浪财经行情(A股/港股/美股)", "access": "read", "domain": "suggest3.sinajs.cn,hq.sinajs.cn", "strategy": "public", "browser": false, "args": [ { "name": "key", "type": "string", "required": true, "positional": true, "help": "Stock name or code (e.g. 贵州茅台, 腾讯控股, AAPL)" }, { "name": "market", "type": "string", "default": "auto", "required": false, "help": "Market: cn, hk, us, auto (default: auto searches cn → hk → us)" } ], "columns": [ "Symbol", "Name", "Price", "Change", "ChangePercent", "Open", "High", "Low", "Volume", "MarketCap" ], "type": "js", "modulePath": "sinafinance/stock.js", "sourceFile": "sinafinance/stock.js" }, { "site": "sinafinance", "name": "stock-rank", "description": "新浪财经热搜榜", "access": "read", "domain": "finance.sina.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "market", "type": "string", "default": "cn", "required": false, "help": "Market: cn (A股), hk (港股), us (美股), wh (外汇), ft (期货)", "choices": [ "cn", "hk", "us", "wh", "ft" ] } ], "columns": [ "rank", "name", "symbol", "market", "price", "change", "url" ], "type": "js", "modulePath": "sinafinance/stock-rank.js", "sourceFile": "sinafinance/stock-rank.js", "navigateBefore": false }, { "site": "slock", "name": "attachment-download", "description": "Download an attachment to a local file. Resolves a signed CDN URL in the page, then fetches bytes node-side (no CORS).", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "attachmentId", "type": "str", "required": true, "positional": true, "help": "Attachment UUID" }, { "name": "out", "type": "str", "required": false, "help": "Local path to write to. Defaults to ./.bin" }, { "name": "server", "type": "str", "required": false, "help": "Override active server slug" } ], "columns": [ "attachmentId", "out", "sizeBytes" ], "type": "js", "modulePath": "slock/attachment-download.js", "sourceFile": "slock/attachment-download.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "attachment-upload", "description": "Upload a local file to Slock attachments. Prints the attachmentId for use with `message-send --attach`.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "file", "type": "str", "required": true, "positional": true, "help": "Local file path to upload (single file; max 50 MB)" }, { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name — server requires the attachment be scoped to a channel" }, { "name": "server", "type": "str", "required": false, "help": "Override active server slug" } ], "columns": [ "attachmentId", "filename", "mimeType", "sizeBytes" ], "type": "js", "modulePath": "slock/attachment-upload.js", "sourceFile": "slock/attachment-upload.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "attachment-url", "description": "Get a short-lived signed CDN URL for an attachment (does not download bytes).", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "attachmentId", "type": "str", "required": true, "positional": true, "help": "Attachment UUID" }, { "name": "server", "type": "str", "required": false, "help": "Override active server slug" } ], "columns": [ "attachmentId", "url", "expiresAt" ], "type": "js", "modulePath": "slock/attachment-url.js", "sourceFile": "slock/attachment-url.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "bookmark-add", "description": "Bookmark a message (POST /channels/saved). Requires full messageId UUID.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "messageId", "type": "str", "required": true, "positional": true, "help": "Full messageId UUID (short ids rejected)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "messageId", "saved" ], "type": "js", "modulePath": "slock/bookmark-add.js", "sourceFile": "slock/bookmark-add.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "bookmark-list", "description": "List bookmarks (saved messages) in the active server", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max results" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Offset" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "messageId", "content", "savedAt" ], "type": "js", "modulePath": "slock/bookmark-list.js", "sourceFile": "slock/bookmark-list.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "bookmark-remove", "description": "Remove a bookmark (DELETE /channels/saved/:messageId). 404 is treated as already-removed.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "messageId", "type": "str", "required": true, "positional": true, "help": "Full messageId UUID" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "messageId", "removed", "note" ], "type": "js", "modulePath": "slock/bookmark-remove.js", "sourceFile": "slock/bookmark-remove.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-archive", "description": "Archive a channel — admin only (POST /channels/:id/archive)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "channel", "id", "archivedAt", "result" ], "type": "js", "modulePath": "slock/channel-archive.js", "sourceFile": "slock/channel-archive.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-create", "description": "Create a channel — admin only (POST /channels/). Public unless --private.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Channel name" }, { "name": "description", "type": "str", "required": false, "help": "Channel description / topic (≤500 chars)" }, { "name": "private", "type": "bool", "default": false, "required": false, "help": "Create a private channel instead of public" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "name", "type", "result" ], "type": "js", "modulePath": "slock/channel-create.js", "sourceFile": "slock/channel-create.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-files", "description": "List files shared in a channel (GET /channels/:id/files)", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max files" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "filename", "mimeType", "sizeBytes", "messageId", "createdAt" ], "type": "js", "modulePath": "slock/channel-files.js", "sourceFile": "slock/channel-files.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-info", "description": "Show one channel's details (GET /channels/:id)", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "name", "type", "topic", "joined", "archivedAt" ], "type": "js", "modulePath": "slock/channel-info.js", "sourceFile": "slock/channel-info.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-join", "description": "Join a public channel (POST /channels/:id/join)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "channel", "id", "archivedAt", "result" ], "type": "js", "modulePath": "slock/channel-join.js", "sourceFile": "slock/channel-join.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-leave", "description": "Leave a channel (POST /channels/:id/leave)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "channel", "id", "archivedAt", "result" ], "type": "js", "modulePath": "slock/channel-leave.js", "sourceFile": "slock/channel-leave.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-list", "description": "List channels in the active slock server", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "server", "type": "str", "required": false, "help": "Override active server (slug or id) for this call" } ], "columns": [ "id", "name", "topic" ], "type": "js", "modulePath": "slock/channel-list.js", "sourceFile": "slock/channel-list.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-mark", "description": "Mark a channel read (default), read up to --seq, or --unread.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "seq", "type": "int", "required": false, "help": "Mark read up to this seq (omit for read-all)" }, { "name": "unread", "type": "bool", "default": false, "required": false, "help": "Mark the channel unread instead of read" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "channel", "action", "result" ], "type": "js", "modulePath": "slock/channel-mark.js", "sourceFile": "slock/channel-mark.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-members", "description": "List members of a channel", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "server", "type": "str", "required": false, "help": "Override active server (slug or id)" } ], "columns": [ "userId", "name", "kind", "role" ], "type": "js", "modulePath": "slock/channel-members.js", "sourceFile": "slock/channel-members.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "channel-unarchive", "description": "Unarchive a channel — admin only (POST /channels/:id/unarchive). #name lookups exclude archived channels; pass the channelId UUID for archived ones.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "channel", "id", "archivedAt", "result" ], "type": "js", "modulePath": "slock/channel-unarchive.js", "sourceFile": "slock/channel-unarchive.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "dm-list", "description": "List DM channels in the active server (GET /channels/dm)", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "server", "type": "str", "required": false, "help": "Override active server (slug or id)" } ], "columns": [ "channelId", "peerName", "peerId", "createdAt" ], "type": "js", "modulePath": "slock/dm-list.js", "sourceFile": "slock/dm-list.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "inbox", "description": "List unified inbox items (channels, DMs, followed threads) that need attention.", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "filter", "type": "str", "default": "all", "required": false, "help": "all | unread | mentions" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max items (server caps at 100)" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "Pagination offset" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "kind", "id", "name", "unreadCount", "hasMention", "lastActivityAt", "preview" ], "type": "js", "modulePath": "slock/inbox.js", "sourceFile": "slock/inbox.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "inbox-done", "description": "Mark one chat as done / clear it from the inbox (POST /channels/inbox/done)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "channel", "result" ], "type": "js", "modulePath": "slock/inbox-done.js", "sourceFile": "slock/inbox-done.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "inbox-read-all", "description": "Mark the entire inbox as read (POST /channels/inbox/read-all)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "result", "markedCount" ], "type": "js", "modulePath": "slock/inbox-read-all.js", "sourceFile": "slock/inbox-read-all.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "login", "description": "Open slock login and wait until the browser session is authenticated", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "id", "name", "email" ], "type": "js", "modulePath": "slock/whoami.js", "sourceFile": "slock/whoami.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "slock", "name": "message-read", "description": "Read messages in a channel or thread. Thread form: \"#channel:msgIdOrShort\". Use --after seq|UUID for cursor.", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID, \"#name\", or \"#channel:msgIdOrShort\"" }, { "name": "after", "type": "str", "required": false, "help": "Cursor: seq number or messageId UUID (exclusive)" }, { "name": "before", "type": "str", "required": false, "help": "seq to page before" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max messages" }, { "name": "no-threads", "type": "bool", "default": false, "required": false, "help": "Skip /threads enrichment" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "seq", "createdAt", "senderName", "content", "threadChannelId", "replyCount", "unreadCount", "lastReplyAt" ], "type": "js", "modulePath": "slock/message-read.js", "sourceFile": "slock/message-read.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "message-search", "description": "Search messages", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "channel", "type": "str", "required": false, "help": "Restrict to a channel (UUID or #name)" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max results" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "channelId", "createdAt", "senderName", "content" ], "type": "js", "modulePath": "slock/message-search.js", "sourceFile": "slock/message-search.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "message-send", "description": "Send a message to a channel, DM, or thread (content sent verbatim)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "\"#channel\", \"#channel:msgIdOrShort\", \"dm:@name\", \"dm:\", or channel UUID" }, { "name": "content", "type": "str", "required": true, "positional": true, "help": "Message body (sent verbatim, no marker)" }, { "name": "dry-run", "type": "bool", "default": false, "required": false, "help": "Print the planned payload without sending" }, { "name": "as-task", "type": "bool", "default": false, "required": false, "help": "Create the message as a task (asTask)" }, { "name": "attach", "type": "str", "required": false, "help": "Comma-separated attachmentId UUIDs (upload separately first)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server (slug or id)" } ], "columns": [ "target", "channelId", "content", "result", "messageId" ], "type": "js", "modulePath": "slock/message-send.js", "sourceFile": "slock/message-send.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "reaction-add", "description": "Add an emoji reaction to a message (POST /messages/:id/reactions). Idempotent server-side.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "messageId", "type": "str", "required": true, "positional": true, "help": "Full messageId UUID (short ids rejected)" }, { "name": "emoji", "type": "str", "required": true, "positional": true, "help": "A single unicode emoji, e.g. 👍" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "messageId", "emoji", "result" ], "type": "js", "modulePath": "slock/reaction-add.js", "sourceFile": "slock/reaction-add.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "reaction-remove", "description": "Remove your emoji reaction from a message (DELETE /messages/:id/reactions).", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "messageId", "type": "str", "required": true, "positional": true, "help": "Full messageId UUID (short ids rejected)" }, { "name": "emoji", "type": "str", "required": true, "positional": true, "help": "The unicode emoji to remove, e.g. 👍" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "messageId", "emoji", "result" ], "type": "js", "modulePath": "slock/reaction-remove.js", "sourceFile": "slock/reaction-remove.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "server-list", "description": "List slock servers you belong to; marks active per localStorage slug", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [], "columns": [ "id", "slug", "name", "active" ], "type": "js", "modulePath": "slock/server-list.js", "sourceFile": "slock/server-list.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "server-use", "description": "Set the active slock server (writes localStorage.slock_last_server_slug)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "server slug, \"#slug\", or UUID id" } ], "columns": [ "id", "slug", "name", "written" ], "type": "js", "modulePath": "slock/server-use.js", "sourceFile": "slock/server-use.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-claim", "description": "Claim a chat task (PATCH /tasks/:id/claim). Requires full task UUID (= message id).", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "taskId", "type": "str", "required": true, "positional": true, "help": "Full task UUID (= message id; short ids rejected)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "taskId", "taskStatus", "assigneeId", "taskNumber" ], "type": "js", "modulePath": "slock/task-claim.js", "sourceFile": "slock/task-claim.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-convert", "description": "Convert a message into a chat task (POST /tasks/convert-message). Accepts a message UUID or \"#channel:shortId\".", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "messageId", "type": "str", "required": true, "positional": true, "help": "Full message UUID, or \"#channel:shortId\" (short id expanded via /messages/context)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "taskNumber", "title", "taskStatus", "channelId" ], "type": "js", "modulePath": "slock/task-convert.js", "sourceFile": "slock/task-convert.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-create", "description": "Create a task in a channel (single title; batch 1-50 is server-supported but client surface is single — see backlog R4).", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "title", "type": "str", "required": true, "positional": true, "help": "Task title (single; batch TODO via R4)" }, { "name": "desc", "type": "str", "required": false, "help": "Optional description body for the task" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "taskNumber", "title", "taskStatus", "channelId" ], "type": "js", "modulePath": "slock/task-create.js", "sourceFile": "slock/task-create.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-delete", "description": "Delete a chat task (DELETE /tasks/:taskId). Requires --confirm — destructive, irreversible.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "taskId", "type": "str", "required": true, "positional": true, "help": "Full task UUID (= message id; short ids rejected)" }, { "name": "confirm", "type": "bool", "default": false, "required": false, "help": "Required acknowledgement: deletion is irreversible" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "taskId", "deleted" ], "type": "js", "modulePath": "slock/task-delete.js", "sourceFile": "slock/task-delete.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-get", "description": "Fetch a task by channel + taskNumber (GET /tasks/channel/:channelId/number/:taskNumber).", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "number", "type": "str", "required": true, "positional": true, "help": "taskNumber (per-channel integer, as shown in \"task #N\")" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "taskNumber", "title", "taskStatus", "assigneeId" ], "type": "js", "modulePath": "slock/task-get.js", "sourceFile": "slock/task-get.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-list", "description": "List tasks (chat tasks = messages with task fields) attached to a channel. Optional --status filter.", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "channelId UUID or #name" }, { "name": "status", "type": "str", "required": false, "help": "Filter by status: todo|in_progress|in_review|done|closed" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "taskNumber", "title", "taskStatus", "assigneeId" ], "type": "js", "modulePath": "slock/task-list.js", "sourceFile": "slock/task-list.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-list-server", "description": "List tasks across all channels in the active server (GET /tasks/server). Optional --status filter.", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "status", "type": "str", "required": false, "help": "Filter by status: todo|in_progress|in_review|done|closed" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "id", "taskNumber", "title", "taskStatus", "channelId", "assigneeId" ], "type": "js", "modulePath": "slock/task-list-server.js", "sourceFile": "slock/task-list-server.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-status", "description": "Set a task's status (PATCH /tasks/:taskId/status, body {status}). One of todo|in_progress|in_review|done|closed.", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "taskId", "type": "str", "required": true, "positional": true, "help": "Full task UUID (= message id; short ids rejected)" }, { "name": "status", "type": "str", "required": true, "positional": true, "help": "One of: todo|in_progress|in_review|done|closed" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "taskId", "taskStatus", "assigneeId", "taskNumber" ], "type": "js", "modulePath": "slock/task-status.js", "sourceFile": "slock/task-status.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "task-unclaim", "description": "Release ownership of a chat task (PATCH /tasks/:id/unclaim).", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "taskId", "type": "str", "required": true, "positional": true, "help": "Full task UUID (= message id; short ids rejected)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "taskId", "taskStatus", "assigneeId", "taskNumber" ], "type": "js", "modulePath": "slock/task-unclaim.js", "sourceFile": "slock/task-unclaim.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "thread-done", "description": "Mark a thread as done / hide it from the active list (POST /channels/threads/done)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "threadChannelId", "type": "str", "required": true, "positional": true, "help": "Thread channel UUID (from thread-list / message-read)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "threadChannelId", "result" ], "type": "js", "modulePath": "slock/thread-done.js", "sourceFile": "slock/thread-done.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "thread-follow", "description": "Follow the thread on a parent message (POST /channels/threads/follow)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "parentMessageId", "type": "str", "required": true, "positional": true, "help": "Full parent messageId UUID (short ids rejected)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "parentMessageId", "threadChannelId", "result" ], "type": "js", "modulePath": "slock/thread-follow.js", "sourceFile": "slock/thread-follow.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "thread-list", "description": "List followed threads in the active server (GET /channels/threads/followed)", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "threadChannelId", "parentMessageId", "parentChannelName", "unreadCount", "replyCount", "lastReplyAt" ], "type": "js", "modulePath": "slock/thread-list.js", "sourceFile": "slock/thread-list.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "thread-undone", "description": "Restore a done thread to the active list (POST /channels/threads/undone)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "threadChannelId", "type": "str", "required": true, "positional": true, "help": "Thread channel UUID (from thread-list / message-read)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "threadChannelId", "result" ], "type": "js", "modulePath": "slock/thread-undone.js", "sourceFile": "slock/thread-undone.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "thread-unfollow", "description": "Stop following a thread (POST /channels/threads/unfollow)", "access": "write", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [ { "name": "threadChannelId", "type": "str", "required": true, "positional": true, "help": "Thread channel UUID (from thread-list / message-read)" }, { "name": "server", "type": "str", "required": false, "help": "Override active server" } ], "columns": [ "threadChannelId", "result" ], "type": "js", "modulePath": "slock/thread-unfollow.js", "sourceFile": "slock/thread-unfollow.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "unread-summary", "description": "Global unread counts across every server you belong to.", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [], "columns": [ "serverId", "slug", "name", "unreadCount" ], "type": "js", "modulePath": "slock/unread-summary.js", "sourceFile": "slock/unread-summary.js", "navigateBefore": "https://app.slock.ai", "siteSession": "persistent" }, { "site": "slock", "name": "whoami", "description": "Show the current logged-in slock account", "access": "read", "domain": "app.slock.ai", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "id", "name", "email" ], "type": "js", "modulePath": "slock/whoami.js", "sourceFile": "slock/whoami.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "smzdm", "name": "search", "description": "什么值得买搜索好价", "access": "read", "domain": "www.smzdm.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "price", "mall", "updated_at", "zhi_count", "buzhi_count", "favorite_count", "comments", "url" ], "type": "js", "modulePath": "smzdm/search.js", "sourceFile": "smzdm/search.js", "navigateBefore": "https://www.smzdm.com" }, { "site": "spotify", "name": "auth", "description": "Authenticate with Spotify (OAuth — run once)", "access": "write", "strategy": "public", "browser": false, "args": [], "columns": [ "status" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "next", "description": "Skip to next track", "access": "write", "strategy": "public", "browser": false, "args": [], "columns": [ "status" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "pause", "description": "Pause playback", "access": "write", "strategy": "public", "browser": false, "args": [], "columns": [ "status" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "play", "description": "Resume playback or search and play a track/artist", "access": "write", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "default": "", "required": false, "positional": true, "help": "Track or artist to play (optional)" } ], "columns": [ "track", "artist", "status" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "prev", "description": "Skip to previous track", "access": "write", "strategy": "public", "browser": false, "args": [], "columns": [ "status" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "queue", "description": "Add a track to the playback queue", "access": "write", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Track to add to queue" } ], "columns": [ "track", "artist", "status" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "repeat", "description": "Set repeat mode (off / track / context)", "access": "write", "strategy": "public", "browser": false, "args": [ { "name": "mode", "type": "str", "default": "context", "required": false, "positional": true, "help": "off / track / context", "choices": [ "off", "track", "context" ] } ], "columns": [ "repeat" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "search", "description": "Search for tracks", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results (default: 10)" } ], "columns": [ "track", "artist", "album", "uri" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "shuffle", "description": "Toggle shuffle on/off", "access": "write", "strategy": "public", "browser": false, "args": [ { "name": "state", "type": "str", "default": "on", "required": false, "positional": true, "help": "on or off", "choices": [ "on", "off" ] } ], "columns": [ "shuffle" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "status", "description": "Show current playback status", "access": "read", "strategy": "public", "browser": false, "args": [], "columns": [ "track", "artist", "album", "status", "progress" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "spotify", "name": "volume", "description": "Set playback volume (0-100)", "access": "write", "strategy": "public", "browser": false, "args": [ { "name": "level", "type": "int", "default": 50, "required": true, "positional": true, "help": "Volume 0–100" } ], "columns": [ "volume" ], "type": "js", "modulePath": "spotify/spotify.js", "sourceFile": "spotify/spotify.js" }, { "site": "stackoverflow", "name": "bounties", "description": "Active bounties on Stack Overflow", "access": "read", "domain": "stackoverflow.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max number of results" } ], "columns": [ "rank", "id", "bounty", "title", "score", "answers", "views", "is_answered", "tags", "author", "creation_date", "url" ], "type": "js", "modulePath": "stackoverflow/bounties.js", "sourceFile": "stackoverflow/bounties.js" }, { "site": "stackoverflow", "name": "hot", "description": "Hot Stack Overflow questions", "access": "read", "domain": "stackoverflow.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max number of results" } ], "columns": [ "rank", "id", "title", "score", "answers", "views", "is_answered", "tags", "author", "creation_date", "url" ], "type": "js", "modulePath": "stackoverflow/hot.js", "sourceFile": "stackoverflow/hot.js" }, { "site": "stackoverflow", "name": "read", "description": "Read a Stack Overflow question with answers and comments", "access": "read", "domain": "stackoverflow.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Stack Overflow question id (numeric, e.g. 79935770)" }, { "name": "answers-limit", "type": "int", "default": 10, "required": false, "help": "Max answers to include (1-100; accepted answer always included first)" }, { "name": "comments-limit", "type": "int", "default": 5, "required": false, "help": "Max comments per question/answer (1-100)" }, { "name": "max-length", "type": "int", "default": 4000, "required": false, "help": "Max characters per body / answer / comment (min 100)" } ], "columns": [ "type", "author", "score", "accepted", "text" ], "type": "js", "modulePath": "stackoverflow/read.js", "sourceFile": "stackoverflow/read.js" }, { "site": "stackoverflow", "name": "related", "description": "List Stack Overflow questions related to a given question id.", "access": "read", "domain": "stackoverflow.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Stack Overflow question id (numeric, e.g. 79935770)." }, { "name": "sort", "type": "string", "default": "rank", "required": false, "help": "Sort key: rank, activity, votes, creation (rank = SO relevance default)." }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max related questions (1-100)." } ], "columns": [ "rank", "id", "title", "score", "answers", "views", "isAnswered", "tags", "author", "createdAt", "lastActivityAt", "url" ], "type": "js", "modulePath": "stackoverflow/related.js", "sourceFile": "stackoverflow/related.js" }, { "site": "stackoverflow", "name": "search", "description": "Search Stack Overflow questions", "access": "read", "domain": "stackoverflow.com", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "string", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max number of results" } ], "columns": [ "rank", "id", "title", "score", "answers", "views", "is_answered", "tags", "author", "creation_date", "url" ], "type": "js", "modulePath": "stackoverflow/search.js", "sourceFile": "stackoverflow/search.js" }, { "site": "stackoverflow", "name": "tag", "description": "List Stack Overflow questions tagged with a given tag (most active first).", "access": "read", "domain": "stackoverflow.com", "strategy": "public", "browser": false, "args": [ { "name": "tag", "type": "string", "required": true, "positional": true, "help": "Tag slug (e.g. python, rust, typescript)." }, { "name": "sort", "type": "string", "default": "activity", "required": false, "help": "Sort key: activity, votes, creation, hot, week, month" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max questions to return (max 100)." } ], "columns": [ "rank", "id", "title", "score", "answers", "views", "isAnswered", "tags", "author", "createdAt", "lastActivityAt", "url" ], "type": "js", "modulePath": "stackoverflow/tag.js", "sourceFile": "stackoverflow/tag.js" }, { "site": "stackoverflow", "name": "unanswered", "description": "Top voted unanswered questions on Stack Overflow", "access": "read", "domain": "stackoverflow.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max number of results" } ], "columns": [ "rank", "id", "title", "score", "answers", "views", "tags", "author", "creation_date", "url" ], "type": "js", "modulePath": "stackoverflow/unanswered.js", "sourceFile": "stackoverflow/unanswered.js" }, { "site": "stackoverflow", "name": "user", "description": "Find Stack Overflow users by display name (highest reputation first).", "access": "read", "domain": "stackoverflow.com", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "string", "required": true, "positional": true, "help": "Display name (or substring) to search." }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max users to return (max 100)." } ], "columns": [ "userId", "displayName", "reputation", "goldBadges", "silverBadges", "bronzeBadges", "location", "createdAt", "lastAccessAt", "url" ], "type": "js", "modulePath": "stackoverflow/user.js", "sourceFile": "stackoverflow/user.js" }, { "site": "steam", "name": "app", "description": "Steam storefront detail for a single app id", "access": "read", "domain": "store.steampowered.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Numeric Steam app id (e.g. \"620\" for Portal 2)" }, { "name": "currency", "type": "str", "default": "us", "required": false, "help": "Storefront country code (e.g. us / cn / jp / de)" } ], "columns": [ "id", "name", "type", "isFree", "releaseDate", "developers", "publishers", "price", "currency", "metacritic", "recommendations", "genres", "categories", "shortDescription", "website", "url" ], "type": "js", "modulePath": "steam/app.js", "sourceFile": "steam/app.js" }, { "site": "steam", "name": "search", "description": "Search the Steam storefront by name keyword", "access": "read", "domain": "store.steampowered.com", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (e.g. \"portal\", \"stardew\")" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (1-50)" }, { "name": "currency", "type": "str", "default": "us", "required": false, "help": "Storefront country code (e.g. us / cn / jp / de)" } ], "columns": [ "rank", "id", "name", "price", "currency", "metascore", "platforms", "url" ], "type": "js", "modulePath": "steam/search.js", "sourceFile": "steam/search.js" }, { "site": "steam", "name": "top-sellers", "description": "Steam top selling games", "access": "read", "domain": "store.steampowered.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of games" } ], "columns": [ "rank", "name", "price", "discount", "url" ], "type": "js", "modulePath": "steam/top-sellers.js", "sourceFile": "steam/top-sellers.js" }, { "site": "substack", "name": "feed", "description": "Substack 热门文章 Feed", "access": "read", "domain": "substack.com", "strategy": "cookie", "browser": true, "args": [ { "name": "category", "type": "str", "default": "all", "required": false, "help": "文章分类: all, tech, business, culture, politics, science, health" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的文章数量" } ], "columns": [ "rank", "title", "author", "date", "readTime", "url" ], "type": "js", "modulePath": "substack/feed.js", "sourceFile": "substack/feed.js", "navigateBefore": "https://substack.com" }, { "site": "substack", "name": "publication", "description": "获取特定 Substack Newsletter 的最新文章", "access": "read", "domain": "substack.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "Newsletter URL(如 https://example.substack.com)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回的文章数量" } ], "columns": [ "rank", "title", "date", "description", "url" ], "type": "js", "modulePath": "substack/publication.js", "sourceFile": "substack/publication.js", "navigateBefore": "https://substack.com" }, { "site": "substack", "name": "search", "description": "搜索 Substack 文章和 Newsletter", "access": "read", "domain": "substack.com", "strategy": "public", "browser": false, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "type", "type": "str", "default": "posts", "required": false, "help": "搜索类型(posts=文章, publications=Newsletter)", "choices": [ "posts", "publications" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回结果数量" } ], "columns": [ "rank", "title", "author", "date", "description", "url" ], "type": "js", "modulePath": "substack/search.js", "sourceFile": "substack/search.js" }, { "site": "suno", "name": "download", "description": "Download an existing Suno clip (MP3 + optional WAV/M4A/video) by id", "access": "write", "domain": "suno.com", "strategy": "cookie", "browser": true, "args": [ { "name": "clip", "type": "str", "required": true, "positional": true, "help": "Clip UUID or https://suno.com/song/ URL" }, { "name": "formats", "type": "str", "required": false, "help": "Comma-separated formats: mp3, m4a, wav, video, cover, metadata. Default: mp3,metadata" }, { "name": "op", "type": "str", "required": false, "help": "Output directory (default: ~/Music/suno)" }, { "name": "confirm-paid", "type": "boolean", "default": false, "required": false, "help": "Required to allow paid downloads (wav). Without it, paid formats are skipped with a warning." } ], "columns": [ "status", "clip", "title", "files", "link" ], "defaultFormat": "plain", "type": "js", "modulePath": "suno/download.js", "sourceFile": "suno/download.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "suno", "name": "generate", "description": "Generate music with Suno (V5.5 chirp-fenix by default) and download clips locally", "access": "write", "domain": "suno.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": false, "positional": true, "help": "Simple-mode description (ignored when --lyrics is provided)" }, { "name": "lyrics", "type": "str", "required": false, "help": "Custom-mode lyrics (with [Verse]/[Chorus] metatags). Triggers Custom mode." }, { "name": "tags", "type": "str", "required": false, "help": "Custom-mode style tags (genre, BPM, instruments...). Used with --lyrics." }, { "name": "negative-tags", "type": "str", "required": false, "help": "Custom-mode style exclusions (e.g. \"no vocals, no autotune\"). Used with --lyrics." }, { "name": "title", "type": "str", "required": false, "help": "Song title (default: auto-derived from prompt)" }, { "name": "instrumental", "type": "boolean", "default": false, "required": false, "help": "No vocals" }, { "name": "model", "type": "str", "required": false, "help": "Model id: chirp-fenix, chirp-bluejay, chirp-v4, chirp-v3-5. Default: chirp-fenix" }, { "name": "weirdness", "type": "str", "required": false, "help": "Creative weirdness slider (0..1). Default: 0.5" }, { "name": "style-weight", "type": "str", "required": false, "help": "Style adherence slider (0..1). Default: 0.5" }, { "name": "formats", "type": "str", "required": false, "help": "Comma-separated download formats: mp3, m4a, wav, video, cover, metadata. Default: mp3,metadata" }, { "name": "op", "type": "str", "required": false, "help": "Output directory (default: ~/Music/suno)" }, { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Max seconds to wait for clips to finish (default: 300)" }, { "name": "sd", "type": "boolean", "default": false, "required": false, "help": "Skip download; only print clip ids and Suno URLs" }, { "name": "confirm-paid", "type": "boolean", "default": false, "required": false, "help": "Required to allow paid downloads (wav). Without it, paid formats are skipped with a warning." } ], "columns": [ "status", "clip", "title", "files", "link" ], "defaultFormat": "plain", "type": "js", "modulePath": "suno/generate.js", "sourceFile": "suno/generate.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "suno", "name": "list", "description": "List recent Suno clips in your library (id, title, status, created_at, link)", "access": "read", "domain": "suno.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max clips to list (default: 20)" }, { "name": "page", "type": "int", "default": 0, "required": false, "help": "Pagination offset, 0-based (default: 0)" } ], "columns": [ "rank", "clip", "title", "status", "created", "link" ], "type": "js", "modulePath": "suno/list.js", "sourceFile": "suno/list.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "suno", "name": "login", "description": "Open suno login and wait until the browser session is authenticated", "access": "write", "domain": "suno.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "suno/auth.js", "sourceFile": "suno/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "suno", "name": "status", "description": "Check Suno login, plan, credit balance, and captcha readiness", "access": "read", "domain": "suno.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Plan", "Credits", "Monthly", "Captcha" ], "type": "js", "modulePath": "suno/status.js", "sourceFile": "suno/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "suno", "name": "whoami", "description": "Show the current logged-in suno account", "access": "read", "domain": "suno.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "suno/auth.js", "sourceFile": "suno/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "taobao", "name": "add-cart", "description": "淘宝加入购物车", "access": "write", "domain": "item.taobao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "商品 ID" }, { "name": "spec", "type": "str", "required": false, "help": "规格关键词(如 \"180度\" \"红色 XL\"),多个规格用空格分隔,模糊匹配" }, { "name": "dry-run", "type": "bool", "default": false, "required": false, "help": "仅预览,不实际加入购物车" } ], "columns": [ "status", "title", "price", "selected_spec", "item_id" ], "type": "js", "modulePath": "taobao/add-cart.js", "sourceFile": "taobao/add-cart.js", "navigateBefore": false }, { "site": "taobao", "name": "cart", "description": "查看淘宝购物车", "access": "read", "domain": "cart.taobao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量 (max 50)" } ], "columns": [ "index", "title", "price", "spec", "shop" ], "type": "js", "modulePath": "taobao/cart.js", "sourceFile": "taobao/cart.js", "navigateBefore": false }, { "site": "taobao", "name": "detail", "description": "淘宝商品详情", "access": "read", "domain": "item.taobao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "商品 ID" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "taobao/detail.js", "sourceFile": "taobao/detail.js", "navigateBefore": false }, { "site": "taobao", "name": "login", "description": "Open taobao login and wait until the browser session is authenticated", "access": "write", "domain": "taobao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "taobao/auth.js", "sourceFile": "taobao/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "taobao", "name": "reviews", "description": "淘宝商品评价", "access": "read", "domain": "item.taobao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "商品 ID" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回评价数量 (max 20)" } ], "columns": [ "rank", "user", "content", "date", "spec" ], "type": "js", "modulePath": "taobao/reviews.js", "sourceFile": "taobao/reviews.js", "navigateBefore": false }, { "site": "taobao", "name": "search", "description": "淘宝商品搜索", "access": "read", "domain": "s.taobao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "sort", "type": "str", "default": "default", "required": false, "help": "排序 (default/sale销量/price价格)", "choices": [ "default", "sale", "price" ] }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 40)" } ], "columns": [ "rank", "title", "price", "sales", "shop", "location", "item_id", "url" ], "type": "js", "modulePath": "taobao/search.js", "sourceFile": "taobao/search.js", "navigateBefore": false }, { "site": "taobao", "name": "whoami", "description": "Show the current logged-in taobao account", "access": "read", "domain": "taobao.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "taobao/auth.js", "sourceFile": "taobao/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "tdx", "name": "hot-rank", "description": "通达信热搜榜", "access": "read", "domain": "pul.tdx.com.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量" } ], "columns": [ "rank", "symbol", "name", "changePercent", "heat", "tags" ], "type": "js", "modulePath": "tdx/hot-rank.js", "sourceFile": "tdx/hot-rank.js", "navigateBefore": true }, { "site": "ths", "name": "hot-rank", "description": "同花顺热股榜", "access": "read", "domain": "eq.10jqka.com.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量" } ], "columns": [ "rank", "name", "changePercent", "heat", "tags" ], "type": "js", "modulePath": "ths/hot-rank.js", "sourceFile": "ths/hot-rank.js", "navigateBefore": true }, { "site": "tieba", "name": "hot", "description": "Tieba hot topics", "access": "read", "domain": "tieba.baidu.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items to return" } ], "columns": [ "rank", "title", "discussions", "description", "url" ], "type": "js", "modulePath": "tieba/hot.js", "sourceFile": "tieba/hot.js" }, { "site": "tieba", "name": "posts", "description": "Browse posts in a tieba forum", "access": "read", "domain": "tieba.baidu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "forum", "type": "string", "required": true, "positional": true, "help": "Forum name in Chinese" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items to return" } ], "columns": [ "rank", "title", "author", "replies" ], "type": "js", "modulePath": "tieba/posts.js", "sourceFile": "tieba/posts.js", "navigateBefore": false }, { "site": "tieba", "name": "read", "description": "Read a tieba thread", "access": "read", "domain": "tieba.baidu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "Thread ID" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number" }, { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Number of replies to return" } ], "columns": [ "floor", "author", "content", "time" ], "type": "js", "modulePath": "tieba/read.js", "sourceFile": "tieba/read.js", "navigateBefore": false }, { "site": "tieba", "name": "search", "description": "Search posts across tieba", "access": "read", "domain": "tieba.baidu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "keyword", "type": "string", "required": true, "positional": true, "help": "Search keyword" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number (currently only 1 is supported)", "choices": [ "1" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items to return" } ], "columns": [ "rank", "id", "title", "forum", "author", "time", "url" ], "type": "js", "modulePath": "tieba/search.js", "sourceFile": "tieba/search.js", "navigateBefore": false }, { "site": "tiktok", "name": "comment", "description": "Post a comment on a TikTok video", "access": "write", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "TikTok video URL (https://www.tiktok.com/@user/video/)" }, { "name": "text", "type": "str", "required": true, "positional": true, "help": "Comment text (≤150 chars)" } ], "columns": [ "url", "text", "result" ], "type": "js", "modulePath": "tiktok/comment.js", "sourceFile": "tiktok/comment.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "creator-videos", "description": "TikTok Studio creator content list (views/likes/comments/saves/shares)", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of creator videos to return (max 250)" }, { "name": "cursor", "type": "string", "default": "0", "required": false, "help": "Non-negative TikTok Studio pagination cursor" } ], "columns": [ "video_id", "title", "date", "views", "likes", "comments", "saves", "shares", "url" ], "type": "js", "modulePath": "tiktok/creator-videos.js", "sourceFile": "tiktok/creator-videos.js", "navigateBefore": "https://www.tiktok.com/tiktokstudio/content" }, { "site": "tiktok", "name": "explore", "description": "Get trending TikTok videos from the recommend feed via page-context APIs", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of videos to return (max 120)" } ], "columns": [ "index", "id", "author", "url", "cover", "title", "desc", "plays", "likes", "comments", "shares", "createTime" ], "type": "js", "modulePath": "tiktok/explore.js", "sourceFile": "tiktok/explore.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "follow", "description": "Follow a TikTok user by username", "access": "write", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "TikTok username (without @)" } ], "columns": [ "username", "url", "result" ], "type": "js", "modulePath": "tiktok/follow.js", "sourceFile": "tiktok/follow.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "following", "description": "List accounts the logged-in user follows on TikTok via page-context APIs", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of accounts (max 200)" } ], "columns": [ "index", "username", "name", "secUid", "verified", "followers", "following", "url" ], "type": "js", "modulePath": "tiktok/following.js", "sourceFile": "tiktok/following.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "friends", "description": "Get TikTok friend / who-to-follow suggestions via page-context APIs", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of suggestions (max 100)" } ], "columns": [ "index", "username", "name", "secUid", "verified", "followers", "following", "url" ], "type": "js", "modulePath": "tiktok/friends.js", "sourceFile": "tiktok/friends.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "like", "description": "Like a TikTok video", "access": "write", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "TikTok video URL" } ], "columns": [ "status", "likes", "url" ], "type": "js", "modulePath": "tiktok/like.js", "sourceFile": "tiktok/like.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "live", "description": "Browse TikTok live streams via page-context APIs", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of streams (max 60)" } ], "columns": [ "index", "streamer", "name", "title", "viewers", "likes", "secUid", "url" ], "type": "js", "modulePath": "tiktok/live.js", "sourceFile": "tiktok/live.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "login", "description": "Open tiktok login and wait until the browser session is authenticated", "access": "write", "domain": "tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "sec_uid", "username", "nickname" ], "type": "js", "modulePath": "tiktok/auth.js", "sourceFile": "tiktok/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "tiktok", "name": "notifications", "description": "Read TikTok inbox notifications (likes, comments, mentions, followers) via page-context APIs", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of notifications (max 100)" }, { "name": "type", "type": "str", "default": "all", "required": false, "help": "Notification type", "choices": [ "all", "likes", "comments", "mentions", "followers" ] } ], "columns": [ "index", "id", "from", "text", "createTime" ], "type": "js", "modulePath": "tiktok/notifications.js", "sourceFile": "tiktok/notifications.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "profile", "description": "Get TikTok user profile info", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "TikTok username (without @)" } ], "columns": [ "username", "name", "followers", "following", "likes", "videos", "verified", "bio" ], "type": "js", "modulePath": "tiktok/profile.js", "sourceFile": "tiktok/profile.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "save", "description": "Add a TikTok video to Favorites", "access": "write", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "TikTok video URL" } ], "columns": [ "status", "url" ], "type": "js", "modulePath": "tiktok/save.js", "sourceFile": "tiktok/save.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "search", "description": "Search TikTok videos", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results" } ], "columns": [ "rank", "desc", "author", "url", "plays", "likes", "comments", "shares" ], "type": "js", "modulePath": "tiktok/search.js", "sourceFile": "tiktok/search.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "unfollow", "description": "Unfollow a TikTok user by username", "access": "write", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "TikTok username (without @)" } ], "columns": [ "username", "url", "result" ], "type": "js", "modulePath": "tiktok/unfollow.js", "sourceFile": "tiktok/unfollow.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "unlike", "description": "Unlike a TikTok video", "access": "write", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "TikTok video URL" } ], "columns": [ "status", "likes", "url" ], "type": "js", "modulePath": "tiktok/unlike.js", "sourceFile": "tiktok/unlike.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "unsave", "description": "Remove a TikTok video from Favorites", "access": "write", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "TikTok video URL" } ], "columns": [ "status", "url" ], "type": "js", "modulePath": "tiktok/unsave.js", "sourceFile": "tiktok/unsave.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "user", "description": "Get recent videos from a TikTok user via page-context APIs", "access": "read", "domain": "www.tiktok.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "TikTok username (without @)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of videos to return (max 120)" } ], "columns": [ "index", "id", "source", "author", "url", "cover", "title", "desc", "plays", "likes", "comments", "shares", "createTime" ], "type": "js", "modulePath": "tiktok/user.js", "sourceFile": "tiktok/user.js", "navigateBefore": "https://www.tiktok.com" }, { "site": "tiktok", "name": "whoami", "description": "Show the current logged-in tiktok account", "access": "read", "domain": "tiktok.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "sec_uid", "username", "nickname" ], "type": "js", "modulePath": "tiktok/auth.js", "sourceFile": "tiktok/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "toutiao", "name": "articles", "description": "获取头条号创作者后台文章列表及数据", "access": "read", "domain": "mp.toutiao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "page", "type": "int", "default": 1, "required": false, "help": "页码 (1-4)" } ], "columns": [ "title", "date", "status", "展现", "阅读", "点赞", "评论" ], "type": "js", "modulePath": "toutiao/articles.js", "sourceFile": "toutiao/articles.js", "navigateBefore": "https://mp.toutiao.com" }, { "site": "toutiao", "name": "hot", "description": "今日头条首页热榜(公开 API,无需登录)", "access": "read", "domain": "www.toutiao.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 30, "required": false, "help": "返回条数 (1-50)" } ], "columns": [ "rank", "group_id", "title", "query", "hot_value", "label", "url", "image_url" ], "type": "js", "modulePath": "toutiao/hot.js", "sourceFile": "toutiao/hot.js" }, { "site": "toutiao", "name": "login", "description": "Open toutiao login and wait until the browser session is authenticated", "access": "write", "domain": "toutiao.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "toutiao/auth.js", "sourceFile": "toutiao/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "toutiao", "name": "whoami", "description": "Show the current logged-in toutiao account", "access": "read", "domain": "toutiao.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "toutiao/auth.js", "sourceFile": "toutiao/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "trae-cn", "name": "activity", "description": "Read the current Trae CN task/activity state, including in-progress steps when visible", "access": "read", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn activity --max-chars 1200 -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "max-chars", "type": "int", "default": 1200, "required": false, "help": "Max chars per text field; 0 returns full text (default: 1200)" } ], "columns": [ "Status", "Workspace", "Model", "Agent", "LatestRole", "TurnIndex", "MessageId", "Progress", "ActiveStep", "CompletedSteps", "PendingSteps", "TotalSteps", "ApprovalPending", "ApprovalKind", "ApprovalButton", "Thinking", "LatestText", "TextChars", "UpdatedAt" ], "type": "js", "modulePath": "trae-cn/activity.js", "sourceFile": "trae-cn/activity.js", "navigateBefore": true }, { "site": "trae-cn", "name": "approve", "description": "Approve visible Trae CN permission prompts such as terminal-run, high-risk command, or delete confirmations", "access": "write", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn approve --approve-kinds terminal,delete -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "approve-kinds", "type": "string", "default": "terminal,delete", "required": false, "help": "Comma-separated approval categories: terminal,delete,keep,all (default: terminal,delete; keep is not default)" }, { "name": "limit", "type": "int", "default": 1, "required": false, "help": "Max visible prompts to approve in this pass (default: 1)" }, { "name": "max-chars", "type": "int", "default": 600, "required": false, "help": "Max chars to return from prompt text; 0 returns full text (default: 600)" }, { "name": "dry-run", "type": "boolean", "default": false, "required": false, "help": "Detect matching prompts without clicking them (default: false)" } ], "columns": [ "Status", "Kind", "Button", "Prompt", "Selector", "Action" ], "type": "js", "modulePath": "trae-cn/approve.js", "sourceFile": "trae-cn/approve.js", "navigateBefore": true }, { "site": "trae-cn", "name": "ask", "description": "Send a prompt to Trae CN, wait for the assistant result without treating approval cards as final, and return it", "access": "write", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn ask \"请只回复 OK\" --timeout 120 -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Prompt to send into Trae CN" }, { "name": "timeout", "type": "int", "default": 60, "required": false, "help": "Max seconds to wait for response (default: 60)" }, { "name": "max-chars", "type": "int", "default": 12000, "required": false, "help": "Max chars to return from the assistant response; 0 returns full text (default: 12000)" }, { "name": "auto-approve", "type": "boolean", "default": false, "required": false, "help": "While waiting, approve visible terminal/delete prompts, including high-risk terminal confirmation layers (default: false)" }, { "name": "approve-kinds", "type": "string", "default": "terminal,delete", "required": false, "help": "Comma-separated approval categories for --auto-approve: terminal,delete,keep,all (default: terminal,delete; keep is not default)" } ], "columns": [ "Role", "Text", "TextChars", "Truncated", "TurnIndex", "MessageId" ], "type": "js", "modulePath": "trae-cn/ask.js", "sourceFile": "trae-cn/ask.js", "navigateBefore": true }, { "site": "trae-cn", "name": "dump", "description": "Dump the DOM and Accessibility tree of trae-cn for reverse-engineering", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "action", "files" ], "type": "js", "modulePath": "trae-cn/dump.js", "sourceFile": "trae-cn/dump.js", "navigateBefore": true }, { "site": "trae-cn", "name": "export", "description": "Export the current Trae CN conversation to Markdown", "access": "read", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn export --limit 20 --output /tmp/trae-cn-export.md", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file (default: /tmp/trae-cn-export.md)" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max recent turns to export (default: 50)" } ], "columns": [ "Status", "File", "Messages" ], "type": "js", "modulePath": "trae-cn/export.js", "sourceFile": "trae-cn/export.js", "navigateBefore": true }, { "site": "trae-cn", "name": "model", "description": "Read the model label currently shown in the Trae CN chat input", "access": "read", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn model -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Model", "Agent", "Workspace" ], "type": "js", "modulePath": "trae-cn/model.js", "sourceFile": "trae-cn/model.js", "navigateBefore": true }, { "site": "trae-cn", "name": "new", "description": "Start a new Trae CN task in the current workspace, optionally sending the first prompt", "access": "write", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn new \"请执行你的任务\" -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": false, "positional": true, "help": "Optional first prompt to send after creating the task" }, { "name": "timeout", "type": "int", "default": 10, "required": false, "help": "Max seconds to wait for a fresh task composer (default: 10)" } ], "columns": [ "Status", "Action", "Workspace", "Model", "Agent", "FreshTaskConfirmed", "TurnsBeforeSubmit", "Turns", "ComposerReady", "SubmitMode" ], "type": "js", "modulePath": "trae-cn/new.js", "sourceFile": "trae-cn/new.js", "navigateBefore": true }, { "site": "trae-cn", "name": "read", "description": "Read the current Trae CN chat conversation", "access": "read", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn read --limit 5 --max-chars 12000 -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max recent turns to return (default: 20)" }, { "name": "max-chars", "type": "int", "default": 6000, "required": false, "help": "Max chars per turn; 0 returns full text (default: 6000)" } ], "columns": [ "Role", "Text", "TextChars", "Truncated", "TurnIndex", "MessageId" ], "type": "js", "modulePath": "trae-cn/read.js", "sourceFile": "trae-cn/read.js", "navigateBefore": true }, { "site": "trae-cn", "name": "screenshot", "description": "Capture a snapshot of the current Trae CN window (DOM + Accessibility tree)", "access": "read", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn screenshot --output /tmp/trae-cn-snapshot.txt", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "output", "type": "str", "required": false, "help": "Output file path (default: /tmp/trae-cn-snapshot.txt)" } ], "columns": [ "Status", "File" ], "type": "js", "modulePath": "trae-cn/screenshot.js", "sourceFile": "trae-cn/screenshot.js", "navigateBefore": true }, { "site": "trae-cn", "name": "select-model", "description": "Select a model in the current Trae CN chat input", "access": "write", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn select-model \"GPT 5.4\" -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Model label, for example GPT 5.4 or GPT-5.4" } ], "columns": [ "Status", "Requested", "Selected", "Workspace", "Agent" ], "type": "js", "modulePath": "trae-cn/select-model.js", "sourceFile": "trae-cn/select-model.js", "navigateBefore": true }, { "site": "trae-cn", "name": "send", "description": "Send a prompt into the current Trae CN chat input", "access": "write", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn send \"请执行你的任务\" -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "str", "required": true, "positional": true, "help": "Text to send into Trae CN" } ], "columns": [ "Status", "InjectedText", "SubmitMode" ], "type": "js", "modulePath": "trae-cn/send.js", "sourceFile": "trae-cn/send.js", "navigateBefore": true }, { "site": "trae-cn", "name": "setup", "description": "Show local setup commands for controlling Trae CN with OpenCLI", "access": "read", "example": "opencli trae-cn setup -f table", "strategy": "local", "browser": false, "args": [], "columns": [ "Step", "Command", "Purpose" ], "type": "js", "modulePath": "trae-cn/setup.js", "sourceFile": "trae-cn/setup.js" }, { "site": "trae-cn", "name": "status", "description": "Check active CDP connection to Trae CN and summarize the current workspace/model", "access": "read", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn status -f json", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "Title", "Workspace", "Model", "Agent", "Turns", "ComposerReady", "Url" ], "type": "js", "modulePath": "trae-cn/status.js", "sourceFile": "trae-cn/status.js", "navigateBefore": true }, { "site": "trae-cn", "name": "targets", "description": "List Trae CN CDP targets and show which workspace/window is waiting", "access": "read", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 opencli trae-cn targets -f table", "strategy": "local", "browser": false, "args": [ { "name": "endpoint", "type": "string", "required": false, "help": "CDP endpoint (default: OPENCLI_CDP_ENDPOINT)" }, { "name": "probe-activity", "type": "boolean", "default": true, "required": false, "help": "Probe each target for Trae activity state (default: true)" }, { "name": "max-chars", "type": "int", "default": 240, "required": false, "help": "Max chars for approval prompt/activity snippets (default: 240)" } ], "columns": [ "Index", "SelectedHint", "RecommendedTarget", "Title", "Workspace", "Status", "ApprovalPending", "ApprovalKind", "ApprovalButton", "Model", "Agent", "Type", "Url" ], "type": "js", "modulePath": "trae-cn/targets.js", "sourceFile": "trae-cn/targets.js" }, { "site": "trae-cn", "name": "watch", "description": "Sample Trae CN activity over time to monitor long-running tasks; optionally approve visible terminal/delete prompts", "access": "write", "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn watch --stream true --duration 120", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "duration", "type": "int", "default": 30, "required": false, "help": "Seconds to observe (default: 30)" }, { "name": "interval", "type": "int", "default": 2, "required": false, "help": "Seconds between samples (default: 2)" }, { "name": "max-chars", "type": "int", "default": 600, "required": false, "help": "Max chars per text field; 0 returns full text (default: 600)" }, { "name": "timeout", "type": "int", "default": 86400, "required": false, "help": "Max seconds for the overall watch command (default: 86400)" }, { "name": "stream", "type": "boolean", "default": false, "required": false, "help": "Write each sample immediately as JSONL and skip result rendering (default: false)" }, { "name": "stop-on-complete", "type": "boolean", "default": true, "required": false, "help": "Stop watching after the first completed sample (default: true)" }, { "name": "auto-approve", "type": "boolean", "default": false, "required": false, "help": "Approve visible terminal/delete prompts before each sample, including high-risk terminal confirmation layers (default: false)" }, { "name": "approve-kinds", "type": "string", "default": "terminal,delete", "required": false, "help": "Comma-separated approval categories for --auto-approve: terminal,delete,keep,all (default: terminal,delete; keep is not default)" } ], "columns": [ "Sample", "ElapsedSec", "Changed", "Status", "Progress", "ActiveStep", "ApprovalPending", "ApprovalKind", "ApprovalButton", "AutoApproved", "LatestRole", "TurnIndex", "MessageId", "TextChars", "LatestText", "UpdatedAt" ], "type": "js", "modulePath": "trae-cn/watch.js", "sourceFile": "trae-cn/watch.js", "navigateBefore": true }, { "site": "trae-solo", "name": "automation-list", "description": "List Trae SOLO Automation tab content. Default tab is \"Configured\"; pass --tab to switch.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "tab", "type": "str", "default": "configured", "required": false, "help": "Tab to view: configured / run-history / task-template" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "" } ], "columns": [ "Index", "Title", "Summary" ], "type": "js", "modulePath": "trae-solo/automation.js", "sourceFile": "trae-solo/automation.js", "navigateBefore": true }, { "site": "trae-solo", "name": "cookies", "description": "List cookies on the Trae SOLO renderer (JS-visible via document.cookie; httpOnly cookies not shown).", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version" ], "type": "js", "modulePath": "trae-solo/renderer-storage.js", "sourceFile": "trae-solo/renderer-storage.js", "navigateBefore": true }, { "site": "trae-solo", "name": "extensions-list", "description": "List VSCode extensions installed in Trae SOLO (~/.trae/extensions/extensions.json). Works while Trae is closed.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [], "columns": [ "Index", "Workspace Id", "Kind", "Target", "Modified", "Id", "Version", "Source", "Installed" ], "type": "js", "modulePath": "trae-solo/workspaces-fs.js", "sourceFile": "trae-solo/workspaces-fs.js" }, { "site": "trae-solo", "name": "history", "description": "List Trae SOLO projects and the tasks within each (from the project-list view sidebar).", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "project", "type": "str", "required": false, "help": "Filter by project name (substring, case-insensitive)" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Max tasks per project" } ], "columns": [ "Project", "Task Index", "Task" ], "type": "js", "modulePath": "trae-solo/history.js", "sourceFile": "trae-solo/history.js", "navigateBefore": true }, { "site": "trae-solo", "name": "idb-list", "description": "List IndexedDB databases on the Trae SOLO renderer. Trae ships an @byted/ve-rtc DB used by the Volcengine RTC voice/video infrastructure.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version" ], "type": "js", "modulePath": "trae-solo/renderer-storage.js", "sourceFile": "trae-solo/renderer-storage.js", "navigateBefore": true }, { "site": "trae-solo", "name": "mode", "description": "Read or switch TRAE SOLO between Code mode and Work mode.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "target", "type": "str", "required": false, "positional": true, "help": "Target mode: code or work. Omit to read current." } ], "columns": [ "Status", "Mode" ], "type": "js", "modulePath": "trae-solo/mode.js", "sourceFile": "trae-solo/mode.js", "navigateBefore": true }, { "site": "trae-solo", "name": "model", "description": "Read or switch the current AI model in TRAE SOLO. Without arguments, reports the current model. With argument (substring, case-insensitive), switches to a matching model. Pass --list to enumerate available models.", "access": "write", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "name", "type": "str", "required": false, "positional": true, "help": "Target model name (substring match, case-insensitive). Omit to read current." }, { "name": "list", "type": "boolean", "default": false, "required": false, "help": "List all available models (does not switch)" } ], "columns": [ "Status", "Model" ], "type": "js", "modulePath": "trae-solo/model.js", "sourceFile": "trae-solo/model.js", "navigateBefore": true }, { "site": "trae-solo", "name": "recent-workspaces", "description": "Show Trae SOLO's recently-opened workspaces (the File → Open Recent menu, stored under key \"history.recentlyOpenedPathsList\" in state.vscdb).", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "" } ], "columns": [ "Index", "Key", "Kind", "Path" ], "type": "js", "modulePath": "trae-solo/state-fs.js", "sourceFile": "trae-solo/state-fs.js" }, { "site": "trae-solo", "name": "settings-read", "description": "Parse and pretty-print Trae SOLO user settings.json (~/Library/Application Support/TRAE SOLO/User/settings.json). Handles VSCode JSONC syntax (line comments + trailing commas).", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "trae-solo/settings.js", "sourceFile": "trae-solo/settings.js" }, { "site": "trae-solo", "name": "skill-category", "description": "Filter Skills Marketplace by category. Pass --list to see categories.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "name", "type": "str", "required": false, "positional": true, "help": "Category name (substring; case-insensitive). Common: All / Developer Tools / Data Analysis / UI Design / Content Creation / Productivity" }, { "name": "list", "type": "boolean", "default": false, "required": false, "help": "List available categories" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "" } ], "columns": [ "Index", "Name", "Description" ], "type": "js", "modulePath": "trae-solo/skill.js", "sourceFile": "trae-solo/skill.js", "navigateBefore": true }, { "site": "trae-solo", "name": "skill-fs-installed", "description": "List INSTALLED Trae SOLO skills (managedSkills entry in ~/.trae/skill-config.json).", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [], "columns": [ "Index", "Name", "Description", "Source" ], "type": "js", "modulePath": "trae-solo/skill-fs.js", "sourceFile": "trae-solo/skill-fs.js" }, { "site": "trae-solo", "name": "skill-fs-list", "description": "List all Trae SOLO skills present on disk under ~/.trae/skills/. Reads SKILL.md front-matter for descriptions. Works while Trae is closed.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 200, "required": false, "help": "Max rows" } ], "columns": [ "Index", "Name", "Description", "Source" ], "type": "js", "modulePath": "trae-solo/skill-fs.js", "sourceFile": "trae-solo/skill-fs.js" }, { "site": "trae-solo", "name": "skill-fs-show", "description": "Print a skill's SKILL.md content + on-disk path.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Skill name (folder under ~/.trae/skills/)" } ], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "trae-solo/skill-fs.js", "sourceFile": "trae-solo/skill-fs.js" }, { "site": "trae-solo", "name": "skill-list", "description": "List Trae SOLO Skills — by default the Marketplace; pass --installed to list installed ones.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "installed", "type": "boolean", "default": false, "required": false, "help": "List installed skills instead of the marketplace" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Max rows to return" } ], "columns": [ "Index", "Name", "Description" ], "type": "js", "modulePath": "trae-solo/skill.js", "sourceFile": "trae-solo/skill.js", "navigateBefore": true }, { "site": "trae-solo", "name": "skill-search", "description": "Filter Skills Marketplace by keyword.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search keyword (substring)" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max rows" } ], "columns": [ "Index", "Name", "Description" ], "type": "js", "modulePath": "trae-solo/skill.js", "sourceFile": "trae-solo/skill.js", "navigateBefore": true }, { "site": "trae-solo", "name": "state-get", "description": "Read a single key from Trae SOLO's globalStorage state.vscdb. Pass --workspace to query a per-workspace DB instead. Returns parsed JSON if the value is JSON.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "State key (use state-keys to discover)" }, { "name": "workspace", "type": "str", "required": false, "help": "Workspace id (from workspaces-list) to query a per-workspace DB" }, { "name": "max-bytes", "type": "int", "default": 8000, "required": false, "help": "Truncate value to this many bytes" } ], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "trae-solo/state-fs.js", "sourceFile": "trae-solo/state-fs.js" }, { "site": "trae-solo", "name": "state-keys", "description": "List all keys present in Trae SOLO's globalStorage state.vscdb (VSCode-style UI/agent state). Pass --workspace to query a per-workspace DB instead. Use state-get to read a specific value. (See renderer storage-keys for browser-side LS/SS.)", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "filter", "type": "str", "required": false, "help": "Case-insensitive substring filter over keys" }, { "name": "workspace", "type": "str", "required": false, "help": "Workspace id (from workspaces-list) to query a per-workspace DB" }, { "name": "limit", "type": "int", "default": 200, "required": false, "help": "" } ], "columns": [ "Index", "Key", "Kind", "Path" ], "type": "js", "modulePath": "trae-solo/state-fs.js", "sourceFile": "trae-solo/state-fs.js" }, { "site": "trae-solo", "name": "status", "description": "Check active CDP connection to Trae SOLO Desktop", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [], "columns": [ "Status", "Url", "Title" ], "type": "js", "modulePath": "trae-solo/status.js", "sourceFile": "trae-solo/status.js", "navigateBefore": true }, { "site": "trae-solo", "name": "storage-get", "description": "Read a single localStorage / sessionStorage value on the Trae SOLO renderer.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "key", "type": "str", "required": true, "positional": true, "help": "Storage key (use storage-keys to discover)" }, { "name": "storage", "type": "str", "default": "local", "required": false, "help": "\"local\" or \"session\"" }, { "name": "max-bytes", "type": "int", "default": 4000, "required": false, "help": "Truncate value to this many chars" } ], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "trae-solo/renderer-storage.js", "sourceFile": "trae-solo/renderer-storage.js", "navigateBefore": true }, { "site": "trae-solo", "name": "storage-keys", "description": "List localStorage / sessionStorage keys on the Trae SOLO renderer (CDP). For the on-disk VSCode state.vscdb, see state-keys.", "access": "read", "domain": "localhost", "strategy": "ui", "browser": true, "args": [ { "name": "storage", "type": "str", "default": "local", "required": false, "help": "\"local\" or \"session\"" }, { "name": "filter", "type": "str", "required": false, "help": "Case-insensitive substring filter" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "Max rows to return" } ], "columns": [ "Index", "Key", "Bytes", "Name", "Preview", "Database", "Version" ], "type": "js", "modulePath": "trae-solo/renderer-storage.js", "sourceFile": "trae-solo/renderer-storage.js", "navigateBefore": true }, { "site": "trae-solo", "name": "task-fs-list", "description": "List Trae SOLO task ids from disk (snapshot/ + agentconfig/.json). Works while Trae is closed.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 100, "required": false, "help": "" } ], "columns": [ "Index", "Task Id", "Has Snapshot", "Has Config", "Modified", "Phase", "Turn Id", "Commit" ], "type": "js", "modulePath": "trae-solo/task-fs.js", "sourceFile": "trae-solo/task-fs.js" }, { "site": "trae-solo", "name": "task-fs-show", "description": "Show the workspace tree at a given chat-turn ref (via git ls-tree). Pass --turn to pick a turn; otherwise the latest after-chat-turn ref.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "task-id", "type": "str", "required": true, "positional": true, "help": "Task UUID" }, { "name": "turn", "type": "str", "required": false, "help": "Specific turn id (omit for latest after-chat-turn)" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "" } ], "columns": [ "Mode", "Path", "Size" ], "type": "js", "modulePath": "trae-solo/task-fs.js", "sourceFile": "trae-solo/task-fs.js" }, { "site": "trae-solo", "name": "task-fs-turns", "description": "Show the chat-turn timeline for a Trae SOLO task as git tags (before-chat-turn-* / after-chat-turn-*).", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "task-id", "type": "str", "required": true, "positional": true, "help": "Task UUID (folder name under snapshot/)" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "" } ], "columns": [ "Index", "Task Id", "Has Snapshot", "Has Config", "Modified", "Phase", "Turn Id", "Commit" ], "type": "js", "modulePath": "trae-solo/task-fs.js", "sourceFile": "trae-solo/task-fs.js" }, { "site": "trae-solo", "name": "user-rules", "description": "Print Trae SOLO user rules (~/.trae/user_rules.md).", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [], "columns": [ "Field", "Value" ], "type": "js", "modulePath": "trae-solo/user-rules.js", "sourceFile": "trae-solo/user-rules.js" }, { "site": "trae-solo", "name": "workspaces-list", "description": "List Trae SOLO workspaceStorage entries (~/Library/.../TRAE SOLO/User/workspaceStorage//), resolving each workspace.json to its single-folder path or multi-folder workspace target. Works while Trae is closed.", "access": "read", "domain": "localhost", "strategy": "local", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 100, "required": false, "help": "" } ], "columns": [ "Index", "Workspace Id", "Kind", "Target", "Modified", "Id", "Version", "Source", "Installed" ], "type": "js", "modulePath": "trae-solo/workspaces-fs.js", "sourceFile": "trae-solo/workspaces-fs.js" }, { "site": "tvmaze", "name": "search", "description": "TVmaze TV show search by title (returns id, name, network, premiered/ended, rating)", "access": "read", "domain": "tvmaze.com", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "string", "required": true, "positional": true, "help": "TV show title or fragment to search for" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max rows to return (1-50)" } ], "columns": [ "rank", "id", "name", "type", "language", "genres", "status", "premiered", "ended", "network", "rating", "matchScore", "summary", "url" ], "type": "js", "modulePath": "tvmaze/search.js", "sourceFile": "tvmaze/search.js" }, { "site": "tvmaze", "name": "show", "description": "Single TVmaze TV show detail by id (network, schedule, rating, IMDB/TheTVDB cross-refs)", "access": "read", "domain": "tvmaze.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "int", "required": true, "positional": true, "help": "TVmaze show id (positive integer)" } ], "columns": [ "id", "name", "type", "language", "genres", "status", "premiered", "ended", "runtime", "averageRuntime", "network", "country", "schedule", "rating", "imdb", "thetvdb", "officialSite", "summary", "url" ], "type": "js", "modulePath": "tvmaze/show.js", "sourceFile": "tvmaze/show.js" }, { "site": "twitter", "name": "accept", "description": "Auto-accept DM requests containing specific keywords", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "query", "type": "string", "required": true, "positional": true, "help": "Keywords to match (comma-separated for OR, e.g. \"群,微信\")" }, { "name": "max", "type": "int", "default": 20, "required": false, "help": "Maximum number of requests to accept (default: 20)" }, { "name": "timeout", "type": "int", "default": 600, "required": false, "help": "Max seconds for the overall command (default: 600 — batch op)" } ], "columns": [ "index", "status", "user", "message" ], "type": "js", "modulePath": "twitter/accept.js", "sourceFile": "twitter/accept.js", "navigateBefore": true }, { "site": "twitter", "name": "article", "description": "Fetch a Twitter Article (long-form content) and export as Markdown", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "tweet-id", "type": "string", "required": true, "positional": true, "help": "Tweet ID or URL containing the article" } ], "columns": [ "title", "author", "content", "url" ], "type": "js", "modulePath": "twitter/article.js", "sourceFile": "twitter/article.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "block", "description": "Block a Twitter user", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Twitter screen name (without @)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/block.js", "sourceFile": "twitter/block.js", "navigateBefore": true }, { "site": "twitter", "name": "bookmark", "description": "Bookmark a tweet", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "Tweet URL to bookmark" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/bookmark.js", "sourceFile": "twitter/bookmark.js", "navigateBefore": true }, { "site": "twitter", "name": "bookmark-folder", "description": "Read the tweets inside a single Twitter/X bookmark folder. Get the folder id from `opencli twitter bookmark-folders`.", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "folder-id", "type": "string", "required": true, "positional": true, "help": "Folder id from `opencli twitter bookmark-folders`." }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum number of bookmarks to return (default 20)." }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank the folder by weighted engagement (likes×1 + retweets×3 + replies×2 + bookmarks×5 + log10(views+1)×0.5) and return the top N. Default 0 keeps the API's native (saved-time) ordering." } ], "columns": [ "id", "author", "text", "likes", "retweets", "bookmarks", "created_at", "url", "has_media", "media_urls", "media_posters" ], "type": "js", "modulePath": "twitter/bookmark-folder.js", "sourceFile": "twitter/bookmark-folder.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "bookmark-folders", "description": "List your Twitter/X bookmark folders (the user-created collections under Bookmarks). Returns folder id, name, item count, and created_at.", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "id", "name", "items", "created_at" ], "type": "js", "modulePath": "twitter/bookmark-folders.js", "sourceFile": "twitter/bookmark-folders.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "bookmarks", "description": "Fetch your Twitter/X bookmarks (the logged-in user's saved tweets, newest first)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum number of bookmarks to return (default 20)." }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank the bookmarks by weighted engagement (likes×1 + retweets×3 + replies×2 + bookmarks×5 + log10(views+1)×0.5) and return the top N. Default 0 keeps the API's native (saved-time) ordering." } ], "columns": [ "id", "author", "text", "likes", "retweets", "bookmarks", "created_at", "url", "has_media", "media_urls", "media_posters" ], "type": "js", "modulePath": "twitter/bookmarks.js", "sourceFile": "twitter/bookmarks.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "delete", "description": "Delete a specific tweet by URL", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "The URL of the tweet to delete" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/delete.js", "sourceFile": "twitter/delete.js", "navigateBefore": true }, { "site": "twitter", "name": "device-follow", "description": "Read the /i/timeline device-follow notification stream (tweets aggregated under a bell-icon \"new posts from @userA and N others\" notification)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum number of tweets to return (1-200, default 20)" }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank by weighted engagement and return the top N. Default 0 keeps upstream ordering." } ], "columns": [ "id", "author", "text", "likes", "retweets", "replies", "views", "created_at", "url" ], "type": "js", "modulePath": "twitter/device-follow.js", "sourceFile": "twitter/device-follow.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "download", "description": "Download Twitter/X media (images and videos). Provide either to fetch every media item from their profile via the GraphQL UserMedia endpoint with cursor pagination, or --tweet-url to download a single tweet.", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "str", "required": false, "positional": true, "help": "Twitter username (with or without @) to scan their profile media. Either or --tweet-url is required." }, { "name": "tweet-url", "type": "str", "required": false, "help": "Single tweet URL to download. Use this OR , not both required at once." }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Maximum number of media items to download when scanning a profile (default 10). Ignored when --tweet-url is used." }, { "name": "output", "type": "str", "default": "./twitter-downloads", "required": false, "help": "Output directory (default ./twitter-downloads). A per-source subdir is created inside." } ], "columns": [ "index", "tweet_id", "url", "type", "status", "size" ], "type": "js", "modulePath": "twitter/download.js", "sourceFile": "twitter/download.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "follow", "description": "Follow a Twitter user", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Twitter screen name (without @)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/follow.js", "sourceFile": "twitter/follow.js", "navigateBefore": true }, { "site": "twitter", "name": "follow-batch", "description": "Follow multiple Twitter/X users from a comma-separated username list", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "usernames", "type": "string", "required": true, "positional": true, "help": "Comma-separated Twitter/X screen names, with or without @" }, { "name": "delay-ms", "type": "int", "default": 3000, "required": false, "help": "Delay between follow attempts in milliseconds" } ], "columns": [ "username", "status", "message" ], "type": "js", "modulePath": "twitter/follow-batch.js", "sourceFile": "twitter/follow-batch.js", "navigateBefore": true }, { "site": "twitter", "name": "followers", "description": "Get accounts following a Twitter/X user (defaults to the logged-in user when no user is given)", "access": "read", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "user", "type": "string", "required": false, "positional": true, "help": "Twitter/X handle (with or without @). Omit to fetch followers of the currently logged-in account." }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Maximum number of follower rows to return (default 50). Must be a positive integer." } ], "columns": [ "screen_name", "name", "bio" ], "type": "js", "modulePath": "twitter/followers.js", "sourceFile": "twitter/followers.js", "navigateBefore": true }, { "site": "twitter", "name": "following", "description": "Get accounts a Twitter/X user is following (defaults to the logged-in user when no user is given)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user", "type": "string", "required": false, "positional": true, "help": "Twitter/X handle (with or without @). Omit to fetch the accounts the currently logged-in user follows." }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Maximum number of following rows to return (default 50). Must be a positive integer." } ], "columns": [ "screen_name", "name", "bio", "followers" ], "type": "js", "modulePath": "twitter/following.js", "sourceFile": "twitter/following.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "hide-reply", "description": "Hide a reply on your tweet (useful for hiding bot/spam replies)", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "The URL of the reply tweet to hide" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/hide-reply.js", "sourceFile": "twitter/hide-reply.js", "navigateBefore": true }, { "site": "twitter", "name": "like", "description": "Like a specific tweet", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "The URL of the tweet to like" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/like.js", "sourceFile": "twitter/like.js", "navigateBefore": true }, { "site": "twitter", "name": "likes", "description": "Fetch liked tweets of a Twitter user (defaults to the logged-in user when no username is given)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "string", "required": false, "positional": true, "help": "Twitter screen name (with or without @). Defaults to the logged-in user when omitted." }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum number of liked tweets to return (default 20)." }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank the liked tweets by weighted engagement (likes×1 + retweets×3 + replies×2 + bookmarks×5 + log10(views+1)×0.5) and return the top N. Default 0 keeps the API's native (recency) ordering." } ], "columns": [ "id", "author", "name", "text", "likes", "retweets", "created_at", "url", "has_media", "media_urls", "media_posters" ], "type": "js", "modulePath": "twitter/likes.js", "sourceFile": "twitter/likes.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "list-add", "description": "Add a user to a Twitter/X list you own (no-op if already a member)", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "listId", "type": "string", "required": true, "positional": true, "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)" }, { "name": "username", "type": "string", "required": true, "positional": true, "help": "Twitter/X handle to add (with or without @)" } ], "columns": [ "listId", "username", "userId", "status", "message" ], "type": "js", "modulePath": "twitter/list-add.js", "sourceFile": "twitter/list-add.js", "navigateBefore": true }, { "site": "twitter", "name": "list-add-batch", "description": "Add multiple users to a Twitter/X list you own from a comma-separated username list", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "listId", "type": "string", "required": true, "positional": true, "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)" }, { "name": "usernames", "type": "string", "required": true, "positional": true, "help": "Comma-separated Twitter/X handles to add (with or without @)" }, { "name": "interval", "type": "int", "default": 5, "required": false, "help": "Seconds to wait between account additions (default: 5)" }, { "name": "timeout", "type": "int", "default": 600, "required": false, "help": "Max seconds for the overall batch command (default: 600)" } ], "columns": [ "listId", "username", "userId", "status", "message" ], "type": "js", "modulePath": "twitter/list-add-batch.js", "sourceFile": "twitter/list-add-batch.js", "navigateBefore": true }, { "site": "twitter", "name": "list-create", "description": "Create a new Twitter/X list (returns the new list id)", "access": "write", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "name", "type": "string", "required": true, "positional": true, "help": "List name (max 25 chars)" }, { "name": "description", "type": "string", "default": "", "required": false, "help": "Optional list description (max 100 chars)" }, { "name": "mode", "type": "string", "default": "public", "required": false, "help": "public | private" } ], "columns": [ "id", "name", "description", "mode", "status" ], "type": "js", "modulePath": "twitter/list-create.js", "sourceFile": "twitter/list-create.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "list-delete", "description": "Delete a Twitter/X list you own after explicit confirmation", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "listId", "type": "string", "required": true, "positional": true, "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)" }, { "name": "confirm", "type": "boolean", "default": false, "required": false, "help": "Required. Set --confirm true to delete the list." }, { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Max seconds for the overall delete command (default: 300)" } ], "columns": [ "listId", "name", "members", "status", "message" ], "type": "js", "modulePath": "twitter/list-delete.js", "sourceFile": "twitter/list-delete.js", "navigateBefore": true }, { "site": "twitter", "name": "list-remove", "description": "Remove a user from a Twitter/X list you own (toggles via UI; no-op if not currently a member)", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "listId", "type": "string", "required": true, "positional": true, "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)" }, { "name": "username", "type": "string", "required": true, "positional": true, "help": "Twitter/X handle to remove (with or without @)" } ], "columns": [ "listId", "username", "userId", "status", "message" ], "type": "js", "modulePath": "twitter/list-remove.js", "sourceFile": "twitter/list-remove.js", "navigateBefore": true }, { "site": "twitter", "name": "list-remove-batch", "description": "Remove multiple users from a Twitter/X list you own from a comma-separated username list", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "listId", "type": "string", "required": true, "positional": true, "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)" }, { "name": "usernames", "type": "string", "required": true, "positional": true, "help": "Comma-separated Twitter/X handles to remove (with or without @)" }, { "name": "interval", "type": "int", "default": 5, "required": false, "help": "Seconds to wait between account removals (default: 5)" }, { "name": "timeout", "type": "int", "default": 600, "required": false, "help": "Max seconds for the overall batch command (default: 600)" } ], "columns": [ "listId", "username", "userId", "status", "message" ], "type": "js", "modulePath": "twitter/list-remove-batch.js", "sourceFile": "twitter/list-remove-batch.js", "navigateBefore": true }, { "site": "twitter", "name": "list-tweets", "description": "Fetch tweets from a Twitter/X list timeline", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "listId", "type": "string", "required": true, "positional": true, "help": "Numeric ID of a Twitter/X list (e.g. from `opencli twitter lists`)" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "" }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank the list timeline by weighted engagement (likes×1 + retweets×3 + replies×2 + bookmarks×5 + log10(views+1)×0.5) and return the top N. Default 0 keeps the list's native (recency) ordering." } ], "columns": [ "id", "author", "bio", "text", "likes", "retweets", "replies", "created_at", "url", "has_media", "media_urls", "media_posters", "card", "quoted_tweet" ], "type": "js", "modulePath": "twitter/list-tweets.js", "sourceFile": "twitter/list-tweets.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "lists", "description": "Get Twitter/X lists for the logged-in user (owned + subscribed)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Maximum number of lists to return (default 50)." } ], "columns": [ "id", "name", "members", "followers", "mode" ], "type": "js", "modulePath": "twitter/lists.js", "sourceFile": "twitter/lists.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "login", "description": "Open twitter login and wait until the browser session is authenticated", "access": "write", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "username", "url" ], "type": "js", "modulePath": "twitter/auth.js", "sourceFile": "twitter/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "twitter", "name": "notifications", "description": "Get your Twitter/X notifications (the logged-in user's likes/replies/follows feed, newest first)", "access": "read", "domain": "x.com", "strategy": "intercept", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum number of notifications to return (default 20)." } ], "columns": [ "id", "action", "author", "text", "url" ], "type": "js", "modulePath": "twitter/notifications.js", "sourceFile": "twitter/notifications.js", "navigateBefore": true }, { "site": "twitter", "name": "post", "description": "Post a new tweet/thread", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "string", "required": true, "positional": true, "help": "The text content of the tweet" }, { "name": "images", "type": "string", "required": false, "help": "Image paths, comma-separated, max 4 (jpg/png/gif/webp)" } ], "columns": [ "status", "message", "text", "id", "url" ], "type": "js", "modulePath": "twitter/post.js", "sourceFile": "twitter/post.js", "navigateBefore": true }, { "site": "twitter", "name": "profile", "description": "Fetch a Twitter user profile — bio, stats, etc. (defaults to the logged-in user when no username is given)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "string", "required": false, "positional": true, "help": "Twitter screen name (with or without @). Defaults to the logged-in user when omitted." } ], "columns": [ "screen_name", "name", "bio", "location", "url", "followers", "following", "tweets", "likes", "verified", "created_at" ], "type": "js", "modulePath": "twitter/profile.js", "sourceFile": "twitter/profile.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "quote", "description": "Quote-tweet a specific tweet with your own text, optionally with a local or remote image", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "The URL of the tweet to quote" }, { "name": "text", "type": "string", "required": true, "positional": true, "help": "The text content of your quote" }, { "name": "image", "type": "str", "required": false, "help": "Optional local image path to attach to the quote tweet" }, { "name": "image-url", "type": "str", "required": false, "help": "Optional remote image URL to download and attach to the quote tweet" } ], "columns": [ "status", "message", "text" ], "type": "js", "modulePath": "twitter/quote.js", "sourceFile": "twitter/quote.js", "navigateBefore": true }, { "site": "twitter", "name": "reply", "description": "Reply to a specific tweet, optionally with a local or remote image", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "The URL of the tweet to reply to" }, { "name": "text", "type": "string", "required": true, "positional": true, "help": "The text content of your reply" }, { "name": "image", "type": "str", "required": false, "help": "Optional local image path to attach to the reply" }, { "name": "image-url", "type": "str", "required": false, "help": "Optional remote image URL to download and attach to the reply" } ], "columns": [ "status", "message", "text", "url" ], "type": "js", "modulePath": "twitter/reply.js", "sourceFile": "twitter/reply.js", "navigateBefore": true }, { "site": "twitter", "name": "reply-dm", "description": "Send a message to recent DM conversations", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "string", "required": true, "positional": true, "help": "Message text to send (e.g. \"我的微信 wxkabi\")" }, { "name": "max", "type": "int", "default": 20, "required": false, "help": "Maximum number of conversations to reply to (default: 20)" }, { "name": "skip-replied", "type": "boolean", "default": true, "required": false, "help": "Skip conversations where you already sent the same text (default: true)" }, { "name": "timeout", "type": "int", "default": 600, "required": false, "help": "Max seconds for the overall command (default: 600 — batch op)" } ], "columns": [ "index", "status", "user", "message" ], "type": "js", "modulePath": "twitter/reply-dm.js", "sourceFile": "twitter/reply-dm.js", "navigateBefore": true }, { "site": "twitter", "name": "retweet", "description": "Retweet a specific tweet", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "The URL of the tweet to retweet" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/retweet.js", "sourceFile": "twitter/retweet.js", "navigateBefore": true }, { "site": "twitter", "name": "search", "description": "Search Twitter/X for tweets, with optional --from / --has / --exclude / --product filters mapped to X's search operators", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "string", "required": true, "positional": true, "help": "Search query. Raw X operators (e.g. \"exact phrase\", #tag, OR, lang:en, since:YYYY-MM-DD, from:, since:) are passed through unchanged." }, { "name": "filter", "type": "string", "default": "top", "required": false, "help": "Legacy alias for --product. Kept for backwards compatibility; if --product is set it wins.", "choices": [ "top", "live" ] }, { "name": "product", "type": "string", "required": false, "help": "Which X search tab to read: top (default), live (Latest), photos, videos. Maps to the f= URL param.", "choices": [ "top", "live", "photos", "videos" ] }, { "name": "from", "type": "string", "required": false, "help": "Restrict to tweets authored by . Leading @ is stripped. Equivalent to appending `from:` to the query." }, { "name": "has", "type": "string", "required": false, "help": "Restrict to tweets that have media|images|videos|links|replies. Maps to X's `filter:` operator.", "choices": [ "media", "images", "videos", "links", "replies" ] }, { "name": "exclude", "type": "string", "required": false, "help": "Exclude tweets matching : replies|retweets|media|links. Maps to X's `-filter:` operator (retweets → -filter:nativeretweets).", "choices": [ "replies", "retweets", "media", "links" ] }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Maximum number of tweets to return (default 15). Result count after server-side filtering." }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank the results by weighted engagement (likes×1 + retweets×3 + replies×2 + bookmarks×5 + log10(views+1)×0.5) and return the top N. Default 0 keeps X's native ordering." } ], "columns": [ "id", "author", "bio", "text", "created_at", "likes", "views", "url", "has_media", "media_urls", "media_posters", "card", "quoted_tweet" ], "type": "js", "modulePath": "twitter/search.js", "sourceFile": "twitter/search.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "thread", "description": "Get a tweet thread (original + all replies)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "tweet-id", "type": "string", "required": true, "positional": true, "help": "Tweet numeric ID (e.g. 1234567890) or full status URL" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "" }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank the thread by weighted engagement (likes×1 + retweets×3 + replies×2 + bookmarks×5 + log10(views+1)×0.5) and return the top N. Default 0 keeps the conversation's structural ordering." } ], "columns": [ "id", "author", "bio", "text", "likes", "retweets", "url", "has_media", "media_urls", "media_posters", "card", "quoted_tweet" ], "type": "js", "modulePath": "twitter/thread.js", "sourceFile": "twitter/thread.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "timeline", "description": "Fetch the logged-in user's home timeline (for-you algorithmic feed by default; pass --type following for the chronological feed of accounts you follow)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "type", "type": "str", "default": "for-you", "required": false, "help": "Which home-timeline feed to read. Default for-you (algorithmic). Use following for the chronological feed of accounts you follow.", "choices": [ "for-you", "following" ] }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Maximum number of tweets to return (default 20)." }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank the timeline by weighted engagement (likes×1 + retweets×3 + replies×2 + bookmarks×5 + log10(views+1)×0.5) and return the top N. Default 0 keeps X's native ordering." } ], "columns": [ "id", "author", "bio", "text", "likes", "retweets", "replies", "views", "created_at", "url", "has_media", "media_urls", "media_posters", "card", "quoted_tweet" ], "type": "js", "modulePath": "twitter/timeline.js", "sourceFile": "twitter/timeline.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "trending", "description": "Twitter/X trending topics", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of trends to show" } ], "columns": [ "rank", "topic", "category" ], "type": "js", "modulePath": "twitter/trending.js", "sourceFile": "twitter/trending.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "tweets", "description": "Fetch a Twitter user's most recent tweets (chronological, excludes pinned; defaults to the logged-in user when no username is given)", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [ { "name": "username", "type": "string", "required": false, "positional": true, "help": "Twitter screen name (with or without @). Defaults to the logged-in user when omitted." }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max tweets to return (1-10000; fetched across cursor pages)" }, { "name": "page-delay", "type": "int", "default": 2, "required": false, "help": "Seconds to wait between paginated timeline requests to reduce rate-limit risk. Use 0 to disable." }, { "name": "top-by-engagement", "type": "int", "default": 0, "required": false, "help": "When set to N>0, re-rank the tweets by weighted engagement (likes×1 + retweets×3 + replies×2 + bookmarks×5 + log10(views+1)×0.5) and return the top N. Default 0 keeps the chronological ordering." } ], "columns": [ "id", "author", "created_at", "is_retweet", "text", "likes", "retweets", "replies", "views", "url", "has_media", "media_urls", "media_posters", "quoted_tweet" ], "type": "js", "modulePath": "twitter/tweets.js", "sourceFile": "twitter/tweets.js", "navigateBefore": "https://x.com" }, { "site": "twitter", "name": "unblock", "description": "Unblock a Twitter user", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Twitter screen name (without @)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/unblock.js", "sourceFile": "twitter/unblock.js", "navigateBefore": true }, { "site": "twitter", "name": "unbookmark", "description": "Remove a tweet from bookmarks", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "Tweet URL to unbookmark" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/unbookmark.js", "sourceFile": "twitter/unbookmark.js", "navigateBefore": true }, { "site": "twitter", "name": "unfollow", "description": "Unfollow a Twitter user", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "username", "type": "string", "required": true, "positional": true, "help": "Twitter screen name (without @)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/unfollow.js", "sourceFile": "twitter/unfollow.js", "navigateBefore": true }, { "site": "twitter", "name": "unlike", "description": "Remove a like from a specific tweet", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "The URL of the tweet to unlike" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/unlike.js", "sourceFile": "twitter/unlike.js", "navigateBefore": true }, { "site": "twitter", "name": "unretweet", "description": "Undo a retweet on a specific tweet", "access": "write", "domain": "x.com", "strategy": "ui", "browser": true, "args": [ { "name": "url", "type": "string", "required": true, "positional": true, "help": "The URL of the tweet to unretweet" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "twitter/unretweet.js", "sourceFile": "twitter/unretweet.js", "navigateBefore": true }, { "site": "twitter", "name": "whoami", "description": "Show the current logged-in twitter account", "access": "read", "domain": "x.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "username", "url" ], "type": "js", "modulePath": "twitter/auth.js", "sourceFile": "twitter/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "uisdc", "name": "news", "description": "优设读报 - 最新 AI/设计行业新闻", "access": "read", "domain": "www.uisdc.com", "strategy": "public", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of news items to return (max 50)" } ], "columns": [ "rank", "title", "summary", "url" ], "type": "js", "modulePath": "uisdc/news.js", "sourceFile": "uisdc/news.js" }, { "site": "uiverse", "name": "code", "description": "Export Uiverse component code (HTML, CSS, React, or Vue)", "access": "read", "domain": "uiverse.io", "strategy": "public", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "Uiverse URL or author/slug identifier" }, { "name": "target", "type": "str", "required": true, "help": "Code target to export", "choices": [ "html", "css", "react", "vue" ] } ], "columns": [ "target", "username", "slug", "language", "length" ], "type": "js", "modulePath": "uiverse/code.js", "sourceFile": "uiverse/code.js", "navigateBefore": "https://uiverse.io" }, { "site": "uiverse", "name": "preview", "description": "Capture a screenshot of the Uiverse preview element", "access": "read", "domain": "uiverse.io", "strategy": "public", "browser": true, "args": [ { "name": "input", "type": "str", "required": true, "positional": true, "help": "Uiverse URL or author/slug identifier" }, { "name": "output", "type": "str", "required": false, "help": "Output image path (defaults to a temp file)" }, { "name": "padding", "type": "int", "default": 8, "required": false, "help": "Extra padding around the captured preview in pixels" } ], "columns": [ "username", "slug", "width", "height", "output" ], "type": "js", "modulePath": "uiverse/preview.js", "sourceFile": "uiverse/preview.js", "navigateBefore": "https://uiverse.io" }, { "site": "upwork", "name": "detail", "aliases": [ "job", "view" ], "description": "Read the full Upwork job posting by ciphertext id (e.g. ~022054964136512093518)", "access": "read", "domain": "www.upwork.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Job ciphertext id (~01… / ~02…) or full /jobs/~02… URL" } ], "columns": [ "id", "title", "type", "budget", "experienceLevel", "workload", "category", "skills", "description", "clientCountry", "clientSpent", "clientHires", "clientRating", "proposalsCount", "publishedOn", "url" ], "type": "js", "modulePath": "upwork/detail.js", "sourceFile": "upwork/detail.js", "navigateBefore": false }, { "site": "upwork", "name": "feed", "aliases": [ "best-matches" ], "description": "Upwork personalized jobs feed (best-matches | most-recent) — requires login", "access": "read", "domain": "www.upwork.com", "strategy": "cookie", "browser": true, "args": [ { "name": "tab", "type": "str", "default": "best-matches", "required": false, "positional": true, "help": "Feed tab: best-matches | most-recent" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max rows to return (1-50, capped at one page)" } ], "columns": [ "rank", "id", "title", "type", "budget", "experienceLevel", "proposalsTier", "skills", "clientCountry", "clientRating", "publishedOn", "url" ], "type": "js", "modulePath": "upwork/feed.js", "sourceFile": "upwork/feed.js", "navigateBefore": false }, { "site": "upwork", "name": "login", "description": "Open upwork login and wait until the browser session is authenticated", "access": "write", "domain": "upwork.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "ciphertext" ], "type": "js", "modulePath": "upwork/auth.js", "sourceFile": "upwork/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "upwork", "name": "search", "description": "Upwork keyword job search (logged-in browser session, US site)", "access": "read", "domain": "www.upwork.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Job keyword (skill / title / company)" }, { "name": "location", "type": "string", "default": "", "required": false, "help": "Country/city filter (e.g. \"United States\", \"Remote\")" }, { "name": "category", "type": "string", "default": "", "required": false, "help": "Category uid filter (advanced; from job detail `category` slug)" }, { "name": "sort", "type": "string", "default": "recency", "required": false, "help": "Sort: recency | relevance | client_total_charge | client_total_reviews" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number (1-based)" }, { "name": "per_page", "type": "int", "default": 10, "required": false, "help": "Rows per page (10-50, capped at one page)" } ], "columns": [ "rank", "id", "title", "type", "budget", "experienceLevel", "proposalsTier", "skills", "clientCountry", "clientRating", "publishedOn", "url" ], "type": "js", "modulePath": "upwork/search.js", "sourceFile": "upwork/search.js", "navigateBefore": false }, { "site": "upwork", "name": "whoami", "description": "Show the current logged-in upwork account", "access": "read", "domain": "upwork.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "ciphertext" ], "type": "js", "modulePath": "upwork/auth.js", "sourceFile": "upwork/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "v2ex", "name": "daily", "description": "V2EX 每日签到并领取铜币", "access": "write", "domain": "www.v2ex.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "status", "message" ], "type": "js", "modulePath": "v2ex/daily.js", "sourceFile": "v2ex/daily.js", "navigateBefore": "https://www.v2ex.com" }, { "site": "v2ex", "name": "hot", "description": "V2EX 热门话题", "access": "read", "domain": "www.v2ex.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of topics" } ], "columns": [ "id", "rank", "title", "node", "replies", "url" ], "type": "js", "modulePath": "v2ex/hot.js", "sourceFile": "v2ex/hot.js" }, { "site": "v2ex", "name": "latest", "description": "V2EX 最新话题", "access": "read", "domain": "www.v2ex.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of topics" } ], "columns": [ "id", "rank", "title", "node", "replies", "url" ], "type": "js", "modulePath": "v2ex/latest.js", "sourceFile": "v2ex/latest.js" }, { "site": "v2ex", "name": "login", "description": "Open v2ex login and wait until the browser session is authenticated", "access": "write", "domain": "v2ex.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "username" ], "type": "js", "modulePath": "v2ex/auth.js", "sourceFile": "v2ex/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "v2ex", "name": "me", "description": "V2EX 获取个人资料 (余额/未读提醒)", "access": "read", "domain": "www.v2ex.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "username", "balance", "unread_notifications", "daily_reward_ready" ], "type": "js", "modulePath": "v2ex/me.js", "sourceFile": "v2ex/me.js", "navigateBefore": "https://www.v2ex.com" }, { "site": "v2ex", "name": "member", "description": "V2EX 用户资料", "access": "read", "domain": "www.v2ex.com", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username" } ], "columns": [ "username", "tagline", "website", "github", "twitter", "location" ], "type": "js", "modulePath": "v2ex/member.js", "sourceFile": "v2ex/member.js" }, { "site": "v2ex", "name": "node", "description": "V2EX 节点话题列表", "access": "read", "domain": "www.v2ex.com", "strategy": "public", "browser": false, "args": [ { "name": "name", "type": "str", "required": true, "positional": true, "help": "Node name (e.g. python, javascript, apple)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of topics (API returns max 20)" } ], "columns": [ "rank", "title", "author", "replies", "url" ], "type": "js", "modulePath": "v2ex/node.js", "sourceFile": "v2ex/node.js" }, { "site": "v2ex", "name": "nodes", "description": "V2EX 所有节点列表", "access": "read", "domain": "www.v2ex.com", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Number of nodes" } ], "columns": [ "rank", "name", "title", "topics", "stars" ], "type": "js", "modulePath": "v2ex/nodes.js", "sourceFile": "v2ex/nodes.js" }, { "site": "v2ex", "name": "notifications", "description": "V2EX 获取提醒 (回复/由于)", "access": "read", "domain": "www.v2ex.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of notifications" } ], "columns": [ "type", "content", "time" ], "type": "js", "modulePath": "v2ex/notifications.js", "sourceFile": "v2ex/notifications.js", "navigateBefore": "https://www.v2ex.com" }, { "site": "v2ex", "name": "replies", "description": "V2EX 主题回复列表", "access": "read", "domain": "www.v2ex.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Topic ID" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of replies" } ], "columns": [ "floor", "author", "content" ], "type": "js", "modulePath": "v2ex/replies.js", "sourceFile": "v2ex/replies.js" }, { "site": "v2ex", "name": "topic", "description": "V2EX 主题详情和回复", "access": "read", "domain": "www.v2ex.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Topic ID" } ], "columns": [ "id", "title", "content", "member", "created", "node", "replies", "url" ], "type": "js", "modulePath": "v2ex/topic.js", "sourceFile": "v2ex/topic.js" }, { "site": "v2ex", "name": "user", "description": "V2EX 用户发帖列表", "access": "read", "domain": "www.v2ex.com", "strategy": "public", "browser": false, "args": [ { "name": "username", "type": "str", "required": true, "positional": true, "help": "Username" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of topics (API returns max 20)" } ], "columns": [ "rank", "title", "node", "replies", "url" ], "type": "js", "modulePath": "v2ex/user.js", "sourceFile": "v2ex/user.js" }, { "site": "v2ex", "name": "whoami", "description": "Show the current logged-in v2ex account", "access": "read", "domain": "v2ex.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "username" ], "type": "js", "modulePath": "v2ex/auth.js", "sourceFile": "v2ex/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "wanfang", "name": "search", "description": "万方数据论文搜索", "access": "read", "domain": "s.wanfangdata.com.cn", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回结果数量 (max 20)" } ], "columns": [ "rank", "title", "authors", "source", "year", "type", "cited", "url" ], "type": "js", "modulePath": "wanfang/search.js", "sourceFile": "wanfang/search.js" }, { "site": "web", "name": "read", "description": "Fetch any web page and export as Markdown", "access": "read", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "help": "Any web page URL" }, { "name": "output", "type": "str", "default": "./web-articles", "required": false, "help": "Output directory" }, { "name": "download-images", "type": "boolean", "default": true, "required": false, "help": "Download images locally" }, { "name": "wait", "type": "int", "default": 3, "required": false, "help": "Seconds to wait after page load" }, { "name": "wait-for", "type": "str", "required": false, "valueRequired": true, "help": "CSS selector to wait for in the main document or same-origin iframes" }, { "name": "wait-until", "type": "str", "default": "domstable", "required": false, "help": "Readiness policy after navigation: domstable or networkidle", "choices": [ "domstable", "networkidle" ] }, { "name": "frames", "type": "str", "default": "same-origin", "required": false, "help": "Iframe handling mode: relevant same-origin, all-same-origin, or none", "choices": [ "same-origin", "all-same-origin", "none" ] }, { "name": "diagnose", "type": "boolean", "default": false, "required": false, "help": "Print render diagnostics (frames, empty containers, XHR/API-like requests) to stderr" }, { "name": "stdout", "type": "boolean", "default": false, "required": false, "help": "Print markdown to stdout instead of saving to a file" } ], "columns": [ "title", "author", "publish_time", "status", "size", "saved" ], "type": "js", "modulePath": "web/read.js", "sourceFile": "web/read.js", "navigateBefore": false }, { "site": "wechat-channels", "name": "login", "description": "Open wechat-channels login and wait until the browser session is authenticated", "access": "write", "domain": "channels.weixin.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "wechat-channels/auth.js", "sourceFile": "wechat-channels/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "wechat-channels", "name": "publish", "description": "发布视频到视频号", "access": "write", "domain": "channels.weixin.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "video", "type": "str", "required": true, "positional": true, "help": "视频文件路径 (.mp4/.mov/.avi/.webm)" }, { "name": "title", "type": "str", "required": false, "help": "短标题(建议 6-16 字)" }, { "name": "caption", "type": "str", "required": false, "help": "描述内容,支持直接写 #话题(如:日常生活 #搞笑 #生活)" }, { "name": "schedule", "type": "str", "required": false, "help": "定时发布时间(ISO8601 或 Unix 秒,如 \"2026-05-20 10:00\")" }, { "name": "draft", "type": "bool", "default": false, "required": false, "help": "保存为草稿" }, { "name": "manual", "type": "bool", "default": false, "required": false, "help": "填完所有字段后不自动发布,由用户手动点击发表(务必同时传 --site-session persistent,否则表单页约 30 秒后会被重置为空白页)" }, { "name": "timeout", "type": "int", "default": 600, "required": false, "help": "命令整体超时秒数(含登录等待 + 上传转码,默认 600)" } ], "columns": [ "status", "title", "detail" ], "type": "js", "modulePath": "wechat-channels/publish.js", "sourceFile": "wechat-channels/publish.js", "navigateBefore": false }, { "site": "wechat-channels", "name": "whoami", "description": "Show the current logged-in wechat-channels account", "access": "read", "domain": "channels.weixin.qq.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "wechat-channels/auth.js", "sourceFile": "wechat-channels/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "weibo", "name": "comments", "description": "Get comments on a Weibo post", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Post ID (numeric idstr)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of comments (max 50)" } ], "columns": [ "rank", "author", "text", "likes", "replies", "time" ], "type": "js", "modulePath": "weibo/comments.js", "sourceFile": "weibo/comments.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "delete", "description": "Delete one of my Weibo posts by id", "access": "write", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Post ID (numeric idstr or mblogid from URL / weibo me / weibo post output)" } ], "columns": [ "status", "id", "mblogid" ], "type": "js", "modulePath": "weibo/delete.js", "sourceFile": "weibo/delete.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "favorites", "description": "我的微博收藏列表", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "数量(最多50)" } ], "columns": [ "author", "text", "time", "source", "likes", "comments", "reposts", "url" ], "type": "js", "modulePath": "weibo/favorites.js", "sourceFile": "weibo/favorites.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "feed", "description": "Fetch Weibo timeline (for-you or following)", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "type", "type": "str", "default": "for-you", "required": false, "help": "Timeline type: for-you (algorithmic) or following (chronological)", "choices": [ "for-you", "following" ] }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of posts (max 50)" } ], "columns": [ "id", "author", "text", "reposts", "comments", "likes", "time", "url" ], "type": "js", "modulePath": "weibo/feed.js", "sourceFile": "weibo/feed.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "hot", "description": "微博热搜", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Number of items (max 50)" } ], "columns": [ "rank", "word", "hot_value", "category", "label", "url" ], "type": "js", "modulePath": "weibo/hot.js", "sourceFile": "weibo/hot.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "login", "description": "Open weibo login and wait until the browser session is authenticated", "access": "write", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "screen_name", "profile_url" ], "type": "js", "modulePath": "weibo/auth.js", "sourceFile": "weibo/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "weibo", "name": "me", "description": "My Weibo profile info", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "screen_name", "uid", "followers", "following", "statuses", "verified", "location" ], "type": "js", "modulePath": "weibo/me.js", "sourceFile": "weibo/me.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "post", "description": "Get a single Weibo post", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Post ID (numeric idstr or mblogid from URL)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "weibo/post.js", "sourceFile": "weibo/post.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "publish", "description": "Publish a new Weibo post immediately", "access": "write", "domain": "weibo.com", "strategy": "ui", "browser": true, "args": [ { "name": "text", "type": "string", "required": true, "positional": true, "help": "Weibo text content (max 2000 chars)" }, { "name": "images", "type": "string", "required": false, "help": "Image paths, comma-separated, max 9 (jpg/png/gif/webp)" } ], "columns": [ "status", "message", "text" ], "type": "js", "modulePath": "weibo/publish.js", "sourceFile": "weibo/publish.js", "navigateBefore": true }, { "site": "weibo", "name": "search", "description": "搜索微博", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results (max 50)" } ], "columns": [ "rank", "id", "title", "author", "time", "url" ], "type": "js", "modulePath": "weibo/search.js", "sourceFile": "weibo/search.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "user", "description": "Get Weibo user profile", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "User ID (numeric uid) or screen name" } ], "columns": [ "screen_name", "uid", "followers", "following", "statuses", "verified", "description", "location", "url" ], "type": "js", "modulePath": "weibo/user.js", "sourceFile": "weibo/user.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "user-posts", "description": "List Weibo posts from a user, optionally filtered by date range", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "User ID (numeric uid) or screen name" }, { "name": "start", "type": "str", "required": false, "help": "Start date in Asia/Shanghai (YYYY-MM-DD)" }, { "name": "end", "type": "str", "required": false, "help": "End date in Asia/Shanghai (YYYY-MM-DD)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of posts (1-100)" }, { "name": "include-retweets", "type": "boolean", "default": false, "required": false, "help": "Include retweets" } ], "columns": [ "rank", "id", "mblogid", "author", "uid", "text", "time", "reposts", "comments", "likes", "pic_count", "url" ], "type": "js", "modulePath": "weibo/user-posts.js", "sourceFile": "weibo/user-posts.js", "navigateBefore": "https://weibo.com" }, { "site": "weibo", "name": "whoami", "description": "Show the current logged-in weibo account", "access": "read", "domain": "weibo.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "screen_name", "profile_url" ], "type": "js", "modulePath": "weibo/auth.js", "sourceFile": "weibo/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "weixin", "name": "create-draft", "description": "创建微信公众号图文草稿", "access": "write", "domain": "mp.weixin.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "title", "type": "str", "required": true, "help": "文章标题 (最长64字)" }, { "name": "content", "type": "str", "required": true, "positional": true, "help": "文章正文" }, { "name": "author", "type": "str", "required": false, "help": "作者名 (最长8字)" }, { "name": "cover-image", "type": "str", "required": false, "help": "封面图片路径 (会先上传到正文再设为封面)" }, { "name": "summary", "type": "str", "required": false, "help": "文章摘要" }, { "name": "timeout", "type": "int", "default": 180, "required": false, "help": "Max seconds for the overall command (default: 180)" } ], "columns": [ "status", "detail" ], "type": "js", "modulePath": "weixin/create-draft.js", "sourceFile": "weixin/create-draft.js", "navigateBefore": false }, { "site": "weixin", "name": "download", "description": "下载微信公众号文章为 Markdown 格式", "access": "read", "domain": "mp.weixin.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "help": "WeChat article URL (mp.weixin.qq.com/s/xxx)" }, { "name": "output", "type": "str", "default": "./weixin-articles", "required": false, "help": "Output directory" }, { "name": "download-images", "type": "boolean", "default": true, "required": false, "help": "Download images locally" } ], "columns": [ "title", "author", "publish_time", "status", "size", "saved" ], "type": "js", "modulePath": "weixin/download.js", "sourceFile": "weixin/download.js", "navigateBefore": "https://mp.weixin.qq.com" }, { "site": "weixin", "name": "drafts", "description": "列出微信公众号草稿箱", "access": "read", "domain": "mp.weixin.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "最多显示条数" }, { "name": "timeout", "type": "int", "default": 60, "required": false, "help": "Max seconds for the overall command (default: 60)" } ], "columns": [ "Index", "Title", "Time" ], "type": "js", "modulePath": "weixin/drafts.js", "sourceFile": "weixin/drafts.js", "navigateBefore": false }, { "site": "weixin", "name": "search", "description": "使用搜狗微信搜索公众号文章;如需导出正文 Markdown,请使用 weixin download 处理公众号文章链接", "access": "read", "domain": "weixin.sogou.com", "strategy": "public", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词;如需正文 Markdown,请使用 weixin download 处理公众号文章链接" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "结果页码,从 1 开始" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回条数,最大 10" } ], "columns": [ "rank", "page", "title", "url", "summary", "publish_time" ], "type": "js", "modulePath": "weixin/search.js", "sourceFile": "weixin/search.js" }, { "site": "weread", "name": "ai-outline", "description": "Get AI-generated outline for a book", "access": "read", "domain": "weread.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "book-id", "type": "str", "required": true, "positional": true, "help": "Book ID (from shelf or search results)" }, { "name": "limit", "type": "int", "default": 200, "required": false, "help": "Max outline items to return" }, { "name": "depth", "type": "int", "default": 4, "required": false, "help": "Max outline depth (2=topics, 3=key points, 4=details)" }, { "name": "raw", "type": "boolean", "default": false, "required": false, "help": "Output structured rows (chapter/idx/level/text) for programmatic use" } ], "defaultFormat": "plain", "type": "js", "modulePath": "weread/ai-outline.js", "sourceFile": "weread/ai-outline.js", "navigateBefore": "https://weread.qq.com" }, { "site": "weread", "name": "book", "description": "View book details on WeRead", "access": "read", "domain": "weread.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "book-id", "type": "str", "required": true, "positional": true, "help": "Book ID from search or shelf results" } ], "columns": [ "title", "author", "publisher", "intro", "category", "rating" ], "type": "js", "modulePath": "weread/book.js", "sourceFile": "weread/book.js", "navigateBefore": "https://weread.qq.com" }, { "site": "weread", "name": "book-search", "description": "Search within a WeRead book after resolving it by title", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "book", "type": "str", "required": true, "positional": true, "help": "Book title keyword, numeric bookId, or reader URL" }, { "name": "query", "type": "str", "required": true, "positional": true, "help": "Keyword to search inside the selected book" }, { "name": "book-rank", "type": "int", "default": 1, "required": false, "help": "Which book search result to use when book is a title keyword" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max in-book matches to return (1-100)" }, { "name": "fragment-size", "type": "int", "default": 150, "required": false, "help": "Snippet length around each match (1-500)" }, { "name": "raw", "type": "boolean", "default": false, "required": false, "help": "Output structured rows instead of markdown text" } ], "defaultFormat": "md", "type": "js", "modulePath": "weread/book-search.js", "sourceFile": "weread/book-search.js" }, { "site": "weread", "name": "highlights", "description": "List your highlights (underlines) in a book", "access": "read", "domain": "weread.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "book-id", "type": "str", "required": true, "positional": true, "help": "Book ID (from shelf or search results)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results" } ], "columns": [ "chapter", "text", "createTime" ], "type": "js", "modulePath": "weread/highlights.js", "sourceFile": "weread/highlights.js", "navigateBefore": "https://weread.qq.com" }, { "site": "weread", "name": "login", "description": "Open weread login and wait until the browser session is authenticated", "access": "write", "domain": "weread.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "weread/auth.js", "sourceFile": "weread/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "weread", "name": "notebooks", "description": "List books that have highlights or notes", "access": "read", "domain": "weread.qq.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "title", "author", "noteCount", "bookId" ], "type": "js", "modulePath": "weread/notebooks.js", "sourceFile": "weread/notebooks.js", "navigateBefore": "https://weread.qq.com" }, { "site": "weread", "name": "notes", "description": "List your notes (thoughts) on a book", "access": "read", "domain": "weread.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "book-id", "type": "str", "required": true, "positional": true, "help": "Book ID (from shelf or search results)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results" } ], "columns": [ "chapter", "text", "review", "createTime" ], "type": "js", "modulePath": "weread/notes.js", "sourceFile": "weread/notes.js", "navigateBefore": "https://weread.qq.com" }, { "site": "weread", "name": "ranking", "description": "WeRead book rankings by category", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "category", "type": "str", "default": "all", "required": false, "positional": true, "help": "Category: all (default), rising, or numeric category ID" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results" } ], "columns": [ "rank", "title", "author", "category", "readingCount", "bookId" ], "type": "js", "modulePath": "weread/ranking.js", "sourceFile": "weread/ranking.js" }, { "site": "weread", "name": "search", "description": "Search books on WeRead", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max results" } ], "columns": [ "rank", "title", "author", "bookId", "url" ], "type": "js", "modulePath": "weread/search.js", "sourceFile": "weread/search.js" }, { "site": "weread", "name": "shelf", "description": "List books on your WeRead bookshelf", "access": "read", "domain": "weread.qq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results" } ], "columns": [ "title", "author", "progress", "bookId" ], "type": "js", "modulePath": "weread/shelf.js", "sourceFile": "weread/shelf.js", "navigateBefore": "https://weread.qq.com" }, { "site": "weread", "name": "whoami", "description": "Show the current logged-in weread account", "access": "read", "domain": "weread.qq.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "weread/auth.js", "sourceFile": "weread/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "weread-official", "name": "book", "description": "Show WeRead book metadata, chapters, and reading progress", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "bookId", "type": "str", "required": true, "positional": true, "help": "WeRead bookId (from `weread-official search`)" }, { "name": "no-chapters", "type": "boolean", "default": false, "required": false, "help": "Skip /book/chapterinfo call" }, { "name": "no-progress", "type": "boolean", "default": false, "required": false, "help": "Skip /book/getprogress call" } ], "columns": [ "section", "idx", "key", "value", "link" ], "type": "js", "modulePath": "weread-official/book.js", "sourceFile": "weread-official/book.js" }, { "site": "weread-official", "name": "discover", "description": "Personalized or similar-book recommendations from WeRead", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "bookId", "type": "str", "required": false, "positional": true, "help": "Anchor bookId for similar-book mode; omit for personalized recommendations" }, { "name": "count", "type": "int", "default": 12, "required": false, "help": "Page size (default 12)" }, { "name": "max-idx", "type": "int", "default": 0, "required": false, "help": "Pagination cursor (recommend: previous searchIdx; similar: previous idx)" }, { "name": "session-id", "type": "str", "required": false, "help": "Carry-forward sessionId for /book/similar paging" } ], "columns": [ "rank", "mode", "bookId", "title", "author", "rating", "readingCount", "category", "idx", "reason", "cover", "intro", "link" ], "type": "js", "modulePath": "weread-official/discover.js", "sourceFile": "weread-official/discover.js" }, { "site": "weread-official", "name": "list-apis", "description": "List every api_name supported by the WeRead agent gateway", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [], "columns": [ "rank", "apiName", "description", "required", "optional", "extras" ], "type": "js", "modulePath": "weread-official/list-apis.js", "sourceFile": "weread-official/list-apis.js" }, { "site": "weread-official", "name": "notes", "description": "List notebooks overview or merged highlights+thoughts for a book", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "bookId", "type": "str", "required": false, "positional": true, "help": "Limit to one book; omit for full notebook overview" }, { "name": "count", "type": "int", "default": 20, "required": false, "help": "Page size for the notebooks overview (1-100)" }, { "name": "last-sort", "type": "int", "required": false, "help": "Cursor: pass previous page sort value to fetch the next page (/user/notebooks)" } ], "columns": [ "kind", "bookId", "title", "author", "chapter", "reviewCount", "noteCount", "bookmarkCount", "totalNotes", "progress", "finished", "sort", "range", "text", "thought", "star", "createTime", "link" ], "type": "js", "modulePath": "weread-official/notes.js", "sourceFile": "weread-official/notes.js" }, { "site": "weread-official", "name": "readdata", "description": "Reading statistics: time, streak, preferences, top books", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "mode", "type": "str", "default": "monthly", "required": false, "help": "Stat window: weekly / monthly / annually / overall", "choices": [ "weekly", "monthly", "annually", "overall" ] }, { "name": "base-time", "type": "int", "required": false, "help": "Optional Unix timestamp inside the target period; default is current period" } ], "columns": [ "section", "idx", "key", "value", "detail" ], "type": "js", "modulePath": "weread-official/readdata.js", "sourceFile": "weread-official/readdata.js" }, { "site": "weread-official", "name": "review", "description": "Browse public reviews of a WeRead book", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "bookId", "type": "str", "required": true, "positional": true, "help": "WeRead bookId (from `weread-official search`)" }, { "name": "type", "type": "str", "default": "all", "required": false, "help": "Review filter (all/recommend/thumbs-down/newest/neutral)", "choices": [ "all", "recommend", "thumbs-down", "newest", "neutral" ] }, { "name": "count", "type": "int", "default": 20, "required": false, "help": "Page size (1-100, default 20)" }, { "name": "max-idx", "type": "int", "default": 0, "required": false, "help": "Pagination cursor — pass idx from last row of previous page" }, { "name": "synckey", "type": "int", "required": false, "help": "Sync cursor returned by previous response" } ], "columns": [ "rank", "idx", "reviewId", "star", "starLabel", "author", "isFinish", "chapter", "content", "createTime", "link" ], "type": "js", "modulePath": "weread-official/review.js", "sourceFile": "weread-official/review.js" }, { "site": "weread-official", "name": "search", "description": "Search WeRead store via the official agent gateway", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "scope", "type": "str", "default": "ebook", "required": false, "help": "Search type (all/ebook/webnovel/audio/author/fulltext/booklist/mp/article)", "choices": [ "all", "ebook", "webnovel", "audio", "author", "fulltext", "booklist", "mp", "article" ] }, { "name": "count", "type": "int", "required": false, "help": "Page size (gateway default 15 when omitted)" }, { "name": "max-idx", "type": "int", "default": 0, "required": false, "help": "Pagination offset, use searchIdx of last item from previous page" } ], "columns": [ "rank", "scope", "bookId", "title", "author", "rating", "readingCount", "category", "searchIdx", "cover", "intro", "link" ], "type": "js", "modulePath": "weread-official/search.js", "sourceFile": "weread-official/search.js" }, { "site": "weread-official", "name": "shelf", "description": "Sync your WeRead shelf (books + albums + article bookmark entry) via the official gateway", "access": "read", "domain": "weread.qq.com", "strategy": "public", "browser": false, "args": [], "columns": [ "kind", "id", "title", "author", "category", "secret", "isTop", "finished", "updateTime", "cover", "link" ], "type": "js", "modulePath": "weread-official/shelf.js", "sourceFile": "weread-official/shelf.js" }, { "site": "wikidata", "name": "entity", "description": "Fetch a Wikidata entity by Q/P/L id (label, description, aliases, claim summary)", "access": "read", "domain": "www.wikidata.org", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Entity id (e.g. Q937 = Albert Einstein, P31 = instance of)" }, { "name": "language", "type": "str", "default": "en", "required": false, "help": "Display language (ISO 639, falls back to English when missing)" } ], "columns": [ "qid", "type", "label", "description", "aliases", "claimPropertyCount", "sitelinkCount", "enwikiTitle", "modified", "url" ], "type": "js", "modulePath": "wikidata/entity.js", "sourceFile": "wikidata/entity.js" }, { "site": "wikidata", "name": "search", "description": "Search Wikidata items by keyword (returns Q-IDs)", "access": "read", "domain": "www.wikidata.org", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (label / alias)" }, { "name": "language", "type": "str", "default": "en", "required": false, "help": "Search & display language (ISO 639, e.g. en, fr, zh)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max items (1-50)" } ], "columns": [ "rank", "qid", "label", "description", "matchType", "matchText", "url" ], "type": "js", "modulePath": "wikidata/search.js", "sourceFile": "wikidata/search.js" }, { "site": "wikipedia", "name": "page", "description": "Full plain-text extract of a Wikipedia article (optional paragraph cap).", "access": "read", "domain": "wikipedia.org", "strategy": "public", "browser": false, "args": [ { "name": "title", "type": "string", "required": true, "positional": true, "help": "Article title (e.g. \"Transformer (machine learning model)\")" }, { "name": "lang", "type": "string", "default": "en", "required": false, "help": "Language code (en, zh, ja, de, ...)." }, { "name": "paragraphs", "type": "int", "default": 0, "required": false, "help": "Cap to first N paragraphs (0 = full article)." } ], "columns": [ "title", "description", "pageId", "paragraphs", "extract", "url" ], "type": "js", "modulePath": "wikipedia/page.js", "sourceFile": "wikipedia/page.js" }, { "site": "wikipedia", "name": "random", "description": "Get a random Wikipedia article", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "lang", "type": "str", "default": "en", "required": false, "help": "Language code (e.g. en, zh, ja)" } ], "columns": [ "title", "description", "extract", "url" ], "type": "js", "modulePath": "wikipedia/random.js", "sourceFile": "wikipedia/random.js" }, { "site": "wikipedia", "name": "search", "description": "Search Wikipedia articles", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max results" }, { "name": "lang", "type": "str", "default": "en", "required": false, "help": "Language code (e.g. en, zh, ja)" } ], "columns": [ "title", "snippet", "url" ], "type": "js", "modulePath": "wikipedia/search.js", "sourceFile": "wikipedia/search.js" }, { "site": "wikipedia", "name": "summary", "description": "Get Wikipedia article summary", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "title", "type": "str", "required": true, "positional": true, "help": "Article title (e.g. \"Transformer (machine learning model)\")" }, { "name": "lang", "type": "str", "default": "en", "required": false, "help": "Language code (e.g. en, zh, ja)" } ], "columns": [ "title", "description", "extract", "url" ], "type": "js", "modulePath": "wikipedia/summary.js", "sourceFile": "wikipedia/summary.js" }, { "site": "wikipedia", "name": "trending", "description": "Most-read Wikipedia articles (yesterday)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max results" }, { "name": "lang", "type": "str", "default": "en", "required": false, "help": "Language code (e.g. en, zh, ja)" } ], "columns": [ "rank", "title", "description", "views" ], "type": "js", "modulePath": "wikipedia/trending.js", "sourceFile": "wikipedia/trending.js" }, { "site": "wttr", "name": "current", "description": "Current weather conditions for a location (city, lat,lon, or airport code)", "access": "read", "domain": "wttr.in", "strategy": "public", "browser": false, "args": [ { "name": "location", "type": "str", "required": true, "positional": true, "help": "City name, \"lat,lon\", airport ICAO code, or \"@domain\"" } ], "columns": [ "location", "region", "country", "latitude", "longitude", "observedAt", "tempC", "tempF", "feelsLikeC", "feelsLikeF", "description", "humidity", "cloudCover", "pressure", "precipMm", "visibilityKm", "uvIndex", "windKmph", "windDirection", "windDirectionDegree" ], "type": "js", "modulePath": "wttr/current.js", "sourceFile": "wttr/current.js" }, { "site": "wttr", "name": "forecast", "description": "Multi-day weather forecast (up to 3 days, wttr.in free tier max)", "access": "read", "domain": "wttr.in", "strategy": "public", "browser": false, "args": [ { "name": "location", "type": "str", "required": true, "positional": true, "help": "City name, \"lat,lon\", airport ICAO code, or \"@domain\"" }, { "name": "days", "type": "int", "default": 3, "required": false, "help": "Max forecast days (1-3, wttr.in caps the response at 3 days)" } ], "columns": [ "rank", "date", "minTempC", "maxTempC", "avgTempC", "minTempF", "maxTempF", "avgTempF", "sunHour", "totalSnowCm", "uvIndex", "description", "sunrise", "sunset" ], "type": "js", "modulePath": "wttr/forecast.js", "sourceFile": "wttr/forecast.js" }, { "site": "xianyu", "name": "chat", "description": "打开闲鱼聊一聊会话,并可选发送消息", "access": "write", "domain": "www.goofish.com", "strategy": "cookie", "browser": true, "args": [ { "name": "item_id", "type": "str", "required": true, "positional": true, "help": "闲鱼商品 item_id" }, { "name": "user_id", "type": "str", "required": true, "positional": true, "help": "聊一聊对方的 user_id / peerUserId" }, { "name": "text", "type": "str", "required": false, "help": "Message to send after opening the chat" } ], "columns": [ "status", "peer_name", "item_title", "price", "location", "message" ], "type": "js", "modulePath": "xianyu/chat.js", "sourceFile": "xianyu/chat.js", "navigateBefore": false }, { "site": "xianyu", "name": "inbox", "description": "列出闲鱼最近私信会话", "access": "read", "domain": "www.goofish.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of conversations to return" }, { "name": "unread-only", "type": "bool", "default": false, "required": false, "help": "Return only conversations with unread messages" }, { "name": "resolve-ids", "type": "bool", "default": false, "required": false, "help": "Click each visible conversation to resolve item_id and peer_user_id from the chat URL" } ], "columns": [ "rank", "peer_name", "peer_user_id", "item_id", "item_title", "price", "last_message", "unread", "unread_count", "url" ], "type": "js", "modulePath": "xianyu/inbox.js", "sourceFile": "xianyu/inbox.js", "navigateBefore": false }, { "site": "xianyu", "name": "item", "description": "查看闲鱼商品详情", "access": "read", "domain": "www.goofish.com", "strategy": "cookie", "browser": true, "args": [ { "name": "item_id", "type": "str", "required": true, "positional": true, "help": "闲鱼商品 item_id" } ], "columns": [ "item_id", "title", "price", "condition", "brand", "location", "seller_name", "want_count" ], "type": "js", "modulePath": "xianyu/item.js", "sourceFile": "xianyu/item.js", "navigateBefore": false }, { "site": "xianyu", "name": "login", "description": "Open xianyu login and wait until the browser session is authenticated", "access": "write", "domain": "goofish.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "xianyu/auth.js", "sourceFile": "xianyu/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "xianyu", "name": "messages", "description": "读取指定闲鱼私信会话的最近聊天内容", "access": "read", "domain": "www.goofish.com", "strategy": "cookie", "browser": true, "args": [ { "name": "item_id", "type": "str", "required": false, "positional": true, "help": "闲鱼商品 item_id" }, { "name": "user_id", "type": "str", "required": false, "positional": true, "help": "聊一聊对方的 user_id / peerUserId" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Number of visible messages to return" }, { "name": "rank", "type": "int", "default": 0, "required": false, "help": "Conversation rank from xianyu inbox; clicks the visible row instead of requiring IDs" } ], "columns": [ "index", "peer_name", "item_title", "message", "item_id", "peer_user_id", "url" ], "type": "js", "modulePath": "xianyu/messages.js", "sourceFile": "xianyu/messages.js", "navigateBefore": false }, { "site": "xianyu", "name": "publish", "description": "发布闲鱼宝贝(需先在浏览器中登录闲鱼)", "access": "write", "domain": "www.goofish.com", "strategy": "cookie", "browser": true, "args": [ { "name": "title", "type": "str", "required": true, "positional": true, "help": "商品标题" }, { "name": "description", "type": "str", "required": true, "positional": true, "help": "商品描述/详情" }, { "name": "price", "type": "float", "required": true, "positional": true, "help": "出售价格(元)" }, { "name": "condition", "type": "str", "required": true, "positional": true, "help": "成色:全新 / 几乎全新 / 轻微使用 / 明显使用 / 老旧" }, { "name": "category", "type": "str", "required": true, "positional": true, "help": "商品分类关键词(如:手机、衣服、图书)" }, { "name": "original_price", "type": "float", "required": false, "help": "原价(选填,用于显示折扣)" }, { "name": "location", "type": "str", "required": false, "help": "所在地区(选填,如:杭州)" }, { "name": "images", "type": "str", "required": false, "help": "本地图片路径,多张用逗号分隔(选填,如:/tmp/a.jpg,/tmp/b.jpg)" } ], "columns": [ "status", "item_id", "title", "price", "condition", "url", "message" ], "type": "js", "modulePath": "xianyu/publish.js", "sourceFile": "xianyu/publish.js", "navigateBefore": false }, { "site": "xianyu", "name": "reply", "description": "回复指定闲鱼私信会话", "access": "write", "domain": "www.goofish.com", "strategy": "cookie", "browser": true, "args": [ { "name": "item_id", "type": "str", "required": false, "positional": true, "help": "闲鱼商品 item_id" }, { "name": "user_id", "type": "str", "required": false, "positional": true, "help": "聊一聊对方的 user_id / peerUserId" }, { "name": "text", "type": "str", "required": true, "help": "Message text to send" }, { "name": "rank", "type": "int", "default": 0, "required": false, "help": "Conversation rank from xianyu inbox; clicks the visible row instead of requiring IDs" } ], "columns": [ "status", "peer_name", "item_title", "price", "location", "message" ], "type": "js", "modulePath": "xianyu/reply.js", "sourceFile": "xianyu/reply.js", "navigateBefore": false }, { "site": "xianyu", "name": "search", "description": "搜索闲鱼商品(支持服务端价格区间 / 地区筛选)", "access": "read", "domain": "www.goofish.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回结果数(最多 60,自动翻页)" }, { "name": "min-price", "type": "float", "required": false, "help": "最低价格(元),服务端筛选" }, { "name": "max-price", "type": "float", "required": false, "help": "最高价格(元),服务端筛选" }, { "name": "province", "type": "string", "required": false, "help": "省份名(如 广东),服务端按地区筛选" }, { "name": "city", "type": "string", "required": false, "help": "城市名(如 深圳 / 湛江),可单独使用,服务端按地区筛选" } ], "columns": [ "item_id", "rank", "title", "price", "condition", "brand", "location", "badge", "want", "url" ], "type": "js", "modulePath": "xianyu/search.js", "sourceFile": "xianyu/search.js", "navigateBefore": false }, { "site": "xianyu", "name": "whoami", "description": "Show the current logged-in xianyu account", "access": "read", "domain": "goofish.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "xianyu/auth.js", "sourceFile": "xianyu/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "xiaoe", "name": "catalog", "description": "小鹅通课程目录(支持普通课程、专栏、大专栏)", "access": "read", "domain": "h5.xet.citv.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "课程页面 URL" } ], "columns": [ "ch", "chapter", "no", "title", "type", "resource_id", "url", "status" ], "type": "js", "modulePath": "xiaoe/catalog.js", "sourceFile": "xiaoe/catalog.js", "navigateBefore": "https://h5.xet.citv.cn" }, { "site": "xiaoe", "name": "content", "description": "提取小鹅通图文页面内容为文本", "access": "read", "domain": "h5.xet.citv.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "页面 URL" } ], "columns": [ "title", "content", "content_length", "image_count" ], "type": "js", "modulePath": "xiaoe/content.js", "sourceFile": "xiaoe/content.js", "navigateBefore": "https://h5.xet.citv.cn" }, { "site": "xiaoe", "name": "courses", "description": "列出已购小鹅通课程(含 URL 和店铺名)", "access": "read", "domain": "study.xiaoe-tech.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "title", "shop", "url" ], "type": "js", "modulePath": "xiaoe/courses.js", "sourceFile": "xiaoe/courses.js", "navigateBefore": "https://study.xiaoe-tech.com" }, { "site": "xiaoe", "name": "detail", "description": "小鹅通课程详情(名称、价格、学员数、店铺)", "access": "read", "domain": "h5.xet.citv.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "课程页面 URL" } ], "columns": [ "name", "price", "original_price", "user_count", "shop_name" ], "type": "js", "modulePath": "xiaoe/detail.js", "sourceFile": "xiaoe/detail.js", "navigateBefore": "https://h5.xet.citv.cn" }, { "site": "xiaoe", "name": "login", "description": "Open xiaoe login and wait until the browser session is authenticated", "access": "write", "domain": "xiaoe-tech.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "xiaoe/auth.js", "sourceFile": "xiaoe/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "xiaoe", "name": "play-url", "description": "小鹅通视频/音频/直播回放 M3U8 播放地址", "access": "read", "domain": "h5.xet.citv.cn", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "小节页面 URL" } ], "columns": [ "title", "resource_id", "m3u8_url", "duration_sec", "method" ], "type": "js", "modulePath": "xiaoe/play-url.js", "sourceFile": "xiaoe/play-url.js", "navigateBefore": "https://h5.xet.citv.cn" }, { "site": "xiaoe", "name": "whoami", "description": "Show the current logged-in xiaoe account", "access": "read", "domain": "xiaoe-tech.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "xiaoe/auth.js", "sourceFile": "xiaoe/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "xiaohongshu", "name": "ask", "description": "Ask 小红书点点 and return the answer with citation sources.", "access": "write", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Question for 点点" }, { "name": "timeout", "type": "int", "default": 90, "required": false, "help": "Seconds to wait for the 点点 answer" }, { "name": "source-limit", "type": "int", "default": 10, "required": false, "help": "Maximum citation sources to return" } ], "columns": [ "query", "answer", "source_count", "source_total_text", "sources_summary", "sources", "warning", "message_id", "conversation_id" ], "type": "js", "modulePath": "xiaohongshu/ask.js", "sourceFile": "xiaohongshu/ask.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "comments", "description": "获取小红书笔记评论(支持楼中楼子回复)", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note-id", "type": "str", "required": true, "positional": true, "help": "Full Xiaohongshu note URL with xsec_token" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of top-level comments (max 50)" }, { "name": "with-replies", "type": "boolean", "default": false, "required": false, "help": "Include nested replies (楼中楼)" } ], "columns": [ "rank", "author", "userId", "profileUrl", "text", "likes", "time", "is_reply", "reply_to" ], "type": "js", "modulePath": "xiaohongshu/comments.js", "sourceFile": "xiaohongshu/comments.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "creator-note-detail", "description": "小红书单篇笔记详情页数据 (笔记信息 + 核心/互动数据 + 观看来源 + 观众画像 + 趋势数据)", "access": "read", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note-id", "type": "string", "required": true, "positional": true, "help": "Note ID (from creator-notes or note-detail page URL)" } ], "columns": [ "section", "metric", "value", "extra" ], "type": "js", "modulePath": "xiaohongshu/creator-note-detail.js", "sourceFile": "xiaohongshu/creator-note-detail.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "creator-notes", "description": "小红书创作者笔记列表 + 每篇数据 (标题/日期/观看/点赞/收藏/评论)", "access": "read", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of notes to return" } ], "columns": [ "rank", "id", "title", "date", "views", "likes", "collects", "comments", "url" ], "type": "js", "modulePath": "xiaohongshu/creator-notes-summary.js", "sourceFile": "xiaohongshu/creator-notes-summary.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "creator-notes-summary", "description": "小红书最近笔记批量摘要 (列表 + 单篇关键数据汇总)", "access": "read", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 3, "required": false, "help": "Number of recent notes to summarize" }, { "name": "timeout", "type": "int", "default": 180, "required": false, "help": "Max seconds for the overall command (default: 180)" } ], "columns": [ "rank", "id", "title", "views", "likes", "collects", "comments", "shares", "avg_view_time", "rise_fans", "top_source", "top_interest", "url" ], "type": "js", "modulePath": "xiaohongshu/creator-notes-summary.js", "sourceFile": "xiaohongshu/creator-notes-summary.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "creator-profile", "description": "小红书创作者账号信息 (粉丝/关注/获赞/成长等级)", "access": "read", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "field", "value" ], "type": "js", "modulePath": "xiaohongshu/creator-profile.js", "sourceFile": "xiaohongshu/creator-profile.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "creator-stats", "description": "小红书创作者数据总览 (观看/点赞/收藏/评论/分享/涨粉,含每日趋势)", "access": "read", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "period", "type": "string", "default": "seven", "required": false, "help": "Stats period: seven or thirty", "choices": [ "seven", "thirty" ] } ], "columns": [ "metric", "total", "trend" ], "type": "js", "modulePath": "xiaohongshu/creator-stats.js", "sourceFile": "xiaohongshu/creator-stats.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "delete-note", "description": "删除小红书已发布笔记 (creator center UI automation)", "access": "write", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note-id", "type": "str", "required": true, "positional": true, "help": "Note ID (e.g. 6a08ba0b000000000702a893 from xiaohongshu creator-notes / URL)" }, { "name": "execute", "type": "boolean", "default": false, "required": false, "help": "Actually click delete + confirm. Default is dry-run target verification only." } ], "columns": [ "status", "note_id", "message" ], "type": "js", "modulePath": "xiaohongshu/delete-note.js", "sourceFile": "xiaohongshu/delete-note.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "download", "description": "下载小红书笔记中的图片和视频", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note-id", "type": "str", "required": true, "positional": true, "help": "Full Xiaohongshu note URL with xsec_token, or xhslink short link" }, { "name": "output", "type": "str", "default": "./xiaohongshu-downloads", "required": false, "help": "Output directory" } ], "columns": [ "index", "type", "status", "size" ], "type": "js", "modulePath": "xiaohongshu/download.js", "sourceFile": "xiaohongshu/download.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "draft-clear", "description": "清空小红书本地草稿", "access": "write", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "type", "type": "str", "default": "image", "required": false, "help": "Draft type: image, video, article, audio, all" }, { "name": "execute", "type": "bool", "default": false, "required": false, "help": "Actually clear local drafts. Default is dry-run count only." } ], "columns": [ "status", "type", "count", "message" ], "type": "js", "modulePath": "xiaohongshu/draft-clear.js", "sourceFile": "xiaohongshu/draft-clear.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "draft-delete", "description": "删除一条小红书本地草稿", "access": "write", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Draft id returned by `opencli xiaohongshu drafts`" }, { "name": "type", "type": "str", "default": "image", "required": false, "help": "Draft type: image, video, article, audio" }, { "name": "execute", "type": "bool", "default": false, "required": false, "help": "Actually delete the local draft. Default is dry-run verification only." } ], "columns": [ "status", "id", "type", "message" ], "type": "js", "modulePath": "xiaohongshu/draft-delete.js", "sourceFile": "xiaohongshu/draft-delete.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "draft-open", "description": "读取一条小红书本地草稿详情", "access": "read", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Draft id returned by `opencli xiaohongshu drafts`" }, { "name": "type", "type": "str", "default": "image", "required": false, "help": "Draft type: image, video, article, audio" } ], "columns": [ "id", "type", "title", "updated_at", "images", "content" ], "type": "js", "modulePath": "xiaohongshu/draft-open.js", "sourceFile": "xiaohongshu/draft-open.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "drafts", "description": "小红书本地草稿箱列表", "access": "read", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "type", "type": "str", "default": "image", "required": false, "help": "Draft type: image, video, article, audio" } ], "columns": [ "rank", "id", "type", "title", "updated_at", "images", "text_preview" ], "type": "js", "modulePath": "xiaohongshu/drafts.js", "sourceFile": "xiaohongshu/drafts.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "feed", "description": "小红书首页推荐 Feed (reads hydrated Pinia store)", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items to return" } ], "columns": [ "id", "title", "author", "likes", "type", "url" ], "type": "js", "modulePath": "xiaohongshu/feed.js", "sourceFile": "xiaohongshu/feed.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "follow", "description": "关注小红书用户 (profile UI automation)", "access": "write", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user-id", "type": "str", "required": true, "positional": true, "help": "User ID (e.g. 5d8f88dc0000000001005d3a) or profile URL" } ], "columns": [ "status", "user_id", "url" ], "type": "js", "modulePath": "xiaohongshu/follow.js", "sourceFile": "xiaohongshu/follow.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "liked", "description": "小红书赞过笔记列表", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": false, "help": "User id or profile URL (defaults to current logged-in user)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of notes to return" } ], "columns": [ "rank", "id", "title", "author", "likes", "type", "url" ], "type": "js", "modulePath": "xiaohongshu/liked.js", "sourceFile": "xiaohongshu/liked.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "login", "description": "Open xiaohongshu login and wait until the browser session is authenticated", "access": "write", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "username", "followers" ], "type": "js", "modulePath": "xiaohongshu/auth.js", "sourceFile": "xiaohongshu/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "xiaohongshu", "name": "note", "description": "获取小红书笔记正文和互动数据", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "note-id", "type": "str", "required": true, "positional": true, "help": "Full Xiaohongshu note URL with xsec_token" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "xiaohongshu/note.js", "sourceFile": "xiaohongshu/note.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "notifications", "description": "小红书通知 (mentions/likes/connections)", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "intercept", "browser": true, "args": [ { "name": "type", "type": "str", "default": "mentions", "required": false, "help": "Notification type: mentions, likes, or connections" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of notifications to return" } ], "columns": [ "rank", "user", "action", "content", "note", "time" ], "type": "js", "modulePath": "xiaohongshu/notifications.js", "sourceFile": "xiaohongshu/notifications.js", "navigateBefore": true }, { "site": "xiaohongshu", "name": "publish", "description": "小红书发布图文笔记 (creator center UI automation)", "access": "write", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "content", "type": "str", "required": true, "positional": true, "help": "笔记正文" }, { "name": "title", "type": "str", "required": true, "help": "笔记标题 (最多20字)" }, { "name": "images", "type": "str", "required": false, "help": "图片路径,逗号分隔,最多9张 (jpg/png/gif/webp)" }, { "name": "card-text", "type": "str", "required": false, "help": "文字配图卡片文字,多张卡片用 ||| 分隔,卡内换行用 \\n" }, { "name": "card-style", "type": "str", "required": false, "help": "文字配图卡片样式,运行时按页面实际选项匹配;找不到会失败。省略时使用基础。可选: 基础(默认兜底,万能) 边框(金句/要点卡) 备忘(提醒/随手记) 清新(日常/清单贴士) 涂写(随笔/碎碎念) 便签(笔记/提醒) 光影(情绪/文艺) 涂鸦(趣味/童话) 简约(干货/观点) 手写(日记/情感) 插图(生活方式/轻松话题) 美漫(活力/趣味/故事感) 弥散(弥散光氛围) 柔和(柔和/温柔金句) 印刷(印刷海报/排版) 科技(科技/产品) 贺卡(节日祝福) 札记(艺术/水彩氛围) 书摘(书摘/引用) 手帐(手帐拼贴) 几何(醒目/有力主张)" }, { "name": "topics", "type": "str", "required": false, "help": "话题标签,逗号分隔,不含 # 号" }, { "name": "draft", "type": "bool", "default": false, "required": false, "help": "保存为草稿,不直接发布" } ], "columns": [ "status", "detail" ], "type": "js", "modulePath": "xiaohongshu/publish.js", "sourceFile": "xiaohongshu/publish.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "saved", "description": "小红书收藏笔记列表", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": false, "help": "User id or profile URL (defaults to current logged-in user)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of notes to return" } ], "columns": [ "rank", "id", "title", "author", "likes", "type", "url" ], "type": "js", "modulePath": "xiaohongshu/saved.js", "sourceFile": "xiaohongshu/saved.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "search", "description": "搜索小红书笔记", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results" } ], "columns": [ "rank", "title", "author", "likes", "published_at", "url" ], "type": "js", "modulePath": "xiaohongshu/search.js", "sourceFile": "xiaohongshu/search.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "unfollow", "description": "取消关注小红书用户 (profile UI automation)", "access": "write", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user-id", "type": "str", "required": true, "positional": true, "help": "User ID (e.g. 5d8f88dc0000000001005d3a) or profile URL" } ], "columns": [ "status", "user_id", "url" ], "type": "js", "modulePath": "xiaohongshu/unfollow.js", "sourceFile": "xiaohongshu/unfollow.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "user", "description": "Get public notes from a Xiaohongshu user profile", "access": "read", "domain": "www.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "string", "required": true, "positional": true, "help": "User id or profile URL" }, { "name": "limit", "type": "int", "default": 15, "required": false, "help": "Number of notes to return" } ], "columns": [ "id", "title", "type", "likes", "url" ], "type": "js", "modulePath": "xiaohongshu/user.js", "sourceFile": "xiaohongshu/user.js", "navigateBefore": false }, { "site": "xiaohongshu", "name": "whoami", "description": "Show the current logged-in xiaohongshu account", "access": "read", "domain": "creator.xiaohongshu.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "username", "followers" ], "type": "js", "modulePath": "xiaohongshu/auth.js", "sourceFile": "xiaohongshu/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "xiaoyuzhou", "name": "download", "description": "Download Xiaoyuzhou episode audio", "access": "read", "domain": "www.xiaoyuzhoufm.com", "strategy": "local", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Episode ID (eid from podcast-episodes output)" }, { "name": "output", "type": "str", "default": "./xiaoyuzhou-downloads", "required": false, "help": "Output directory" } ], "columns": [ "title", "podcast", "status", "size", "file" ], "type": "js", "modulePath": "xiaoyuzhou/download.js", "sourceFile": "xiaoyuzhou/download.js" }, { "site": "xiaoyuzhou", "name": "episode", "description": "View details of a Xiaoyuzhou podcast episode", "access": "read", "domain": "www.xiaoyuzhoufm.com", "strategy": "local", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Episode ID (eid from podcast-episodes output)" } ], "columns": [ "title", "podcast", "duration", "plays", "comments", "likes", "date" ], "type": "js", "modulePath": "xiaoyuzhou/episode.js", "sourceFile": "xiaoyuzhou/episode.js" }, { "site": "xiaoyuzhou", "name": "podcast", "description": "View a Xiaoyuzhou podcast profile", "access": "read", "domain": "www.xiaoyuzhoufm.com", "strategy": "local", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Podcast ID (from xiaoyuzhoufm.com URL)" } ], "columns": [ "title", "author", "description", "subscribers", "episodes", "updated" ], "type": "js", "modulePath": "xiaoyuzhou/podcast.js", "sourceFile": "xiaoyuzhou/podcast.js" }, { "site": "xiaoyuzhou", "name": "podcast-episodes", "description": "List episodes of a Xiaoyuzhou podcast", "access": "read", "domain": "www.xiaoyuzhoufm.com", "strategy": "local", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Podcast ID (from xiaoyuzhoufm.com URL)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max episodes to show" } ], "columns": [ "eid", "title", "duration", "plays", "date" ], "type": "js", "modulePath": "xiaoyuzhou/podcast-episodes.js", "sourceFile": "xiaoyuzhou/podcast-episodes.js" }, { "site": "xiaoyuzhou", "name": "transcript", "description": "Download Xiaoyuzhou transcript as JSON and text (requires local credentials)", "access": "read", "domain": "www.xiaoyuzhoufm.com", "strategy": "public", "browser": false, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Episode ID (eid from podcast-episodes output)" }, { "name": "output", "type": "str", "default": "./xiaoyuzhou-transcripts", "required": false, "help": "Output directory" }, { "name": "json", "type": "boolean", "default": true, "required": false, "help": "Save transcript JSON file" }, { "name": "text", "type": "boolean", "default": true, "required": false, "help": "Save extracted transcript text file" } ], "columns": [ "title", "podcast", "status", "segments", "json_file", "text_file" ], "type": "js", "modulePath": "xiaoyuzhou/transcript.js", "sourceFile": "xiaoyuzhou/transcript.js" }, { "site": "xueqiu", "name": "comments", "description": "获取单只股票的讨论动态", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Stock symbol, e.g. SH600519, AAPL, or 00700" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of discussion posts to return" } ], "columns": [ "author", "text", "likes", "replies", "retweets", "created_at", "url" ], "type": "js", "modulePath": "xueqiu/comments.js", "sourceFile": "xueqiu/comments.js", "navigateBefore": false }, { "site": "xueqiu", "name": "earnings-date", "description": "获取股票预计财报发布日期(公司大事)", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "股票代码,如 SH600519、SZ000858、00700" }, { "name": "next", "type": "bool", "default": false, "required": false, "help": "仅返回最近一次未发布的财报日期" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回数量,默认 10" } ], "columns": [ "date", "report", "status" ], "type": "js", "modulePath": "xueqiu/earnings-date.js", "sourceFile": "xueqiu/earnings-date.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "feed", "description": "获取雪球首页时间线(关注用户的动态)", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "page", "type": "int", "default": 1, "required": false, "help": "页码,默认 1" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "每页数量,默认 20" } ], "columns": [ "author", "text", "likes", "replies", "url" ], "type": "js", "modulePath": "xueqiu/feed.js", "sourceFile": "xueqiu/feed.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "fund-holdings", "description": "获取蛋卷基金持仓明细(可用 --account 按子账户过滤)", "access": "read", "domain": "danjuanfunds.com", "strategy": "cookie", "browser": true, "args": [ { "name": "account", "type": "str", "default": "", "required": false, "help": "按子账户名称或 ID 过滤" } ], "columns": [ "accountName", "fdCode", "fdName", "marketValue", "volume", "dailyGain", "holdGain", "holdGainRate", "marketPercent" ], "type": "js", "modulePath": "xueqiu/fund-holdings.js", "sourceFile": "xueqiu/fund-holdings.js", "navigateBefore": "https://danjuanfunds.com/my-money" }, { "site": "xueqiu", "name": "fund-snapshot", "description": "获取蛋卷基金快照(总资产、子账户、持仓,推荐 -f json 输出)", "access": "read", "domain": "danjuanfunds.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "asOf", "totalAssetAmount", "totalFundMarketValue", "accountCount", "holdingCount" ], "type": "js", "modulePath": "xueqiu/fund-snapshot.js", "sourceFile": "xueqiu/fund-snapshot.js", "navigateBefore": "https://danjuanfunds.com/my-money" }, { "site": "xueqiu", "name": "groups", "description": "获取雪球自选股分组列表(含模拟组合)", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "pid", "name", "count" ], "type": "js", "modulePath": "xueqiu/groups.js", "sourceFile": "xueqiu/groups.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "hot", "description": "获取雪球热门动态", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量,默认 20,最大 50" } ], "columns": [ "rank", "author", "text", "likes", "url" ], "type": "js", "modulePath": "xueqiu/hot.js", "sourceFile": "xueqiu/hot.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "hot-stock", "description": "获取雪球热门股票榜", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "返回数量,默认 20,最大 50" }, { "name": "type", "type": "str", "default": "10", "required": false, "help": "榜单类型 10=人气榜(默认) 12=关注榜" } ], "columns": [ "rank", "symbol", "name", "price", "changePercent", "heat" ], "type": "js", "modulePath": "xueqiu/hot-stock.js", "sourceFile": "xueqiu/hot-stock.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "kline", "description": "获取雪球股票K线(历史行情)数据", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "股票代码,如 SH600519、SZ000858、AAPL" }, { "name": "days", "type": "int", "default": 14, "required": false, "help": "回溯天数(默认14天)" } ], "columns": [ "date", "open", "high", "low", "close", "volume" ], "type": "js", "modulePath": "xueqiu/kline.js", "sourceFile": "xueqiu/kline.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "login", "description": "Open xueqiu login and wait until the browser session is authenticated", "access": "write", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id" ], "type": "js", "modulePath": "xueqiu/auth.js", "sourceFile": "xueqiu/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "xueqiu", "name": "search", "description": "搜索雪球股票(代码或名称)", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "搜索关键词,如 茅台、AAPL、腾讯" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "返回数量,默认 10" } ], "columns": [ "symbol", "name", "exchange", "price", "changePercent", "url" ], "type": "js", "modulePath": "xueqiu/search.js", "sourceFile": "xueqiu/search.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "stock", "description": "获取雪球股票实时行情", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "股票代码,如 SH600519、SZ000858、AAPL、00700" } ], "columns": [ "name", "symbol", "price", "changePercent", "marketCap" ], "type": "js", "modulePath": "xueqiu/stock.js", "sourceFile": "xueqiu/stock.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "watchlist", "description": "获取雪球自选股/模拟组合股票列表", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "pid", "type": "str", "default": "-1", "required": false, "help": "分组ID:-1=全部(默认) -4=模拟 -5=沪深 -6=美股 -7=港股 -10=实盘 0=持仓(通过 xueqiu groups 获取)" }, { "name": "limit", "type": "int", "default": 100, "required": false, "help": "默认 100" } ], "columns": [ "symbol", "name", "price", "changePercent" ], "type": "js", "modulePath": "xueqiu/watchlist.js", "sourceFile": "xueqiu/watchlist.js", "navigateBefore": "https://xueqiu.com" }, { "site": "xueqiu", "name": "whoami", "description": "Show the current logged-in xueqiu account", "access": "read", "domain": "xueqiu.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id" ], "type": "js", "modulePath": "xueqiu/auth.js", "sourceFile": "xueqiu/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yahoo", "name": "search", "description": "Search Yahoo (powered by Bing)", "access": "read", "domain": "search.yahoo.com", "strategy": "public", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 7, "required": false, "help": "Number of results per page (max 7)" }, { "name": "page", "type": "int", "default": 1, "required": false, "help": "Page number (1, 2, 3...). Yahoo returns ~7 results per page" } ], "columns": [ "rank", "title", "url", "snippet" ], "type": "js", "modulePath": "yahoo/search.js", "sourceFile": "yahoo/search.js" }, { "site": "yahoo-finance", "name": "quote", "description": "Yahoo Finance 股票行情", "access": "read", "domain": "finance.yahoo.com", "strategy": "cookie", "browser": true, "args": [ { "name": "symbol", "type": "str", "required": true, "positional": true, "help": "Stock ticker (e.g. AAPL, MSFT, TSLA)" } ], "columns": [ "symbol", "name", "price", "change", "changePercent", "open", "high", "low", "volume", "marketCap" ], "type": "js", "modulePath": "yahoo-finance/quote.js", "sourceFile": "yahoo-finance/quote.js", "navigateBefore": "https://finance.yahoo.com" }, { "site": "yollomi", "name": "background", "description": "Generate AI background for a product/object image (5 credits)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "image", "type": "str", "required": true, "positional": true, "help": "Image URL (upload via \"opencli yollomi upload\" first)" }, { "name": "prompt", "type": "str", "default": "", "required": false, "help": "Background description (optional)" }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL" } ], "columns": [ "status", "file", "size", "url" ], "type": "js", "modulePath": "yollomi/background.js", "sourceFile": "yollomi/background.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "edit", "description": "Edit images with AI text prompts (Qwen image edit)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "image", "type": "str", "required": true, "positional": true, "help": "Input image URL (upload via \"opencli yollomi upload\" first)" }, { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Editing instruction (e.g. \"Make it look vintage\")" }, { "name": "model", "type": "str", "default": "qwen-image-edit", "required": false, "help": "Edit model", "choices": [ "qwen-image-edit", "qwen-image-edit-plus" ] }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL" } ], "columns": [ "status", "file", "size", "credits", "url" ], "type": "js", "modulePath": "yollomi/edit.js", "sourceFile": "yollomi/edit.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "face-swap", "description": "Swap faces between two photos (3 credits)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "source", "type": "str", "required": true, "help": "Source face image URL" }, { "name": "target", "type": "str", "required": true, "help": "Target photo URL" }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL" } ], "columns": [ "status", "file", "size", "url" ], "type": "js", "modulePath": "yollomi/face-swap.js", "sourceFile": "yollomi/face-swap.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "generate", "description": "Generate images with AI (text-to-image or image-to-image)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Text prompt describing the image" }, { "name": "model", "type": "str", "default": "z-image-turbo", "required": false, "help": "Model ID (z-image-turbo, flux-schnell, nano-banana, flux-2-pro, ...)" }, { "name": "ratio", "type": "str", "default": "1:1", "required": false, "help": "Aspect ratio", "choices": [ "1:1", "16:9", "9:16", "4:3", "3:4" ] }, { "name": "image", "type": "str", "required": false, "help": "Input image URL for image-to-image (upload via \"opencli yollomi upload\" first)" }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URLs, skip download" } ], "columns": [ "index", "status", "file", "size", "url" ], "type": "js", "modulePath": "yollomi/generate.js", "sourceFile": "yollomi/generate.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "models", "description": "List available Yollomi AI models (image, video, tools)", "access": "read", "strategy": "public", "browser": false, "args": [ { "name": "type", "type": "str", "default": "all", "required": false, "help": "Filter by model type", "choices": [ "all", "image", "video", "tool" ] } ], "columns": [ "type", "model", "credits", "description" ], "type": "js", "modulePath": "yollomi/models.js", "sourceFile": "yollomi/models.js" }, { "site": "yollomi", "name": "object-remover", "description": "Remove unwanted objects from images (3 credits)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "image", "type": "str", "required": true, "positional": true, "help": "Image URL" }, { "name": "mask", "type": "str", "required": true, "positional": true, "help": "Mask image URL (white = area to remove)" }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL" } ], "columns": [ "status", "file", "size", "url" ], "type": "js", "modulePath": "yollomi/object-remover.js", "sourceFile": "yollomi/object-remover.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "remove-bg", "description": "Remove image background with AI (free)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "image", "type": "str", "required": true, "positional": true, "help": "Image URL to remove background from" }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL" } ], "columns": [ "status", "file", "size", "url" ], "type": "js", "modulePath": "yollomi/remove-bg.js", "sourceFile": "yollomi/remove-bg.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "restore", "description": "Restore old or damaged photos with AI (4 credits)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "image", "type": "str", "required": true, "positional": true, "help": "Image URL to restore" }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL" } ], "columns": [ "status", "file", "size", "url" ], "type": "js", "modulePath": "yollomi/restore.js", "sourceFile": "yollomi/restore.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "try-on", "description": "Virtual try-on — see how clothes look on a person (3 credits)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "person", "type": "str", "required": true, "help": "Person photo URL (upload via \"opencli yollomi upload\" first)" }, { "name": "cloth", "type": "str", "required": true, "help": "Clothing image URL" }, { "name": "cloth-type", "type": "str", "default": "upper", "required": false, "help": "Clothing type", "choices": [ "upper", "lower", "overall" ] }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL" } ], "columns": [ "status", "file", "size", "url" ], "type": "js", "modulePath": "yollomi/try-on.js", "sourceFile": "yollomi/try-on.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "upload", "description": "Upload an image or video to Yollomi (returns URL for other commands)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "file", "type": "str", "required": true, "positional": true, "help": "Local file path to upload" } ], "columns": [ "status", "file", "size", "url" ], "type": "js", "modulePath": "yollomi/upload.js", "sourceFile": "yollomi/upload.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "upscale", "description": "Upscale image resolution with AI (1 credit)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "image", "type": "str", "required": true, "positional": true, "help": "Image URL to upscale" }, { "name": "scale", "type": "str", "default": "2", "required": false, "help": "Upscale factor (2 or 4)", "choices": [ "2", "4" ] }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL" } ], "columns": [ "status", "file", "size", "scale", "url" ], "type": "js", "modulePath": "yollomi/upscale.js", "sourceFile": "yollomi/upscale.js", "navigateBefore": "https://yollomi.com" }, { "site": "yollomi", "name": "video", "description": "Generate videos with AI (text-to-video or image-to-video)", "access": "write", "domain": "yollomi.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Text prompt describing the video" }, { "name": "model", "type": "str", "default": "kling-2-1", "required": false, "help": "Model (kling-2-1, openai-sora-2, google-veo-3-1, wan-2-5-t2v, ...)" }, { "name": "image", "type": "str", "required": false, "help": "Input image URL for image-to-video" }, { "name": "ratio", "type": "str", "default": "16:9", "required": false, "help": "Aspect ratio", "choices": [ "1:1", "16:9", "9:16", "4:3", "3:4" ] }, { "name": "output", "type": "str", "default": "./yollomi-output", "required": false, "help": "Output directory" }, { "name": "no-download", "type": "boolean", "default": false, "required": false, "help": "Only show URL, skip download" } ], "columns": [ "status", "file", "size", "credits", "url" ], "type": "js", "modulePath": "yollomi/video.js", "sourceFile": "yollomi/video.js", "navigateBefore": "https://yollomi.com" }, { "site": "youdao", "name": "note", "description": "Read a public shared Youdao Note", "access": "read", "domain": "share.note.youdao.com", "strategy": "public", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "Full share URL of the Youdao Note" } ], "columns": [ "title", "content", "summary", "keywords", "created_at", "file_size", "url" ], "type": "js", "modulePath": "youdao/note.js", "sourceFile": "youdao/note.js" }, { "site": "youtube", "name": "channel", "description": "Get YouTube channel info and recent videos", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Channel ID (UCxxxx) or handle (@name)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max recent videos (max 30)" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "youtube/channel.js", "sourceFile": "youtube/channel.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "comments", "description": "Get YouTube video comments", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "YouTube video URL or video ID" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max comments (max 100)" } ], "columns": [ "rank", "author", "text", "likes", "replies", "time" ], "type": "js", "modulePath": "youtube/comments.js", "sourceFile": "youtube/comments.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "feed", "description": "Get YouTube homepage recommended videos", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max videos to return (default 20, max 100)" } ], "columns": [ "rank", "title", "channel", "video_id", "views", "duration", "published", "url" ], "type": "js", "modulePath": "youtube/feed.js", "sourceFile": "youtube/feed.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "history", "description": "Get YouTube watch history", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 30, "required": false, "help": "Max videos to return (default 30, max 200)" } ], "columns": [ "rank", "title", "channel", "views", "duration", "url" ], "type": "js", "modulePath": "youtube/history.js", "sourceFile": "youtube/history.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "like", "description": "Like a YouTube video", "access": "write", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "YouTube video URL or video ID" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "youtube/like.js", "sourceFile": "youtube/like.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "login", "description": "Open youtube login and wait until the browser session is authenticated", "access": "write", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "name" ], "type": "js", "modulePath": "youtube/auth.js", "sourceFile": "youtube/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "youtube", "name": "playlist", "description": "Get YouTube playlist info and video list", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Playlist URL or playlist ID (PLxxxxxx)" }, { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max videos to return (default 50, max 200)" } ], "columns": [ "rank", "title", "channel", "duration", "views", "published", "url" ], "type": "js", "modulePath": "youtube/playlist.js", "sourceFile": "youtube/playlist.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "search", "description": "Search YouTube videos", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max results (max 50)" }, { "name": "type", "type": "str", "default": "", "required": false, "help": "Filter type: shorts, video, channel, playlist" }, { "name": "upload", "type": "str", "default": "", "required": false, "help": "Upload date: hour, today, week, month, year" }, { "name": "sort", "type": "str", "default": "", "required": false, "help": "Sort by: relevance, date, views, rating" } ], "columns": [ "rank", "title", "channel", "views", "duration", "published", "url" ], "type": "js", "modulePath": "youtube/search.js", "sourceFile": "youtube/search.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "subscribe", "description": "Subscribe to a YouTube channel", "access": "write", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "Channel ID (UCxxxx) or handle (@name)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "youtube/subscribe.js", "sourceFile": "youtube/subscribe.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "subscriptions", "description": "List subscribed YouTube channels", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max channels to return (default 50)" } ], "columns": [ "rank", "name", "handle", "subscribers", "url" ], "type": "js", "modulePath": "youtube/subscriptions.js", "sourceFile": "youtube/subscriptions.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "transcript", "description": "Get YouTube video transcript/subtitles", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "YouTube video URL or video ID" }, { "name": "lang", "type": "str", "required": false, "help": "Language code (e.g. en, zh-Hans). Omit to auto-select" }, { "name": "mode", "type": "str", "default": "grouped", "required": false, "help": "Output mode: grouped (readable paragraphs) or raw (every segment)" } ], "type": "js", "modulePath": "youtube/transcript.js", "sourceFile": "youtube/transcript.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "unlike", "description": "Remove like from a YouTube video", "access": "write", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "YouTube video URL or video ID" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "youtube/unlike.js", "sourceFile": "youtube/unlike.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "unsubscribe", "description": "Unsubscribe from a YouTube channel", "access": "write", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "channel", "type": "str", "required": true, "positional": true, "help": "Channel ID (UCxxxx) or handle (@name)" } ], "columns": [ "status", "message" ], "type": "js", "modulePath": "youtube/unsubscribe.js", "sourceFile": "youtube/unsubscribe.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "video", "description": "Get YouTube video metadata (title, views, description, etc.)", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "YouTube video URL or video ID" } ], "columns": [ "field", "value" ], "type": "js", "modulePath": "youtube/video.js", "sourceFile": "youtube/video.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "watch-later", "description": "Get your YouTube Watch Later queue", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Max videos to return (default 50, max 200)" } ], "columns": [ "rank", "title", "channel", "duration", "views", "published", "url" ], "type": "js", "modulePath": "youtube/watch-later.js", "sourceFile": "youtube/watch-later.js", "navigateBefore": "https://www.youtube.com" }, { "site": "youtube", "name": "whoami", "description": "Show the current logged-in youtube account", "access": "read", "domain": "www.youtube.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "name" ], "type": "js", "modulePath": "youtube/auth.js", "sourceFile": "youtube/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yuanbao", "name": "ask", "description": "Send a prompt to Yuanbao web chat and wait for the assistant response", "access": "write", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send" }, { "name": "timeout", "type": "int", "default": 60, "required": false, "help": "Max seconds to wait (default: 60)" }, { "name": "search", "type": "boolean", "default": true, "required": false, "help": "Enable Yuanbao internet search (default: true)" }, { "name": "think", "type": "boolean", "default": false, "required": false, "help": "Enable Yuanbao deep thinking (default: false)" } ], "columns": [ "Role", "Text" ], "defaultFormat": "plain", "type": "js", "modulePath": "yuanbao/ask.js", "sourceFile": "yuanbao/ask.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yuanbao", "name": "detail", "description": "Open a Yuanbao conversation by ID and read its messages", "access": "read", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Full https://yuanbao.tencent.com/chat// URL or \"/\" pair (a UUID alone is not enough — Yuanbao requires the agent slug)" } ], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "yuanbao/detail.js", "sourceFile": "yuanbao/detail.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yuanbao", "name": "history", "description": "List recent Yuanbao conversations from the sidebar (requires login)", "access": "read", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Max conversations to list (sidebar virtual scroll caps actual count)" } ], "columns": [ "Index", "Title", "AgentId", "SessionId", "Url" ], "type": "js", "modulePath": "yuanbao/history.js", "sourceFile": "yuanbao/history.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yuanbao", "name": "login", "description": "Open yuanbao login and wait until the browser session is authenticated", "access": "write", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "yuanbao/auth.js", "sourceFile": "yuanbao/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "yuanbao", "name": "new", "description": "Start a new conversation in Yuanbao web chat", "access": "read", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Action" ], "type": "js", "modulePath": "yuanbao/new.js", "sourceFile": "yuanbao/new.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yuanbao", "name": "read", "description": "Read messages in the current Yuanbao conversation", "access": "read", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Role", "Text" ], "type": "js", "modulePath": "yuanbao/read.js", "sourceFile": "yuanbao/read.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yuanbao", "name": "send", "description": "Fire-and-forget: send a prompt to Yuanbao without waiting for the reply", "access": "write", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [ { "name": "prompt", "type": "str", "required": true, "positional": true, "help": "Prompt to send to Yuanbao" }, { "name": "new", "type": "boolean", "default": false, "required": false, "help": "Start a new chat before sending" } ], "columns": [ "Status", "Prompt" ], "type": "js", "modulePath": "yuanbao/send.js", "sourceFile": "yuanbao/send.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yuanbao", "name": "status", "description": "Check Yuanbao page availability, login state, current session and model", "access": "read", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "Status", "Login", "Model", "ModelId", "AgentId", "SessionId", "Url" ], "type": "js", "modulePath": "yuanbao/status.js", "sourceFile": "yuanbao/status.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "yuanbao", "name": "whoami", "description": "Show the current logged-in yuanbao account", "access": "read", "domain": "yuanbao.tencent.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "nickname" ], "type": "js", "modulePath": "yuanbao/auth.js", "sourceFile": "yuanbao/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "zhihu", "name": "answer", "description": "Answer a Zhihu question", "access": "write", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "Zhihu question URL or typed target" }, { "name": "text", "type": "str", "required": false, "positional": true, "help": "Answer text" }, { "name": "file", "type": "str", "required": false, "help": "Answer text file path" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually perform the write action" } ], "columns": [ "status", "outcome", "message", "target_type", "target", "created_target", "created_url", "author_identity" ], "type": "js", "modulePath": "zhihu/answer.js", "sourceFile": "zhihu/answer.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "answer-comments", "description": "知乎回答评论列表", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Answer ID, full Zhihu answer URL, or typed target (answer::)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of top-level comments (max 1000)" }, { "name": "replies-limit", "type": "int", "default": 3, "required": false, "help": "Number of replies to include per top-level comment (max 100)" } ], "columns": [ "rank", "comment_rank", "reply_rank", "depth", "id", "parent_id", "author", "reply_to", "likes", "created_at", "url", "content" ], "type": "js", "modulePath": "zhihu/answer-comments.js", "sourceFile": "zhihu/answer-comments.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "answer-detail", "description": "知乎单个回答完整内容(按 answer ID 获取)", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Answer ID, full Zhihu answer URL, or typed target (answer::)" }, { "name": "max-content", "type": "int", "default": 0, "required": false, "help": "Optional cap on stripped content length in characters (0 = no truncation, return the full answer)" } ], "columns": [ "id", "author", "votes", "comments", "question_id", "question_title", "url", "created_at", "updated_at", "content" ], "type": "js", "modulePath": "zhihu/answer-detail.js", "sourceFile": "zhihu/answer-detail.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "collection", "description": "知乎收藏夹内容列表(需要登录)", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "收藏夹 ID (数字,可从收藏夹 URL 中获取)" }, { "name": "offset", "type": "int", "default": 0, "required": false, "help": "起始偏移量(用于分页)" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "每页数量(最大 20)" } ], "columns": [ "rank", "type", "title", "author", "votes", "excerpt", "url" ], "type": "js", "modulePath": "zhihu/collection.js", "sourceFile": "zhihu/collection.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "collections", "description": "知乎收藏夹列表(需要登录)", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "每页数量(最大 20)" } ], "columns": [ "rank", "title", "item_count", "description", "collection_id" ], "type": "js", "modulePath": "zhihu/collections.js", "sourceFile": "zhihu/collections.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "comment", "description": "Create a top-level comment on a Zhihu answer or article", "access": "write", "domain": "zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "Zhihu target URL or typed target" }, { "name": "text", "type": "str", "required": false, "positional": true, "help": "Comment text" }, { "name": "file", "type": "str", "required": false, "help": "Comment text file path" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually perform the write action" } ], "columns": [ "status", "outcome", "message", "target_type", "target", "author_identity", "created_url" ], "type": "js", "modulePath": "zhihu/comment.js", "sourceFile": "zhihu/comment.js", "navigateBefore": "https://zhihu.com" }, { "site": "zhihu", "name": "download", "description": "导出知乎文章为 Markdown 格式", "access": "read", "domain": "zhuanlan.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "help": "Article URL (zhuanlan.zhihu.com/p/xxx)" }, { "name": "output", "type": "str", "default": "./zhihu-articles", "required": false, "help": "Output directory" }, { "name": "download-images", "type": "boolean", "default": false, "required": false, "help": "Download images locally" } ], "columns": [ "title", "author", "publish_time", "status", "size" ], "type": "js", "modulePath": "zhihu/download.js", "sourceFile": "zhihu/download.js", "navigateBefore": "https://zhuanlan.zhihu.com" }, { "site": "zhihu", "name": "favorite", "description": "Favorite a Zhihu answer or article into a specific collection", "access": "write", "domain": "zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "Zhihu target URL or typed target" }, { "name": "collection", "type": "str", "required": false, "help": "Collection name" }, { "name": "collection-id", "type": "str", "required": false, "help": "Stable collection id" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually perform the write action" } ], "columns": [ "status", "outcome", "message", "target_type", "target", "collection_name", "collection_id" ], "type": "js", "modulePath": "zhihu/favorite.js", "sourceFile": "zhihu/favorite.js", "navigateBefore": "https://zhihu.com" }, { "site": "zhihu", "name": "follow", "description": "Follow a Zhihu user or question", "access": "write", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "Zhihu target URL or typed target" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually perform the write action" } ], "columns": [ "status", "outcome", "message", "target_type", "target" ], "type": "js", "modulePath": "zhihu/follow.js", "sourceFile": "zhihu/follow.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "followers", "description": "知乎某用户的粉丝列表", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user", "type": "string", "required": true, "positional": true, "help": "User url_token or people URL" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of followers to return (max 1000)" } ], "columns": [ "rank", "name", "url_token", "headline", "followers", "url" ], "type": "js", "modulePath": "zhihu/followers.js", "sourceFile": "zhihu/followers.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "following", "description": "知乎某用户关注的人列表", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user", "type": "string", "required": true, "positional": true, "help": "User url_token or people URL" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of followees to return (max 1000)" } ], "columns": [ "rank", "name", "url_token", "headline", "followers", "url" ], "type": "js", "modulePath": "zhihu/following.js", "sourceFile": "zhihu/following.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "hot", "description": "知乎热榜", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items to return" } ], "columns": [ "rank", "title", "heat", "answers" ], "type": "js", "modulePath": "zhihu/hot.js", "sourceFile": "zhihu/hot.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "like", "description": "Like a Zhihu answer or article", "access": "write", "domain": "zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "target", "type": "str", "required": true, "positional": true, "help": "Zhihu target URL or typed target" }, { "name": "execute", "type": "boolean", "required": false, "help": "Actually perform the write action" } ], "columns": [ "status", "outcome", "message", "target_type", "target" ], "type": "js", "modulePath": "zhihu/like.js", "sourceFile": "zhihu/like.js", "navigateBefore": "https://zhihu.com" }, { "site": "zhihu", "name": "login", "description": "Open zhihu login and wait until the browser session is authenticated", "access": "write", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "url_token", "name", "uid" ], "type": "js", "modulePath": "zhihu/auth.js", "sourceFile": "zhihu/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "zhihu", "name": "pins", "description": "知乎某用户的想法(短内容)列表", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user", "type": "string", "required": true, "positional": true, "help": "User url_token or people URL" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of pins to return (max 1000)" } ], "columns": [ "rank", "excerpt", "type", "likes", "comments", "reposts", "created", "url" ], "type": "js", "modulePath": "zhihu/pins.js", "sourceFile": "zhihu/pins.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "question", "description": "知乎问题详情和回答", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Question ID (numeric)" }, { "name": "limit", "type": "int", "default": 5, "required": false, "help": "Number of answers (max 1000; use normal-sized requests)" }, { "name": "sort", "type": "str", "default": "default", "required": false, "help": "Answer order: default or created", "choices": [ "default", "created" ] } ], "columns": [ "rank", "id", "author", "votes", "url", "content" ], "type": "js", "modulePath": "zhihu/question.js", "sourceFile": "zhihu/question.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "recommend", "description": "知乎首页推荐", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of items to return (max 1000; use normal-sized requests)" } ], "columns": [ "rank", "type", "title", "author", "votes", "url" ], "type": "js", "modulePath": "zhihu/recommend.js", "sourceFile": "zhihu/recommend.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "search", "description": "知乎搜索", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search query" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Number of results (max 1000; use normal-sized requests)" }, { "name": "type", "type": "str", "default": "all", "required": false, "help": "Result type: all, answer, article, or question", "choices": [ "all", "answer", "article", "question" ] } ], "columns": [ "rank", "title", "type", "author", "votes", "url" ], "type": "js", "modulePath": "zhihu/search.js", "sourceFile": "zhihu/search.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "user", "description": "知乎用户主页资料(粉丝/关注/回答/文章/获赞数)", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user", "type": "string", "required": true, "positional": true, "help": "User url_token or people URL, e.g. wen-jie-16-47" } ], "columns": [ "url_token", "name", "headline", "followers", "following", "answers", "articles", "voteup", "url" ], "type": "js", "modulePath": "zhihu/user.js", "sourceFile": "zhihu/user.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "user-answers", "description": "知乎某用户的回答列表", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user", "type": "string", "required": true, "positional": true, "help": "User url_token or people URL" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of answers to return (max 1000)" } ], "columns": [ "rank", "question", "votes", "comments", "created", "url" ], "type": "js", "modulePath": "zhihu/user-answers.js", "sourceFile": "zhihu/user-answers.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "user-articles", "description": "知乎某用户的文章/专栏列表", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [ { "name": "user", "type": "string", "required": true, "positional": true, "help": "User url_token or people URL" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of articles to return (max 1000)" } ], "columns": [ "rank", "title", "votes", "comments", "created", "url" ], "type": "js", "modulePath": "zhihu/user-articles.js", "sourceFile": "zhihu/user-articles.js", "navigateBefore": "https://www.zhihu.com" }, { "site": "zhihu", "name": "whoami", "description": "Show the current logged-in zhihu account", "access": "read", "domain": "www.zhihu.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "url_token", "name", "uid" ], "type": "js", "modulePath": "zhihu/auth.js", "sourceFile": "zhihu/auth.js", "navigateBefore": false, "siteSession": "persistent" }, { "site": "zlibrary", "name": "info", "description": "Get book details and available download formats from a Z-Library book page", "access": "read", "domain": "z-library.im", "strategy": "cookie", "browser": true, "args": [ { "name": "url", "type": "str", "required": true, "positional": true, "help": "Z-Library book page URL (e.g. https://z-library.im/book/...)" } ], "columns": [ "title", "pdf", "epub", "url" ], "type": "js", "modulePath": "zlibrary/info.js", "sourceFile": "zlibrary/info.js", "navigateBefore": false }, { "site": "zlibrary", "name": "search", "description": "Search Z-Library for books by title, author, ISBN, or keyword", "access": "read", "domain": "z-library.im", "strategy": "cookie", "browser": true, "args": [ { "name": "query", "type": "str", "required": true, "positional": true, "help": "Search keyword (title, author, ISBN, etc.)" }, { "name": "limit", "type": "int", "default": 10, "required": false, "help": "Max results (1–25)" } ], "columns": [ "rank", "title", "author", "url" ], "type": "js", "modulePath": "zlibrary/search.js", "sourceFile": "zlibrary/search.js", "navigateBefore": false }, { "site": "zsxq", "name": "dynamics", "description": "获取所有星球的最新动态", "access": "read", "domain": "wx.zsxq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of dynamics to return" } ], "columns": [ "time", "group", "author", "title", "comments", "likes", "url" ], "type": "js", "modulePath": "zsxq/dynamics.js", "sourceFile": "zsxq/dynamics.js", "navigateBefore": "https://wx.zsxq.com" }, { "site": "zsxq", "name": "groups", "description": "列出当前账号加入的星球", "access": "read", "domain": "wx.zsxq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 50, "required": false, "help": "Number of groups to return" } ], "columns": [ "group_id", "name", "category", "members", "topics", "joined_at", "url" ], "type": "js", "modulePath": "zsxq/groups.js", "sourceFile": "zsxq/groups.js", "navigateBefore": "https://wx.zsxq.com" }, { "site": "zsxq", "name": "login", "description": "Open zsxq login and wait until the browser session is authenticated", "access": "write", "domain": "zsxq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "timeout", "type": "int", "default": 300, "required": false, "help": "Maximum seconds to wait for the user to finish login" } ], "columns": [ "status", "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "zsxq/auth.js", "sourceFile": "zsxq/auth.js", "navigateBefore": false, "siteSession": "persistent", "defaultWindowMode": "foreground" }, { "site": "zsxq", "name": "search", "description": "搜索星球内容", "access": "read", "domain": "wx.zsxq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "keyword", "type": "str", "required": true, "positional": true, "help": "Search keyword" }, { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of results to return" }, { "name": "group_id", "type": "str", "required": false, "help": "Optional group id; defaults to the active group in Chrome" } ], "columns": [ "topic_id", "group", "author", "title", "comments", "likes", "time", "url" ], "type": "js", "modulePath": "zsxq/search.js", "sourceFile": "zsxq/search.js", "navigateBefore": "https://wx.zsxq.com" }, { "site": "zsxq", "name": "topic", "description": "获取单个话题详情和评论", "access": "read", "domain": "wx.zsxq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "id", "type": "str", "required": true, "positional": true, "help": "Topic ID" }, { "name": "group_id", "type": "str", "required": false, "help": "Group ID (optional; defaults to active group in Chrome)" }, { "name": "comment_limit", "type": "int", "default": 20, "required": false, "help": "Number of comments to fetch" } ], "columns": [ "topic_id", "type", "author", "title", "comments", "likes", "comment_preview", "url" ], "type": "js", "modulePath": "zsxq/topic.js", "sourceFile": "zsxq/topic.js", "navigateBefore": "https://wx.zsxq.com" }, { "site": "zsxq", "name": "topics", "description": "获取当前星球的话题列表", "access": "read", "domain": "wx.zsxq.com", "strategy": "cookie", "browser": true, "args": [ { "name": "limit", "type": "int", "default": 20, "required": false, "help": "Number of topics to return" }, { "name": "group_id", "type": "str", "required": false, "help": "Optional group id; defaults to the active group in Chrome" } ], "columns": [ "topic_id", "type", "author", "title", "comments", "likes", "time", "url" ], "type": "js", "modulePath": "zsxq/topics.js", "sourceFile": "zsxq/topics.js", "navigateBefore": "https://wx.zsxq.com" }, { "site": "zsxq", "name": "whoami", "description": "Show the current logged-in zsxq account", "access": "read", "domain": "zsxq.com", "strategy": "cookie", "browser": true, "args": [], "columns": [ "logged_in", "site", "user_id", "name" ], "type": "js", "modulePath": "zsxq/auth.js", "sourceFile": "zsxq/auth.js", "navigateBefore": false, "siteSession": "persistent" } ]