Submitator
Launch your clients' products on up to 100 directories each from Claude, ChatGPT, Cursor or VS Code.
我該用這個嗎
品質與安全性
發現項目(3)
- LOW在 get_badge 中
- LOW在 create_share_link 中
- LOW在 delete_share_link 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"submitator-mcp"
]
}
}
}可執行的套件
0.1.1stdio遠端端點
https://mcp.submitator.com/mcpstreamable-http它能做什麼
工具清單
工具(23)
🟢whoami
Shows the agency and mode (live or test) behind the key, its permissions, launches left and the hourly request budget.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_projects(q, status, external_id, cursor, limit)
Lists the agency projects, newest first. q finds one by part of its name or URL, and external_id by the agency's own id.
輸入結構描述
{
"type": "object",
"properties": {
"q": {
"description": "Part of the name or URL",
"type": "string",
"minLength": 2,
"maxLength": 100
},
"status": {
"type": "string",
"enum": [
"draft",
"in_progress",
"action_required",
"on_hold",
"completed"
]
},
"external_id": {
"type": "string",
"maxLength": 100
},
"cursor": {
"type": "string",
"maxLength": 500,
"description": "next_cursor from the previous page"
},
"limit": {
"description": "Rows to return, 20 by default, 50 at most",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_project(project_id)
One project in full: status, what it waits for, progress counts, allowance, readiness, texts, images and the image candidates found on its site.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡create_project(url, name, maker_name, contact_email, tagline, ...)
Creates a project for a client's product from its URL. Name, tagline and description are filled from the site in the background when left out. Costs nothing: a launch is spent only by launch_project.
輸入結構描述
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "The client product's public URL"
},
"name": {
"description": "Product name; filled from the site when left out",
"type": "string",
"minLength": 2,
"maxLength": 100
},
"maker_name": {
"description": "Founder or maker name",
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"contact_email": {
"description": "Email the directories write to; required before launch",
"anyOf": [
{
"type": "string",
"maxLength": 254
},
{
"type": "null"
}
]
},
"tagline": {
"description": "One-line pitch",
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"short_description": {
"description": "Short description",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"long_description": {
"description": "Long description",
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"category": {
"anyOf": [
{
"type": "string",
"enum": [
"saas",
"ai_tools",
"dev_tools",
"no_code",
"productivity",
"other"
]
},
{
"type": "null"
}
]
},
"pricing_model": {
"anyOf": [
{
"type": "string",
"enum": [
"free",
"freemium",
"paid",
"open_source"
]
},
{
"type": "null"
}
]
},
"price_amount_cents": {
"description": "Price in cents",
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"price_period": {
"anyOf": [
{
"type": "string",
"enum": [
"monthly",
"yearly",
"one_time"
]
},
{
"type": "null"
}
]
},
"launch_date": {
"description": "YYYY-MM-DD",
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"twitter_url": {
"description": "https://x.com/... profile",
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"competitors": {
"description": "Up to 20, some directories need them. Replaces the whole list, so an entry left out is removed",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"url": {
"type": "string",
"maxLength": 500
}
},
"required": [
"name",
"url"
]
}
},
"tags": {
"description": "Up to 10. Replaces the whole list",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"audience": {
"description": "Which audience-restricted directories fit the product",
"type": "object",
"properties": {
"b2b": {
"type": "boolean"
},
"ai": {
"type": "boolean"
},
"directory": {
"type": "boolean"
}
},
"required": [
"b2b",
"ai",
"directory"
]
},
"promo_code": {
"description": "Discount code some directories ask for",
"anyOf": [
{
"type": "string",
"maxLength": 50
},
{
"type": "null"
}
]
},
"promo_description": {
"description": "What the promo code gives",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"external_id": {
"description": "The agency's own id for this client",
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"metadata": {
"description": "Up to 20 string pairs for the agency. Replaces all of it; {} clears it",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"additionalProperties": {
"type": "string",
"maxLength": 500
}
},
"excluded_directories": {
"description": "Directories never to use for this project. Replaces the whole list, which get_project shows; [] clears it",
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
},
"logo_url": {
"description": "Public image URL for the logo (PNG, JPEG, GIF or WebP, 5 MB at most)",
"type": "string",
"maxLength": 2048
},
"screenshot_urls": {
"description": "1 to 5 public image URLs",
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 2048
}
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴update_project(project_id, url, name, maker_name, contact_email, ...)
Changes the project fields it is sent and leaves the others as they are; null clears a field, and a list replaces the whole list. contact_email cannot change after launch, and after launch an edit reaches only the listings that have not been sent to their directory.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"url": {
"type": "string",
"maxLength": 2048
},
"name": {
"description": "Product name; filled from the site when left out",
"type": "string",
"minLength": 2,
"maxLength": 100
},
"maker_name": {
"description": "Founder or maker name",
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"contact_email": {
"description": "Email the directories write to; required before launch",
"anyOf": [
{
"type": "string",
"maxLength": 254
},
{
"type": "null"
}
]
},
"tagline": {
"description": "One-line pitch",
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"short_description": {
"description": "Short description",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"long_description": {
"description": "Long description",
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"category": {
"anyOf": [
{
"type": "string",
"enum": [
"saas",
"ai_tools",
"dev_tools",
"no_code",
"productivity",
"other"
]
},
{
"type": "null"
}
]
},
"pricing_model": {
"anyOf": [
{
"type": "string",
"enum": [
"free",
"freemium",
"paid",
"open_source"
]
},
{
"type": "null"
}
]
},
"price_amount_cents": {
"description": "Price in cents",
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"price_period": {
"anyOf": [
{
"type": "string",
"enum": [
"monthly",
"yearly",
"one_time"
]
},
{
"type": "null"
}
]
},
"launch_date": {
"description": "YYYY-MM-DD",
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"twitter_url": {
"description": "https://x.com/... profile",
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"competitors": {
"description": "Up to 20, some directories need them. Replaces the whole list, so an entry left out is removed",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"url": {
"type": "string",
"maxLength": 500
}
},
"required": [
"name",
"url"
]
}
},
"tags": {
"description": "Up to 10. Replaces the whole list",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"audience": {
"description": "Which audience-restricted directories fit the product",
"type": "object",
"properties": {
"b2b": {
"type": "boolean"
},
"ai": {
"type": "boolean"
},
"directory": {
"type": "boolean"
}
},
"required": [
"b2b",
"ai",
"directory"
]
},
"promo_code": {
"description": "Discount code some directories ask for",
"anyOf": [
{
"type": "string",
"maxLength": 50
},
{
"type": "null"
}
]
},
"promo_description": {
"description": "What the promo code gives",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"external_id": {
"description": "The agency's own id for this client",
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"metadata": {
"description": "Up to 20 string pairs for the agency. Replaces all of it; {} clears it",
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"additionalProperties": {
"type": "string",
"maxLength": 500
}
},
"excluded_directories": {
"description": "Directories never to use for this project. Replaces the whole list, which get_project shows; [] clears it",
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴delete_draft(project_id)
Deletes a project that was never launched. A launched project cannot be deleted.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴set_logo(project_id, url)
Sets or replaces a project's logo from a public image URL, fetched right away (a failed fetch answers image_unreachable).
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public image URL: PNG, JPEG, GIF or WebP, 5 MB at most"
}
},
"required": [
"project_id",
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡add_screenshot(project_id, url)
Adds one screenshot to a project (5 at most), from a public image URL. Each call adds another one: a repeated call adds the same image twice.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public image URL: PNG, JPEG, GIF or WebP, 5 MB at most"
}
},
"required": [
"project_id",
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴remove_image(project_id, image)
Removes the logo ("logo") or one screenshot (its img_ id). A launched project keeps at least its logo and one screenshot.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"image": {
"anyOf": [
{
"type": "string",
"const": "logo"
},
{
"type": "string",
"pattern": "^img_[0-9A-Za-z]{22}$",
"description": "Screenshot id (img_...)"
}
],
"description": "\"logo\", or the img_ id of a screenshot"
}
},
"required": [
"project_id",
"image"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢preview_launch(project_id, directories, excluded_directories, auto_replace)
Free dry run of launch_project (or of add_directories on a launched project) with the same arguments: how many directories it would submit to, what is missing, what would unlock more and what it costs, plus the top and median DR of the auto pick. Its would_submit count is the confirm_selected that launch_project or add_directories requires for the same arguments.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"directories": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "object",
"properties": {
"include": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
}
},
"required": [
"include"
]
},
{
"type": "object",
"properties": {
"exclude": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
}
},
"required": [
"exclude"
]
}
],
"description": "\"auto\" (best matches, highest DR first), {include: [ids]} exactly these, or {exclude: [ids]} auto without these"
},
"excluded_directories": {
"description": "Replaces the project's whole exclusion list for this request; [] clears it. directories: {exclude} leaves some out once instead",
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
},
"auto_replace": {
"description": "true: within a day the free allowance fills up to 100 with fitting directories, replacing declined ones too. include turns it off unless you send true",
"type": "boolean"
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢find_directories(directory_id, q, kind, topic, min_dr, ...)
Searches the directories Submitator submits to, highest Domain Rating first, or reads one by id. Before the agency first buys launches, only the top 20 are shown.
輸入結構描述
{
"type": "object",
"properties": {
"directory_id": {
"description": "Read this one directory; other filters are ignored",
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$"
},
"q": {
"description": "Part of the name",
"type": "string",
"minLength": 2,
"maxLength": 100
},
"kind": {
"description": "article = article platforms, open only through include",
"type": "string",
"enum": [
"directory",
"article"
]
},
"topic": {
"type": "string",
"enum": [
"startups",
"ai_tools",
"saas",
"dev_tools",
"b2b",
"software",
"other"
]
},
"min_dr": {
"description": "Lowest Domain Rating",
"type": "integer",
"minimum": 0,
"maximum": 100
},
"requires": {
"description": "What the directory asks for",
"type": "string",
"enum": [
"badge",
"competitors",
"promo_code",
"none"
]
},
"audience": {
"type": "string",
"enum": [
"b2b",
"ai",
"directory",
"any"
]
},
"cursor": {
"type": "string",
"maxLength": 500,
"description": "next_cursor from the previous page"
},
"limit": {
"description": "Rows to return, 25 by default, 50 at most",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢project_directories(project_id, states, offset, limit)
Every catalog directory as seen by one project: suggested (the auto pick), open, locked (with what unlocks it), excluded or listed. Shows suggested, open and locked by default; the counts cover all.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"states": {
"description": "Which states to list; suggested, open and locked by default",
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"listed",
"locked",
"excluded",
"suggested",
"open"
]
}
},
"offset": {
"description": "Rows to skip, for the next page",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Rows to return, 50 by default, 100 at most",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴launch_project(project_id, directories, excluded_directories, auto_replace, confirm_selected)
Starts submissions and spends one of the agency's paid launches; with a sbm_test_ key it spends a test launch and submits nothing. Refuses unless confirm_selected equals the directory count preview_launch returns for the same arguments. With a live key, a client on MCP protocol 2026-07-28 that supports elicitation also gets a question to confirm, and the answer does not pass through the model. This remote server keeps no session, so a client on an earlier protocol version is not asked.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"directories": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "object",
"properties": {
"include": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
}
},
"required": [
"include"
]
},
{
"type": "object",
"properties": {
"exclude": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
}
},
"required": [
"exclude"
]
}
],
"description": "\"auto\" (best matches, highest DR first), {include: [ids]} exactly these, or {exclude: [ids]} auto without these"
},
"excluded_directories": {
"description": "Replaces the project's whole exclusion list for this request; [] clears it. directories: {exclude} leaves some out once instead",
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
},
"auto_replace": {
"description": "true: within a day the free allowance fills up to 100 with fitting directories, replacing declined ones too. include turns it off unless you send true",
"type": "boolean"
},
"confirm_selected": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "The directory count from preview_launch that the user agreed to"
}
},
"required": [
"project_id",
"confirm_selected"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴add_directories(project_id, directories, excluded_directories, confirm_selected)
Submits a launched project to more directories from its free allowance (no launch is spent). Refuses unless confirm_selected equals the directory count preview_launch returns for the same arguments. With a live key, a client on MCP protocol 2026-07-28 that supports elicitation also gets a question to confirm, and the answer does not pass through the model. This remote server keeps no session, so a client on an earlier protocol version is not asked. An include longer than the free allowance answers allowance_exhausted; a directory already listed answers invalid_directories.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"directories": {
"anyOf": [
{
"type": "string",
"const": "auto"
},
{
"type": "object",
"properties": {
"include": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
}
},
"required": [
"include"
]
},
{
"type": "object",
"properties": {
"exclude": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
}
},
"required": [
"exclude"
]
}
],
"description": "\"auto\" (best matches, highest DR first), {include: [ids]} exactly these, or {exclude: [ids]} auto without these"
},
"excluded_directories": {
"description": "Replaces the project's whole exclusion list for this request; [] clears it. directories: {exclude} leaves some out once instead",
"type": "array",
"items": {
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$",
"description": "Directory id (dir_...)"
}
},
"confirm_selected": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "The directory count from preview_launch that the user agreed to"
}
},
"required": [
"project_id",
"directories",
"confirm_selected"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_listings(project_id, listing_id, status, directory, cursor, ...)
A project's listings, one per directory, highest DR first, with status and the live link once published. Or one listing in full by its id.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"listing_id": {
"description": "Read this one listing instead",
"type": "string",
"pattern": "^lst_[0-9A-Za-z]{22}$"
},
"status": {
"type": "string",
"enum": [
"pending",
"in_progress",
"action_required",
"submitted",
"live",
"not_accepted",
"cancelled"
]
},
"directory": {
"description": "Only the listing on this directory",
"type": "string",
"pattern": "^dir_[0-9A-Za-z]{22}$"
},
"cursor": {
"type": "string",
"maxLength": 500,
"description": "next_cursor from the previous page"
},
"limit": {
"description": "Rows to return, 25 by default, 50 at most",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_events(project_id, type, since, cursor, limit)
Changes to projects and listings. The feed keeps 90 days and reads oldest first, so one call scans up to 1,000 events from the cursor (or from the start) and returns the newest ones since `since` (7 days ago by default). Passed back in a later call, its next_cursor reads only what came after. For the current state of a project, get_project and list_listings are cheaper.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"description": "Only this project",
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$"
},
"type": {
"description": "A type such as listing.live, or a group: listing.*, project.*, report.*",
"type": "string",
"maxLength": 40
},
"since": {
"description": "ISO time; 7 days ago by default, none when a cursor is given",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"cursor": {
"description": "next_cursor from an earlier call: continues from there",
"type": "string",
"maxLength": 500
},
"limit": {
"description": "Rows to return, 25 by default, 100 at most",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_badge(project_id, platform)
The agency-branded badge some directories require on the client's site: its status, a message to forward to the client, the platforms it has install code for, and the code for the one named in platform.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"platform": {
"description": "Platform name from the list, for its install code",
"type": "string",
"maxLength": 40
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}⚪verify_badge(project_id)
Checks the client's site for the badge now. Each project gets up to 10 checks an hour.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡create_report(project_id, format)
Builds a PDF or XLSX report of a project, branded for the agency. Building takes a moment; get_report says when it is ready.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"format": {
"type": "string",
"enum": [
"pdf",
"xlsx"
]
}
},
"required": [
"project_id",
"format"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_report(report_id)
Whether a report is ready, and how to get the file.
輸入結構描述
{
"type": "object",
"properties": {
"report_id": {
"type": "string",
"pattern": "^rep_[0-9A-Za-z]{22}$",
"description": "Report id (rep_...)"
}
},
"required": [
"report_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_share_link(project_id)
The project's client page link (a read-only progress page in the agency's brand), with its views.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴create_share_link(project_id, replace, expires_at)
Gives the project's client page link. Returns the current link when there is one; replace: true issues a new link and turns the old one off.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
},
"replace": {
"description": "Issue a new link even if one exists; the old one stops working",
"type": "boolean"
},
"expires_at": {
"description": "When the new link stops working",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴delete_share_link(project_id)
Turns the project's client page link off. Anyone holding it sees nothing afterwards.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string",
"pattern": "^prj_[0-9A-Za-z]{22}$",
"description": "Project id (prj_...)"
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據