LivePage · 活页
Server Details
Turn finished agent work into a shareable, updatable web page that opens in WeChat. OAuth required.
- Status
- Healthy
- Uptime
- 43.2% over 69 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 86 tools
Most tools target a distinct action, but several clusters genuinely overlap: the three upload routes (publish_file / create_upload_link / create_upload_session plus finalize_upload), set_data vs set_form (both create tables and toggle write-back), and set_home vs set_folder (both take the same p:/f:/l: layout refs). The descriptions mitigate this by repeating routing rules and cross-references, but an agent must read long prose to pick correctly, and set_publish_notify bundles several distinct jobs (push switches, subscribe codes, subscriber removal) that also surface elsewhere.
Almost every tool is snake_case verb_noun (create_proposal, list_folders, revoke_share_link), with only mild deviations such as preview_downloads, copy_proposal and the noun-less get_engagement_summary. The one systematic wrinkle is vocabulary: the domain object is called a 'page' in descriptions but 'proposal' in tool names, and 'version'/'tag'/'link' have their own naming that an agent must map by hand.
86 tools is far past the point where an agent can hold the surface in mind, even for a broad publishing platform spanning pages, versions, folders, domains, members, forms, analytics, payments and tokens. Many are niche (set_visitor_internal, set_domain_region, request_template, revoke_invite) and the sheer volume forces selection errors rather than reflecting a well-scoped set.
Coverage is unusually thorough: full lifecycle for pages (create/rename/move/delete/restore/copy), versions (upload, finalize, publish, rollback, tag, revoke storage), folders, members and invitations, custom domains, feedback threads, data tables and forms, payments, and analytics. The few deliberate gaps (long-lived token creation is web-console only, individual version deletion replaced by revoke_versions) are documented as intentional boundaries rather than dead ends.
Available Tools
86 toolsadd_external_feedbackCapture external feedbackAInspect
Save feedback the user explicitly supplies from a meeting, WeChat, call or email to the relevant page and version. Optional page/text anchors. visibility=internal keeps the note hidden from clients; the default all is client-visible. Do not collect unrelated conversation history. Feedback fields and statuses are documented at https://space.24haowan.com/help/claude?lang=en.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| anchor | No | ||
| source | No | other | |
| version_id | No | ||
| visibility | No | Default all (client-visible); internal means an internal note. | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the bar is lower, and the description still adds non-obvious behavior: visibility=internal hides the note from clients while the default all is client-visible, plus a pointer to the field/status documentation. It omits duplicate-handling and what the call returns, but the visibility/privacy semantics are genuine added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what is saved and from where, then visibility semantics, then the exclusion, then the doc link. Nothing is padded, though the trailing documentation URL is a mild deferral of content that could have been inlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation with a nested anchor object, low schema coverage, and no output schema, the description covers visibility and anchor optionality but says nothing about what the tool returns (e.g., the created feedback id) or about body/version_id behavior. Adequate to call it correctly in the common case, incomplete for the full surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, so the description must compensate, and it does partially: it explains the visibility enum semantics and flags that page/text anchors are optional. It leaves body length limits, the source enum values (only implied by the channel list), version_id semantics, and sectionId unexplained, so roughly half the parameters remain undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Save feedback ... to the relevant page and version') and enumerates the intake channels (meeting, WeChat, call, email), so an agent knows exactly what gets created and where it lands. It does not explicitly contrast itself with the feedback siblings (reply_feedback, list_feedback, set_feedback_status), so differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the trigger condition ('feedback the user explicitly supplies') and an explicit exclusion ('Do not collect unrelated conversation history'), which is a real when-not rule. However, it never names the alternative tools an agent should reach for instead (e.g., reply_feedback for responses, list_feedback for retrieval), so routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_memberAdd memberAInspect
Owner only. Add a known user ID to this workspace with the specified role. Owner manages pages and members; editor organizes, publishes and shares; viewer is read-only. If the teammate’s 26-character user_id is unknown, use invite_teammate instead.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | editor | |
| user_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations correctly declare this as a non-destructive, non-idempotent write (readOnlyHint: false, destructiveHint: false, idempotentHint: false). The description adds critical behavioral context not in annotations: it requires owner privileges and describes role capabilities. However, it does not mention the 26-character constraint or side effects like notifications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences with zero waste. The most critical constraint (Owner only) is front-loaded, followed by role semantics and the fallback path.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, no output schema, and explicit annotations, the description covers purpose, permissions, role meanings, and an alternative tool. It is complete for invocation, though it omits expected outcome (e.g., success response or errors).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must supply parameter meaning. It clarifies that 'user_id' must be a known 26-character ID and defines the 'role' enum values (owner, editor, viewer). This compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (add) and resource (member) with scope ('this workspace') and references the required user_id. It is clearly distinguishable from siblings like remove_member, set_member_role, and invite_teammate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Owner only', describes the permission scope subject to role, and names the alternative for unknown user IDs ('use invite_teammate instead'). It explains the role meanings to help select the correct role parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bind_domainBind your own domain (request it, get the DNS records to add)AIdempotentInspect
Bind LivePage to the user’s own domain (such as go.acme.com, acme.com or a.b.acme.com) so readers who open it see a chosen page. This is a premium feature: only workspaces whose owner has a premium account can bind new domains, 3 per workspace (a root domain that redirects to www counts as one together with www); on a free account a new request returns quota_reached (domains already bound keep working). Every workspace already has its default address .hy.24haowan.com — use set_page_path to put pages there. Only the workspace owner can request one. One call returns every record to add at the DNS provider in records (type / name = host / value / why), the DNS provider dns_provider, notes and say (relay it to the user as it is). If you have tools for the user’s DNS provider, add the records yourself; otherwise give records to the user as they are and ask them to tell you when done. We never take the user’s DNS provider keys. After the records are in, call verify_domain to check progress (each call also moves it forward one step) and call again after retry_after_s until state=active; then use set_domain_route to choose which name opens which page. Idempotent: calling again with the same domain returns the same record and its current progress. A domain with an ICP filing (with any provider) is served from mainland China; one without a filing can still be bound and is served from overseas nodes (slower inside mainland China) — once it is filed, switch it with set_domain_region. Root domains, flattening first: if the DNS provider can flatten (Cloudflare and DNSPod Enterprise / Exclusive are recognised automatically; for Alibaba Cloud DNS Flagship / Exclusive or DNSPod Enterprise, pass apex_mode="flatten" once the user confirms their edition) it opens in place — served straight from the acceleration network, no redirect, fast in mainland China, and the first note recommends it; only otherwise does it redirect to www (a 301 through our US redirect host, about 1 extra second in mainland China), and www is requested together with it.
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | Yes | The domain to bind, without https:// or a path, such as go.acme.com | |
| apex_mode | No | Root domains only: flatten = the user confirmed their DNS plan supports flattening (the root domain opens in place); redirect = send it to www. Omit to choose from the DNS provider |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false): it discloses the quota and premium gating, that binding never takes the user's DNS keys, that ICP filing determines mainland vs overseas serving and can later be switched via set_domain_region, and how root domains either flatten in place or 301-redirect through a US host with an added latency cost. Idempotency is not merely restated — the description says a repeat call returns the same record plus current progress, which is the practical detail an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly: cost/quota gating, then the return shape, then the follow-up sequence, then the conditional root-domain detail. The bolding and phrasing give an agent clear landmarks. It is, however, a very long block for a two-parameter tool, and the ICP/root-domain material could be tightened or moved to the sibling tools that act on it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does it: it enumerates records (type/name/value/why), dns_provider, notes, say, retry_after_s and state, and instructs the agent to relay say verbatim. Combined with the premium, quota, ICP and apex handling, nothing an agent needs in order to call this correctly and hand off to verify_domain is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it tells the agent to pass apex_mode="flatten" only after the user confirms their edition, and names which providers are recognised automatically (Cloudflare, DNSPod Enterprise; Alibaba Cloud DNS Flagship requires explicit confirmation). The hostname examples duplicate the schema's own example rather than adding to it, keeping this from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Bind LivePage to the user's own domain") and immediately scopes what readers see and what the single call returns ("every record to add at the DNS provider in records"). It explicitly names the sibling steps it is not: set_page_path for the default address, verify_domain for progress, set_domain_route for routing. An agent can pick this tool out of a large sibling list without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions (owner-only, premium account, 3 domains per workspace, quota_reached on free accounts) and explicit alternatives (use set_page_path for the default <workspace>.hy.24haowan.com address). It also routes the follow-up flow: call verify_domain after records are in, repeat after retry_after_s until state=active, then set_domain_route. Even the branching on whether the agent has the user's DNS-provider tools is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_paymentConfirm a row's payment arrivedAInspect
No money moves through LivePage: the viewer pays by scanning your own collection QR code straight into your own account, and the platform never places an order, collects or transfers funds. This tool only records a “payment confirmed by the publisher” timestamp on one row. Mark one viewer submission as “payment confirmed by the publisher”. When a form carries an amount (set_form with amount), the viewer sees your business collection QR code after submitting, plus an “I have paid” button — that is only the viewer saying so, never a payment result. Once you have checked the money in your own WeChat Pay / Alipay statement, confirm it here; next time that viewer opens the page they see “the publisher confirmed receiving your payment”, visible only on their own row and to no other visitor. Get row_id from list_data_rows, which prints the amount and payment state for every row. The viewer does not have to press “I have paid” first: confirming straight from your statement is fine. This records a timestamp only — it does not change the row's moderation status (use set_data_row_status for approved / held) and does not change the amount.
| Name | Required | Description | Default |
|---|---|---|---|
| row_id | Yes | 用 list_data_rows 拿到的 row_id | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds substantial context beyond that: no funds move, only a timestamp is written, moderation status and amount are untouched, the confirmation is visible only on the viewer's own row, and the 'I have paid' button is not a payment result. That is exactly the behavioral detail an agent needs for a payment-adjacent mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with a long anti-fraud disclaimer rather than the operation itself, and the 'records a timestamp only' point is restated near the end. Most sentences do earn their place, but the length and repetition cost it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists and the tool is a small two-parameter mutation, and the description covers side effects, visibility, and the meaning of the confirmation well. The main gap is proposal_id's semantics and any warning about repeated confirmation (idempotentHint=false), which it never addresses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: row_id is documented in the schema, proposal_id is not. The description compensates for row_id by directing the agent to list_data_rows, but says nothing about proposal_id's meaning or source. Partial compensation only, so the baseline 3 is right.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it records a 'payment confirmed by the publisher' timestamp on one row, and explicitly distinguishes itself from set_data_row_status and set_form. An agent can tell exactly what this does and does not do without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit about when to use it (after checking the money in your own WeChat Pay/Alipay statement), where to get the identifier (list_data_rows), and clarifies that the viewer need not press 'I have paid' first. It also names the alternative tool for a different job (set_data_row_status for moderation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_proposalCopy a shared LivePage into my workspaceAInspect
Use this when the user pastes a LivePage link and says “copy it to my space / I want to edit it / rewrite it”: copies the version readers currently see into a new page in your own workspace (keywords: copy, duplicate, save as, edit a copy).
Requires that the publisher allowed copying (allow_copy) and that the link opens without a passcode right now. Not allowed → 403
copy_not_allowed; relay the plain-language reason to the user, don't work around it. Link revoked / expired / page deleted → 410.The copy is an unpublished draft (visible only to your workspace) and independent from the source from then on: later edits or deletion of the source don't affect it. It counts toward your storage quota.
Then: read_version(version_id) to read the content, edit it as the user asks, and publish_file(proposal_id=…) as a new version; to publish it unchanged, finalize_upload(version_id, manifest). Publishing goes through moderation as usual and is visible only to you by default.
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The LivePage link the user pasted, passed as-is (query parameters are fine). | |
| title | No | Title of the copy; omitted = the original title plus “(copy)”. | |
| folder_id | No | Which of your folders to put it in; omitted = not in any folder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-destructive, non-idempotent, non-open-world write; the description adds substantially: the allow_copy precondition, concrete failure codes (403 copy_not_allowed, 410 revoked/expired/deleted) with an instruction not to work around them, the fact that the result is an unpublished draft independent of the source, and that it consumes storage quota.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger sentence, then structured bullets for preconditions, side effects, and follow-up calls — no filler. It runs long with heavy bolding and parenthetical keyword lists, which is slightly more than strictly needed, but each bullet carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description implies the returned handles (version_id for read_version, proposal_id for publish_file) and covers preconditions, error paths, side effects, and the publish flow. An agent has everything needed to invoke it and handle failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so link, title (default = original + '(copy)'), and folder_id (default = no folder) are already fully documented in the schema. The description adds only that the link is passed as-is from the user, which is marginal extra meaning over structured fields; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: copies the currently-published version of a shared LivePage into a new page in the caller's own workspace. It is clearly distinguishable from siblings like create_proposal (blank new proposal), read_version (read only), and finalize_upload (publish an existing draft).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when the user pastes a LivePage link and says copy it to my space / I want to edit it'), plus keyword aliases (copy, duplicate, save as, edit a copy). It also spells out the post-call sequence (read_version → edit → publish_file / finalize_upload), so the agent knows both when to enter and what to do next.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cli_tokenCreate temporary upload credentialAInspect
Create a workspace-scoped credential for the SPACE CLI only when the host supports a local terminal and the user requests an upload. It expires within 30 minutes and never outlives the parent token. Pass it to the CLI process environment, never a file, log, user-facing message or unrelated service. This is not needed for browsing or feedback, and does not give a chat-only host a terminal. Revoking the parent does not cascade to an already derived token; revoke the temporary token separately if needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover safety flags (readOnlyHint=false, destructiveHint=false, idempotentHint=false); the description goes well beyond them with lifetime rules ('expires within 30 minutes and never outlives the parent token'), a handling constraint ('pass it to the CLI process environment, never a file, log, user-facing message or unrelated service'), and revocation semantics ('revoking the parent does not cascade'). This is exactly the behavioral disclosure a token tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The output is front-loaded with the core action and every sentence carries distinct information (lifetime, handling, exclusions, revocation). It is slightly denser than necessary, with the terminal caveat restated across two sentences, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, zero parameters, and only safety annotations, the description carries the full burden and does so: what it creates, its lifetime, where it may be placed, when not to call it, and its revocation behavior are all covered. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter surface for the description to compensate for; baseline 4 applies. The description instead clarifies the implicit inputs (host terminal capability, user upload intent) that govern whether the call is valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a workspace-scoped credential for the SPACE CLI'), scoping the artifact precisely enough to separate it from siblings like create_upload_link and create_upload_session. An agent can tell what is produced without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit preconditions ('only when the host supports a local terminal and the user requests an upload') and exclusions ('This is not needed for browsing or feedback, and does not give a chat-only host a terminal'). This names the when, the when-not, and the anti-pattern in one place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_folderCreate folderAInspect
Create a folder to organize related pages and optionally share it through one link. Folders are optional: leave folder_id out of create_proposal for a one-off page that is not in any folder. Check list_folders first to avoid duplicates.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| intro | No | Introduction shown at the top of the folder page when no cover is selected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description adds that a folder can be shared through a single link, which is useful behavioral context, but says nothing about duplicate-name handling, permission requirements, or whether the share link is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose before the optionality and duplicate-check guidance. Every sentence carries information, though the folder_id reference is slightly off-target for this tool's own parameter set.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema, the description covers purpose, sharing behavior, and duplicate avoidance. It leaves gaps on permissions, idempotency expectations, and what the created folder/link looks like, so it is adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (name is undocumented; intro is documented), so the description should compensate but does not — it never explains what name or intro accept or their constraints. Worse, it references folder_id, which is not a parameter of this tool at all, adding potential confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a folder") plus its organizing purpose, and immediately frames the scope against siblings by naming list_folders and the create_proposal folder_id path. An agent can distinguish this from set_folder or list_folders without further inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ("Check list_folders first to avoid duplicates") and clarifies that folders are optional by describing the alternative path (omit folder_id in create_proposal). It stops short of stating when not to create a folder at all, but the routing guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_proposalCreate pageAInspect
Create a page for a report, proposal, deck or interactive page. Returns proposal_id; uploads become versions of this page. Folders are optional. Use list_proposals first when updating existing pages instead of creating a duplicate. Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| internal | No | When true, this page is not shared through the folder link. | |
| folder_id | No | Destination folder; omit to keep it out of any folder. Use list_folders first to find an existing folder. | |
| allow_copy | No | Allow anyone with the link to copy it into their own workspace with copy_proposal (not allowed by default). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-readOnly, non-destructive, non-idempotent. The description adds value beyond them by disclosing that it returns a proposal_id and that uploads become versions of this page, which is important lifecycle context absent from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two leading sentences are well front-loaded and information-dense, but the trailing keyword list (~12 terms) is retrieval padding that dilutes the definition and is not operational guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states the return value (proposal_id) and version behavior, and annotations carry the safety profile. Missing only secondary details like permission or sharing prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents internal, folder_id, and allow_copy. The description only restates that folders are optional, adding no new syntax or meaning beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (page/proposal) and enumerates the artifacts it covers (report, proposal, deck, interactive page). It also distinguishes itself from list_proposals for updates, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear conditional: use list_proposals first when updating existing pages to avoid duplicates, and notes folders are optional. It does not name all relevant neighbors (e.g. create_folder, copy_proposal), but the primary when/when-not is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_upload_linkSend an upload page (the user uploads the files)AInspect
Get an upload page for the user, who picks the files on their phone or computer (PDF / PPTX / images / large files). Which upload route: terminal ⇒ SPACE CLI (create_cli_token first); no terminal and text files up to 2 MB in total ⇒ publish_file; anything else or unsure ⇒ create_upload_link. Use this when you have NO terminal and the page is not text files within 2 MB (PDF, PPTX, images, large files), or when you are not sure: the platform creates an upload page link; give it to the user and they pick the files on their phone (WeChat works) or computer. The link is valid for 2 hours, succeeds only once, uploads only into this one page, and needs no login. To add a version to existing pages pass proposal_id (find it with list_proposals first); to create new pages pass title (optional folder_id). hold defaults to true: on a page others can already open, the approved version is NOT released until the user confirms the preview and you call publish_version; on a page only workspace members can open, it becomes current directly. After calling, hand the url to the user unchanged, say exactly which file to upload and ask them to come back and say “uploaded” when done; then call get_version with version_id every 15–30 seconds until it is no longer uploading: preview_ready or approved ⇒ give the user the preview URL to confirm; converting ⇒ keep polling; review ⇒ tell the user it is under manual review. After upload, the page also links to the page details for preview and sharing; keep following up through get_version and do not publish a version that is waiting to publish before the user confirms. For a single HTML or Markdown file whose content you already have, use publish_file instead — the user does not need to do anything. Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| hold | No | 默认 true:传完过审后先不切给客户看,确认后调 publish_version。false = 过审即自动发布 Only takes effect once the page has readers outside the workspace (passcode, public, a folder link or a named link); on a page only workspace members can open it is ignored, and the approved version becomes current directly without notifying anyone. | |
| note | No | What changed this time: one line for subscribers and teammates, 20 characters or fewer, for example “Revised pricing after client feedback”. It appears in the update reminder; without it the reminder only says the version number, and the platform will not make one up. | |
| title | No | 新建一份时的标题 | |
| folder_id | No | Only when creating a new page: destination folder; omit to keep it out of any folder. | |
| proposal_id | No | 给已有页面传新版本时传;与 title 二选一 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say this is a non-read-only, non-destructive, non-idempotent call; the description adds far more: the link is valid 2 hours, succeeds only once, uploads only into that one page, needs no login, and works from WeChat. It also discloses the hold default and its conditional effect, and specifies the required post-call loop (hand the URL over unchanged, then poll get_version every 15–30s and branch on preview_ready/approved/converting/review).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The routing rule is front-loaded and useful, but the decision tree is stated twice in near-identical wording, the hold explanation duplicates the schema text, and the trailing keywords block plus the throwaway line about the page linking to page details add length without adding decisions. The follow-up protocol is worth its words; the rest is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, zero-required tool with no output schema, the description covers everything an agent needs: selection, creation mode, the handoff instruction to the user, and the polling/confirmation loop through get_version up to publish_version. Nothing required to call it correctly or to finish the workflow is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds operational meaning beyond the schema: proposal_id and title are mutually exclusive modes (new version vs new page), folder_id only applies when creating, and proposal_id must be found via list_proposals first. It largely restates hold's semantics rather than extending them, which is why this is not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (create an upload page link the user opens to pick files) and explicitly separates it from the two plausible siblings, publish_file and create_cli_token. An agent can pick this tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit routing rule: terminal ⇒ SPACE CLI (create_cli_token first); no terminal plus text files under 2 MB total ⇒ publish_file; anything else or unsure ⇒ create_upload_link. It also names the alternative for a single HTML/Markdown file whose content the agent already has, which is a real exclusion, not just a suggestion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_upload_sessionCreate upload sessionAInspect
Open a direct upload session (a presigned URL per file): a SPACE CLI step; without a terminal do not open one. Which upload route: terminal ⇒ SPACE CLI (create_cli_token first); no terminal and text files up to 2 MB in total ⇒ publish_file; anything else or unsure ⇒ create_upload_link. It is not a separate upload route: you cannot PUT to its URLs, so the version stays stuck in uploading. Create a version and receive a presigned PUT URL for each file, valid for 15 minutes. Provide each relative path, byte size and SHA-256. Upload bytes to those URLs, then finalize_upload. PPTX files are converted to page images; unavailable fonts may be substituted. Quota errors include recovery guidance. Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | What changed this time: one line for subscribers and teammates, 20 characters or fewer, for example “Revised pricing after client feedback”. It appears in the update reminder; without it the reminder only says the version number, and the platform will not make one up. | |
| files | Yes | ||
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic non-readonly/non-idempotent profile; the description adds the real behavior: URLs are PUT-only (not an upload route on their own, or the version stays stuck in 'uploading'), 15-minute URL validity, the required finalize_upload step, PPTX→page-image conversion with possible font substitution, and that quota errors carry recovery guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then routing rules, caveats, mechanics. Dense and mostly waste-free, though the trailing keyword block is boilerplate rather than information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent mutation tool with no output schema, the description covers the full lifecycle (create version → get PUT URLs → upload bytes → finalize_upload), timing constraints, conversion side effects, and error recovery. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, and the description mainly restates the required file triple ('relative path, byte size and SHA-256') — though 'relative' does add a nuance beyond the schema. It says nothing about the required proposal_id or the optional note/mime fields, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Open a direct upload session') plus its mechanism ('a presigned URL per file'), and explicitly distinguishes itself from the sibling routes publish_file and create_upload_link. An agent can tell what it does and what it is not without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit decision tree: terminal ⇒ SPACE CLI (create_cli_token first); no terminal + text files ≤2MB ⇒ publish_file; otherwise/unsure ⇒ create_upload_link, plus a hard exclusion ('without a terminal do not open one'). This is exactly the when/when-not/alternatives guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_folderDelete folderADestructiveInspect
Delete a folder (the folder only, never its pages): its pages move to "not in any folder" and keep their own links and who-can-view; the folder link and folder page stop working at once, and the folder no longer shows on the home page. Restore within 30 days with restore_folder; pages that were not moved elsewhere since go back into it. confirm must repeat the folder name exactly: check with list_folders first, and confirm with the user. To delete the pages too, delete_proposal them one by one first.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | 原样传这个文件夹的名字 —— 删错了 30 天内能恢复,但文件夹链接会立刻失效 | |
| folder_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds substantial context beyond them: pages survive and move to "not in any folder" keeping their links and permissions, the folder link and folder page break immediately, the folder disappears from the home page, and there is a 30-day restore window with a caveat about pages moved elsewhere in the meantime.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the most important fact (pages are never deleted), then consequences, then recovery, then the confirm requirement. It is a single dense paragraph rather than a list, which slightly hurts scannability, but every sentence carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive mutation with no output schema, the description covers consequences, immediate effects, recovery path, confirmation protocol, and the alternative tool for page deletion. Nothing an agent needs to call this safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: confirm has a description (in Chinese) about passing the folder name verbatim, while folder_id is undocumented. The description compensates by explaining that confirm must repeat the folder name exactly and that list_folders should be used to obtain it, which effectively documents how to source folder_id too.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a folder") and immediately scopes it: "the folder only, never its pages." That scope statement distinguishes it from delete_proposal, which the description explicitly names as the tool for deleting pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions and alternatives: check with list_folders first, confirm with the user, use restore_folder to undo, and delete_proposal one-by-one if pages should also go. Both the when-to-use and the when-to-use-something-else cases are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_proposalDelete pageADestructiveInspect
Delete a page: its link stops working immediately and it disappears from the page list, analytics and folder pages — readers who open it get a 404. You can restore it within 30 days with restore_proposal; after that the platform erases it automatically and for good (content, versions, page images, reading records and viewer-appended rows all cease to exist; not reversible). Pages with unresolved reports cannot be deleted — resolve the report first. confirm must repeat the page's title exactly, to guard against deleting the wrong one: check with list_proposals first.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | 原样传这个页面的标题 —— 删错了 30 天内能恢复,但链接会立刻失效 | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is partly covered. The description adds real context beyond them: the immediate 404 for readers, the 30-day restore window, the automatic permanent erasure afterwards, and the exact scope of what ceases to exist. However, the confirm/title-guard behavior is the only invocation-critical detail it describes, and it does not cover whether the call is rate-limited or what a successful response returns. A 3 reflects solid added context while annotations carry the safety signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads the destructive effect and its visibility consequences before the reversible/irreversible distinction. Every sentence carries information, though the parenthetical list of erased artifacts makes it heavier than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema, it covers effect, reversibility window, permanent consequences, blocking preconditions, and the safety input. An agent has enough information to invoke this correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (proposal_id has no description), but the description compensates: it explains that confirm must exactly repeat the page title as a wrong-deletion guard and that the target should be verified via list_proposals. The one gap is that proposal_id itself is never characterized as the page identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb plus resource ('Delete a page') with an immediate statement of the observable effect (link breaks, 404, disappears from lists, analytics and folder pages). It is clearly distinguished from restore_proposal and list_proposals, which are named in the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit preconditions and alternatives: use restore_proposal within 30 days to undo, resolve any unresolved report before deleting, and check the target with list_proposals first. This covers when to use, when it will fail, and which sibling to reach for in each case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_tagDelete a tagADestructiveInspect
Delete one tag from a page: only the name goes, the version stays (still in list_versions, can be rolled back to). If other tags remain, readers see the newest remaining tagged version; once every tag is gone the page behaves as if it was never tagged (readers see the newest live version). Reminds no one.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The tag to delete; see tags on each row of list_versions | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false, but the description goes well beyond them: it names exactly what is destroyed (the name only), what survives (the version, still listed and rollback-able), and the reader-visible consequence in both states (newest remaining tagged version, then newest live version once all tags are gone). The 'Reminds no one' clause additionally discloses that no notification is sent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its scope, then the consequences in a compact sentence. 'Reminds no one' is terse to the point of being cryptic, but every clause otherwise carries real information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter mutation with no output schema, the description covers the important post-conditions: version retention, rollback path, and reader-facing fallback. Gaps remain around prerequisites (permissions) and error behavior when the named tag or proposal doesn't exist — relevant given idempotentHint=false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'name' is documented in the schema but 'proposal_id' has no description anywhere. The description adds no parameter-level meaning at all — it never indicates which page/proposal the tag belongs to or that proposal_id identifies the target page, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with explicit scope: 'Delete one tag from a page', then immediately bounds it ('only the name goes, the version stays'). This is clearly distinct from version-destroying siblings like revoke_versions or delete_proposal without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'version stays (still in list_versions, can be rolled back to)' clause implicitly contrasts this with version-removal tools, which is helpful context. However, no sibling is named and there is no explicit when-not guidance (e.g., when to use revoke_versions instead, or what to do if the tag is the last one).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize_uploadCheck uploaded filesAInspect
Call after all file PUTs finish. Verifies size, SHA-256, signatures, archive and HTML safety, manifest and content moderation. PDF/PPTX conversion may take 1–3 minutes; poll get_version every 15–30 seconds. Validation failures include file/line/fix issues; correct and upload the affected files. Review status blocks publishing. Moderation outages never release content. IMPORTANT: by default an approved update may immediately replace the live version. When the page already has readers outside the workspace, set hold=true whenever the user has not explicitly approved releasing this version, then provide its preview URL for review. Hold only matters once the page has readers outside the workspace (passcode, public, a folder link or a named link); on a page only workspace members can open — every new page starts that way — hold is ignored and the approved version becomes current directly without notifying anyone. Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional: the tag this version gets when it goes live (a string = the tag name, such as 2026-10-28 / v2 final; or {name, title, note}). On a tagged page readers see the newest tagged version and can browse every tagged one (past issues); an existing tag name moves to this version. Daily reports use the day's date. Omitted: a page that has never been tagged behaves exactly as today; on a tagged page this version takes over the tag readers are looking at | |
| hold | No | True keeps the approved version waiting to publish until the user confirms; then call publish_version. Default false: approval automatically makes this version live. Only takes effect once the page has readers outside the workspace (passcode, public, a folder link or a named link); on a page only workspace members can open it is ignored, and the approved version becomes current directly without notifying anyone. | |
| quiet | No | true = no notification this time: when this version goes live, neither workspace people nor readers subscribed to this page are notified; subscribers are notified as usual on the next update. Use it for small edits such as typo fixes | |
| manifest | Yes | ||
| version_id | Yes | ||
| download_basis | No | The basis returned by preview_downloads, used to detect later configuration changes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far beyond the annotations: it discloses latency (PDF/PPTX conversion 1–3 minutes), polling cadence, failure granularity (file/line/fix issues), that review status blocks publishing, that moderation outages never release content, and the critical side effect that by default approval immediately replaces the live version. It also explains when hold is silently ignored (workspace-only pages), which is exactly the kind of non-obvious behavior annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and purposeful in the first half, but the IMPORTANT block restates the 'readers outside the workspace' condition twice almost verbatim and largely duplicates the schema's hold description. The trailing keyword list ('publish · web page · webpage · link · share to WeChat ...') aids retrieval but is padding rather than instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 6-parameter, nested-manifest tool with no output schema, it covers what matters operationally: timing, failure handling, publishing side effects and the hold decision. It omits where the 'preview URL' it tells the agent to provide comes from (presumably get_version/preview_version) and says nothing about the tag/quiet semantics that determine reader-facing outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so the schema already documents hold, quiet, tag and download_basis. The description reinforces hold with decision guidance (only when the user has not explicitly approved), which is real added meaning, but it says nothing about version_id, download_basis, or the large manifest object beyond mentioning that it is validated — leaving the heaviest parameter entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific: 'Call after all file PUTs finish. Verifies size, SHA-256, signatures, archive and HTML safety, manifest and content moderation' names the verb (verify) and the resource (uploaded files/version), and the IMPORTANT paragraph reveals the second function — approval that can make the version live. It stops short of stating in one place that this is the finalize-and-approve step distinct from publish_version, so an agent has to infer the name's meaning from a later paragraph.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ('after all file PUTs finish'), a follow-up loop ('poll get_version every 15–30 seconds'), a remediation path on validation failure ('correct and upload the affected files'), and an explicit branch to another sibling ('hold=true ... then call publish_version'). The conditional for hold (only when the page has readers outside the workspace) is stated twice with concrete examples, leaving nothing to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dataRead data tablesARead-onlyIdempotentInspect
Read data tables attached to a page. Tables are independent of versions: changing data never requires republishing the page. Without table, list every table with name, revision, columns, row count, size, reader write-back switch and collected row counts, plus the three limits. With table, return the full table: columns, rows (only the base rows you wrote with set_data) and revision; format=csv adds CSV text. Rows readers appended through the page are not in rows; read them with list_data_rows. Always call this before set_data to obtain the current revision. Readable only within the current workspace; viewers’ pages read tables with fetch('./_data/.json') (or the optional SDK space.data.get) according to the page’s visibility, not through this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | Table name; omit to list every table | |
| format | No | With table only: csv also returns CSV text (default json) | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial extra context: workspace scoping, independence of tables from versions, the fact that reader-appended rows are omitted from `rows`, and the revision-fetch prerequisite for writes. These are behaviors the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and mode-switching behavior, and dense with useful detail rather than filler. It is quite packed into one paragraph, but nearly every clause carries information; little could be cut without losing routing or behavioral guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explicitly enumerates return contents for both modes (name, revision, columns, row count, size, write-back switch, limits; and columns/rows/revision with csv). Combined with scoping and prerequisite notes, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds real meaning beyond the schema: `table` omitted lists every table, present returns the full table, and `format=csv` 'adds CSV text' rather than replacing JSON. `proposal_id` is undocumented in both schema and description, a minor gap, but the two behavior-defining params are well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read data tables attached to a page') and immediately distinguishes itself from siblings by naming set_data (must precede it) and list_data_rows (for reader-appended rows). An agent can tell it apart from other read tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes usage: omit `table` to list all tables, pass `table` to read one full table, and 'always call this before set_data to obtain the current revision'. It also names the alternative for reader-appended rows (list_data_rows) and clarifies that viewer-page reads do not go through this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_downloadsRead download settingsARead-onlyIdempotentInspect
Read a version’s download switch, original file, ordered attachments, display labels, descriptions, optional filenames, real formats and sizes, and uploaded file candidates. Pass its revision back unchanged when calling set_downloads.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety and idempotency are covered. The description adds the useful workflow context that the revision must be passed unchanged to set_downloads, but doesn't mention pagination, permissions, or output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence enumerating outputs, plus a short second sentence on the revision handoff. Front-loaded and no fluff, though the field enumeration is long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read with one param, annotations, and no output schema, the description adequately explains what data is returned and the revision workflow. The only gap is version_id's meaning/format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with only one parameter (version_id), which has no description. The description implies version-related context but never defines version_id or its format. Baseline for 1 undocumented param is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear verb (Read) and enumerates the exact resource fields it returns (download switch, attachments, labels, formats, sizes, candidates). This distinguishes it from siblings like get_replay_settings or read_version. However, it doesn't explicitly contrast with set_downloads/preview_downloads beyond the revision hint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states to use this before set_downloads by passing the revision back unchanged, which is actionable guidance. It doesn't explicitly rule out other tools or say when not to use it, and doesn't mention preview_downloads as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_engagement_summarySummarize reading activityBRead-onlyIdempotentInspect
Read recent device activity: pages reached or skipped, time spent, downloads, demos, comments and possible forwarding. These are observations, not intent scores or verified identities. Three devices do not establish three people. Read the returned evidence level (none/thin/usable) and limitations before drawing conclusions; explain insufficient evidence when it is not usable. WHO SUBSCRIBED to this page (followed updates, or subscribed by scanning a subscribe code): the end of the text lists one line per person, grouped by source (the subscribe code’s note, or “tapped on the page”) — a row number, the day they subscribed, and whether reminders reach them (reachable / not following the service account / unknown). WeChat names are never shown; the row number is the person’s only identifier (subscribers.groups). To remove someone or revoke a code, use remove_subscriber / revoke_subscribe_code on set_publish_notify.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Default: 30 | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent profile, but the description adds substantial non-obvious context: activity is 'observations, not intent scores or verified identities,' 'three devices do not establish three people,' the evidence level (none/thin/usable) must be read before concluding, and WeChat names are never exposed (row number is the only identifier). This is exactly the interpretive and privacy context the schema cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is long and splits into two loosely related blocks, with an extended subscriber-listing section appended after the engagement summary. The subscriber detail (grouping, reachability states, identifier rules) reads like a second tool's documentation and is not front-loaded, so several sentences do not earn their place in this tool's description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no output schema, the description supplies strong interpretive caveats and privacy rules, which is valuable. But it omits any explanation of the required proposal_id, gives no sense of return shape, and conflates the engagement and subscriber functions, leaving gaps for an agent to fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: 'days' documents its default but 'proposal_id' has no description at all. The description never explains what proposal_id is or what the days window scopes, so it fails to compensate for the uncovered parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it reads recent device activity (pages reached/skipped, time, downloads, demos, comments, forwarding) and also lists page subscribers. The dual scope (engagement + subscriber listing) muddies the single purpose a bit, and it never contrasts itself against nearby siblings like get_session_timeline or get_downloads, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing for a related task ('To remove someone or revoke a code, use remove_subscriber / revoke_subscribe_code on set_publish_notify'), which is genuine when-to-use guidance. However, it offers no guidance on when to call this tool versus the many overlapping read siblings (get_session_timeline, get_downloads, get_folder_analytics), so the core selection decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_folder_analyticsRead folder reading activityBRead-onlyIdempotentInspect
Read the actual order, time spent and interactions as the same browser moves through a shared folder’s pages. Thirty minutes without activity starts a new visit. Devices are not people. Older visits that did not come through the folder link are not added.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| folder_id | Yes | ||
| include_internal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive). The description adds genuinely non-obvious behavioral rules: 30-minute session gap, device-vs-person attribution, and exclusion of visits not arriving via the folder link. This is real behavioral disclosure beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what the tool returns and followed by the caveats that govern interpretation. No filler, though the sentence fragments are terse to the point of being cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and 0% schema coverage, so the description should define the return shape and parameter semantics. It instead spends its budget on sessionization rules, covering behavior but leaving the response shape and parameter meaning unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain days (1-90 window), folder_id (required scope key), or include_internal (whether internal viewers are counted), leaving all three parameters semantically unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (folder analytics: order, time spent, interactions) and distinguishes from get_session_timeline/get_engagement_summary by focusing on shared-folder page flow. Lacks explicit sibling naming but the scope is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this vs get_engagement_summary, get_session_timeline, or list_sessions, and no mention of the required folder_id prerequisite. The description implies it is a folder-scoped read but gives no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reader_viewView the reader side (including premium: hide the capsule)ARead-onlyIdempotentInspect
Read the reader side back: follow updates is always on, the entry is always the labelled capsule in the bottom-right corner in the platform colour, and the brand row and “Make one” are fixed; the one thing that can be set is the premium feature that hides the reader capsule. Returns the account plan (plan: free / premium as pro), the workspace default (workspace_capsule), this page’s setting (page_capsule), the live version’s manifest (manifest_capsule) and the value in effect (effective_capsule: show / hide). Omit proposal_id to read only the workspace. The other thing the author controls is who can view (set_visibility).
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_id | No | Which page; omit to read only the workspace default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnlyHint, idempotentHint, destructiveHint=false), and the description adds genuinely useful domain behavior: which settings are immutable (follow updates, capsule placement, brand row, 'Make one') and which single premium setting can vary. It also names the four returned values, which is more than the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and useful, but the first sentence is a long compound statement about fixed elements, and the final sentence about set_visibility is a non-sequitur for a getter tool that dilutes focus without helping the caller invoke it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating the returned fields (plan, workspace_capsule, page_capsule, manifest_capsule, effective_capsule) and their value domains. Combined with the documented optional parameter, an agent has enough to call it correctly; only the omission of any note about the corresponding setter is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the sole parameter's meaning ('Which page; omit to read only the workspace default') is already fully documented in the schema. The description's 'Omit proposal_id to read only the workspace' restates that same fact rather than adding format or edge-case detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Read the reader side back') and enumerates exactly which reader-side settings are fixed versus settable, so an agent knows what it is reading. It never names the sibling set_reader_view, so it stops short of explicit sibling differentiation, but the read framing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Omit proposal_id to read only the workspace' gives clear conditional usage for the single parameter. However, there is no routing guidance to the obvious sibling set_reader_view for changing these values, and the trailing mention of set_visibility is a tangential aside rather than an alternative-selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_replay_settingsRead recording settingsARead-onlyIdempotentInspect
Read the workspace recording switch, used storage, separate capacity, per-visit limit and retention. Basic reading activity is independent of this switch.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. Beyond that, the description adds a genuinely non-obvious behavioral fact: basic reading activity operates independently of the recording switch. It omits auth requirements and return formatting, but against strong annotations this is solid added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core enumeration is front-loaded and the independence caveat follows as the one piece of qualifying context that earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the burden of telling the agent what comes back, and it does so by listing the five settings. It lacks detail on units, types, or structure (e.g., whether retention is a period or a flag), which keeps it just short of full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document and the baseline of 4 applies. The description's enumeration of settings is about return content, not inputs, so it neither helps nor hurts here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (workspace recording settings), then enumerates exactly what is read: switch, used storage, separate capacity, per-visit limit, retention. The read verb also implicitly contrasts with the write sibling set_replay_settings, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (use this to inspect current recording configuration) but there is no explicit when/when-not guidance or named alternative. The final sentence gives a useful decision fact — that reading activity is independent of this switch — but it does not tell the agent when to prefer this tool over others in the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_timelineRead visit timelineARead-onlyIdempotentInspect
Read a visit’s ordered events: opening, page changes, time spent, scrolling, clicks, QR codes, downloads and comments. Get session_id from list_sessions. replay_url is returned only when an HTML recording or usable PDF/PPTX page replay exists; otherwise the event timeline remains available.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds a genuinely useful conditional: replay_url is returned only when an HTML recording or usable PDF/PPTX page replay exists, otherwise the event timeline is still available. It does not mention limits, pagination, or retention, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and its contents, followed by the prerequisite and the conditional return behavior. Every sentence carries information, though the closing clause about the timeline remaining available is slightly redundant padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full annotation coverage and no output schema, the description covers what the resource is, where the ID comes from, and the one non-obvious return nuance (conditional replay_url). Ordering/pagination or volume expectations are not addressed, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter with 0% schema description coverage, so the schema itself explains nothing. The description partially compensates by naming the source of session_id (list_sessions), but adds no format, length, or validity guidance beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('a visit's ordered events') and then enumerates the event types returned (opening, page changes, time spent, scrolling, clicks, QR codes, downloads, comments). This clearly distinguishes it from siblings such as list_sessions, get_engagement_summary, or get_replay_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent where the required input comes from ('Get session_id from list_sessions'), which routes to the correct prerequisite tool. It stops short of stating when *not* to use this tool or how it differs in scope from get_engagement_summary, so it's clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionRead version statusARead-onlyIdempotentInspect
Read a version’s status, page count, validation or review issues, and the files this version contains (artifacts: each path, type, size, whether it is the entry file and whether readers can download it). After finalize_upload returns converting, poll no faster than every 15–30 seconds. Show the preview to the user once ready. To read the rendered body of a file listed here, use read_version.
| Name | Required | Description | Default |
|---|---|---|---|
| version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the burden is lower. The description nonetheless adds real behavioral value: the polling cadence after conversion, the fact that content may be in a 'converting' state, and how artifacts are shaped (entry file, downloadability). It does not describe pagination or error behavior, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the return contents, then operational guidance, then the sibling route-out — a sensible order. The parenthetical artifact field list is dense but each item earns its place; overall a touch long but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of explaining the return shape (status, pages, issues, artifact fields), which is the key content an agent needs. The only real gap is the version_id parameter, which is omitted entirely from an otherwise thorough definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description never explains the version_id parameter's format or where to obtain it. It implies the tool operates on a single version, but with one undocumented required parameter and no field-level guidance, this is minimum-viable rather than compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) plus resource (a version) and enumerates exactly what it returns: status, page count, validation/review issues, and contained artifacts with their fields. It is clearly distinguishable from siblings like read_version (rendered body), preview_version, and list_versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger (after finalize_upload returns 'converting'), an explicit constraint (poll no faster than every 15–30 seconds), a follow-up action (show the preview once ready), and a named alternative for a different need (read_version for rendered body).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_teammateInvite teammateAInspect
Owner only. Create a time-limited link for a teammate to sign in with WeChat and join this workspace as editor or viewer. Cannot grant owner through a shareable invitation. Returns a URL, QR URL and share_text the user may forward. This tool creates the invitation; it does not message anyone. Existing invitations can be revoked in Members.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Validity in days | |
| role | No | editor creates, publishes and shares pages; viewer is read-only. | editor |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: an ownership/auth precondition, the role-granting boundary, the return payload (URL, QR URL, share_text), and the non-obvious fact that it does NOT message anyone. This clarifies the side-effect surface that the readOnly/destructive hints alone don't convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The precondition 'Owner only' is front-loaded, and each of the following sentences carries distinct, non-redundant information (constraint, return values, side-effect clarification, revocation pointer). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool, the description supplies the preconditions, the grant boundary, the return artifacts, and the follow-up path, so an agent has everything needed to call it and explain the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the days validity window and the editor/viewer role are already documented in the schema. The description reinforces the editor/viewer concept and the time limit but adds no syntax or constraints beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a time-limited link for a teammate to join this workspace') plus the exact access mechanism (WeChat sign-in). The link-based mechanism implicitly distinguishes it from a direct add_member, so an agent can tell what it produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the precondition ('Owner only') and a clear exclusion ('Cannot grant owner'), and points to where existing invites are revoked (Members). It stops short of explicitly contrasting with the sibling add_member, leaving the choice between link-invite and direct-add to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_api_tokensList credentialsARead-onlyIdempotentInspect
List the credentials you can see in this workspace: the ones you created yourself, plus every credential in the workspace if you are its owner (someone has to be able to clean up after a member leaves). Each entry gives its name, prefix, which kind it is (long-lived token / app authorization / temporary upload credential), when it was created, when it expires, when it was last used and whether it has been revoked. It never returns the secret or its hash: the plaintext is shown once at creation and cannot be retrieved anywhere afterwards — say so plainly when the user asks you to read their token back, and do not go looking for it elsewhere. The prefix takes no part in authentication and is safe to read out so the user can tell which credential is which. Stop one with revoke_api_token; token_id comes from here and nowhere else. Creating a new long-lived token is only possible on the web console — that is a deliberate boundary, not a missing tool; for a one-off credential for the SPACE CLI use create_cli_token.
| Name | Required | Description | Default |
|---|---|---|---|
| include_revoked | No | 连已撤销 / 已过期的一起列(默认 false,只列还能用的) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial behavioral context beyond them: the visibility rule tied to ownership ('someone has to be able to clean up after a member leaves'), the hard guarantee that the secret and its hash are never returned, that the plaintext appears only once at creation, and that the prefix is safe to read out. This is exactly the kind of disclosure an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded: scope first, then returned fields, then the security caveat, then routing. Every sentence carries unique information, though the parenthetical justification and the retrieval warning are slightly long for a read-only list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so thoroughly, enumerating the fields each entry provides. Combined with the scoping rules and cross-tool routing, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so include_revoked is already documented in the schema (in Chinese). The description mentions that entries report revocation status but does not add syntax or semantics for the parameter itself, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List) and resource (credentials/api tokens), then immediately scopes it: own credentials plus everything in the workspace if owner. The enumerated entry fields and the explicit routing to revoke_api_token and create_cli_token clearly distinguish it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the follow-up action ('Stop one with revoke_api_token; token_id comes from here and nowhere else'), states a deliberate boundary ('Creating a new long-lived token is only possible on the web console'), and points to create_cli_token for one-off SPACE CLI credentials. When-to-use and when-not are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_rowsRead rows appended by viewersARead-onlyIdempotentInspect
Read rows viewers appended to a data table from the page (plain form, POST ./_data/ or the SDK space.data.append; sign-ups, check-ins, votes, feedback), newest first. Each row carries its status (approved: passed moderation, visible to viewers; held: flagged by moderation, visible only to the publisher), who submitted it (by: a member is {kind:member, user_id, role, nickname}, a visitor is {kind:visitor}), device, time, and the page version and data version at write time. These rows are not in get_data rows and are never overwritten by set_data; to merge them into the base table, read them back and replace the table with set_data. Visitor rows have device and time only: they do not identify people and must not be read as intent. Filter by table or status; limit defaults to 100, at most 500. Pass since (the next_since from the last reply, a row_id, or an ISO time) to get only newer rows, oldest first. Rows a submitter withdrew from the page are still listed, with withdrawn_at (the page read no longer shows them; the content stays with you). When the form has image fields each row also carries images: { field: [{ id, url, thumb_url, width, height, blocked }] } — url works for one hour and opens the image directly; blocked = image moderation flagged it (so the row is held). Act on a held row with set_data_row_status. On location check-in tables with keep_coords, each row also carries location: { lat, lng, coord: gcj02, located_at, expires_at } (null once 30 days after the check-in have passed).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 默认 100 | |
| since | No | Only rows after this point (oldest first): the next_since from the last reply, a row_id, or an ISO time | |
| table | No | 只看这张表;不传 = 全部表 | |
| status | No | approved = 过审、读者可见;held = 审核命中、只有你看得到 | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/idempotent, yet the description adds substantial behavior: rows are returned newest first but oldest first when since is passed, held vs approved visibility, withdrawn rows remain listed with withdrawn_at, image URLs expire in one hour, and location coordinates null out 30 days post check-in. It also warns that visitor rows carry no identity and must not be read as intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose and the get_data/set_data relationship, and nearly every sentence carries information an agent needs (status values, withdrawal semantics, image and location payloads). It is a dense single paragraph, though, and the payload-shape details would read better as structured lines than run-on prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing return values and does so thoroughly: per-row status, submitter shape (member vs visitor), device, time, versions, plus conditional images and location objects. Nothing an agent needs to interpret a reply is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies semantics the schema only sketches: limit defaults to 100 and caps at 500, since accepts the returned next_since, a row_id, or an ISO time, and crucially that since flips ordering to oldest first. Only proposal_id gets no explanation in either the description or the schema, a minor gap at 80% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read rows viewers appended to a data table from the page") and immediately scopes it against the sibling read tool: "These rows are not in get_data rows and are never overwritten by set_data." An agent can distinguish this from get_data without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit alternatives and the condition that selects them: use set_data to merge these rows into the base table, and set_data_row_status to act on a held row. It also names the filtering and pagination affordances (table/status, since) that define when this call is the right one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deletedRecently deleted pages and foldersARead-onlyIdempotentInspect
List pages and folders deleted in the last 30 days that can still be restored (newest first): each item has kind (page / folder), id, name, when it was deleted and when it will be erased. Restore a page with restore_proposal (proposal_id = id), a folder with restore_folder (folder_id = id).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. Beyond that, the description adds substantive behavior: a 30-day restorable window, newest-first ordering, and the erasure deadline per item. Pagination or result-size behavior is not mentioned, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the scope and ordering, followed by the field summary and the restore routing. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input parameters and no output schema, the description carries the burden of describing return values, and it does so by enumerating kind, id, name, deletion time, and erasure time. Missing pagination/count behavior for potentially long lists is the only notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters the baseline is 4, and nothing here detracts. It usefully adds cross-tool semantics by showing how the returned 'id' maps into restore_proposal's proposal_id and restore_folder's folder_id, which is not derivable from this tool's own schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List pages and folders') plus an explicit scope ('deleted in the last 30 days that can still be restored') and ordering ('newest first'). This clearly separates it from list_proposals/list_folders (live content) and from restore_proposal/restore_folder (mutations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for use—only recoverable, recently deleted items are returned—and names the exact follow-up tools with parameter mappings ('restore_proposal (proposal_id = id)', 'restore_folder (folder_id = id)'). It doesn't explicitly say what to use for older/permanently deleted items or for live content, so it falls just short of naming all alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domainsList your domainsARead-onlyIdempotentInspect
List the custom domains bound to this workspace: each one’s progress (state / step / say / next), certificate expiry, paths (which name opens which page), and how many slots are used (3 per workspace on premium; a root domain that redirects to www counts as one together with www; binding your own domain is a premium feature — free accounts cannot bind new ones, domains already bound keep working). Call it when the user asks which domains they have or when you need a domain_id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the supplied readOnlyHint and idempotentHint annotations, the description discloses operational constraints: 3 slots per workspace on premium, root-domain-plus-www counting as one slot, and the rule that free accounts cannot bind new domains while existing ones keep working. It also describes the return structure (progress, certificate expiry, paths, slot usage), which is valuable since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and return fields are front-loaded, and every clause contributes useful detail about slot counting or premium restrictions. The first sentence is dense with parentheticals, but no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with no output schema, the description supplies the missing return-value context (progress fields, certificate expiry, path mappings, slot usage) and the key business rules (premium slots, free-account binding restriction). An agent has enough information to invoke and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4. The description correctly spends no space on parameter semantics and instead focuses on what the tool returns and when to call it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List the custom domains bound to this workspace') and enumerates the returned fields: progress state, certificate expiry, path mappings, and slot usage. This clearly distinguishes it from sibling domain tools such as bind_domain, unbind_domain, or verify_domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names two triggers: 'when the user asks which domains they have' and 'when you need a domain_id'. It does not explicitly exclude mutation-oriented siblings like bind_domain or set_domain_route, but the read-only framing and trigger conditions provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_examplesBrowse built-in examplesARead-onlyIdempotentInspect
List the example packages LivePage ships with and say which one to copy. Call this BEFORE writing anything you intend to publish: weekly reports, client proposals, stage decks, sign-up / poll collection, trips to send to family, and read-write mini apps each have a real, publishable package to adapt, and writing one from scratch usually misses the platform features (passcode access, in-page forms that land in the feedback thread, reader write-back to data tables, deck speaker notes on a phone). No arguments returns the catalogue: purpose, when to pick it, which features it uses, page structure. With key it returns that package’s manifest, README (which feature it shows / what to change / how to publish it) and entry source. Add file for one specific file inside the package. Read-only: creates nothing, uploads nothing, and is independent of the current workspace. Every customer name, figure, case study and price in an example is fictional: copy the structure, replace the content.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Which example to read (its key from the catalogue). Omit it to get the whole catalogue. | |
| file | No | Which file in the package to read (relative path). Use together with key; omitted means the entry file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: workspace independence ('independent of the current workspace'), the exact return shape per mode (catalogue fields, manifest + README + entry source), and a fictional-content warning that prevents an agent from copying names, figures or prices. The read-only reaffirmation ('creates nothing, uploads nothing') largely restates readOnlyHint/destructiveHint, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the BEFORE instruction, then layered by mode. The long middle sentence enumerating use cases and platform features is dense but earns its place as scope-setting; a slightly tighter list would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden and does so fully — it names the catalogue fields, what the key-mode manifest/README/entry source contain, and what the README covers. Combined with the fictional-data caveat, an agent has everything needed to call it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; the description exceeds that by explaining the interaction between the two parameters and the mode transitions (omit everything = catalogue, add key = package detail, add file = one file, omitted file = entry file) and what each mode returns. Some of this duplicates the schema's own descriptions, so not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('List the example packages LivePage ships with and say which one to copy') and states the intended outcome, not just the read. No sibling in the list overlaps this resource, and the three usage modes (no args / key / key+file) are each spelled out, so an agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use: 'Call this BEFORE writing anything you intend to publish', followed by an enumeration of the concrete artifact types it applies to. It also supplies the when-not / why-bother rationale ('writing one from scratch usually misses the platform features') and names the specific features at risk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feedbackRead feedbackBRead-onlyIdempotentInspect
Read this page’s feedback threads: page comments and text anchors, feedback captured from meetings or messages, internal notes and open/confirmed/disputed/resolved status. Anchors stay attached to the version the viewer actually saw. Original feedback is returned unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| version_id | No | ||
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe-read profile (readOnly, idempotent, non-destructive), so the bar is lowered, and the description still adds real value: anchors are pinned to the version the viewer actually saw, and original feedback is returned unchanged. These are non-obvious behavioral traits about versioning and immutability that the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core action, and each clause adds a distinct piece of information (content types, version anchoring, immutability). Slightly dense but no wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with annotations covering safety and no output schema, the description gives a reasonable sense of what comes back. The gap is at the parameters: with three parameters fully undocumented in the schema, the description omits how status and version_id narrow the result, leaving an agent to guess at filtering behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden, and it partially does: it enumerates the status values (open/confirmed/disputed/resolved) matching the status enum and references the version-scoping semantics relevant to version_id. However, it never explains that status/version_id act as filters, nor what proposal_id selects, so it only partly compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read this page's feedback threads') and enumerates the content types it returns (page comments, text anchors, meeting/message feedback, internal notes). It does not distinguish itself from the close sibling list_my_feedback, leaving the agent to infer the scope difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no statement of prerequisites, and no mention of alternatives such as list_my_feedback or reply_feedback. The only implied usage is 'read feedback for this page', which the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_foldersList foldersARead-onlyIdempotentInspect
List this workspace’s folders, item counts, sharing exclusions, introductions, covers, visibility, existing URLs and passcodes, and management URLs. Use list_proposals with a folder_id for its contents, or null for pages not in any folder.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds genuinely new context by disclosing the returned data surface (counts, sharing exclusions, covers, URLs, passcodes, management URLs), which helps an agent judge output usefulness; pagination/limits are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, and the second sentence carries the routing instruction. The attribute enumeration is long but each item adds informational value rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description compensates well by describing what the listing returns and how it relates to list_proposals. Minor gaps around pagination or ordering behavior remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to document or obscure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (this workspace's folders) and enumerates the returned data surface (item counts, sharing exclusions, URLs, passcodes, management URLs). It also names the sibling list_proposals and the distinction between them, so an agent can differentiate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to list_proposals with a folder_id for folder contents, or null for unfiled pages, which clarifies when this listing is the right choice. No explicit 'when not to use list_folders' statement, but the alternative is well identified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersList membersARead-onlyIdempotentInspect
List this workspace’s members and roles, plus every invitation link that has not expired. Use it to identify collaborators and understand who created pages and versions. The invite_id it returns for each live invitation is the argument for revoke_invite and is available nowhere else once the invitation has been created.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, but the description adds genuinely new context: it returns only non-expired invitations, and the invite_id is unavailable anywhere else after creation — an important recoverability constraint an agent can't infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero waste, front-loaded with the core behavior then the motivating use case and the downstream dependency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must convey the return shape — and it does, covering members, roles, invitation links, and the key invite_id. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so baseline is 4. The description instead characterizes the returned data (members, roles, invitation links), which is the relevant semantic content here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource + scope: it lists workspace members AND roles, plus unexpired invitation links. This clearly separates it from siblings like list_api_tokens, list_folders, or list_sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage context ('identify collaborators, understand who created pages and versions') and names the downstream tool revoke_invite that consumes its invite_id. No explicit when-not guidance, but the routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_feedbackRead feedback sent to the LivePage teamARead-onlyIdempotentInspect
List the feedback this workspace has sent to the LivePage team, newest first: the original text, category, status (new / seen / planned / shipped / wontfix) and our reply. Call it when the user asks what happened to a suggestion; when you see a reply or the status becomes shipped, tell the user in a sentence or two. When the result carries notices, those are replies the user has not heard yet (shown only once): pass them on first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return at most; default 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: it discloses newest-first ordering, the exact status vocabulary, and the non-obvious 'notices ... shown only once' behavior with an instruction to surface them first. This is exactly the kind of side-effect disclosure annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage and relaying behavior; every sentence carries information and nothing is redundant. It is a dense single paragraph with multiple embedded instructions, which slightly reduces scannability but not efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields (text, category, status values, reply) and explaining the transient notices mechanic. An agent has everything needed to call it and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single limit parameter is fully documented in the schema (range 1-50, default 20). The description adds no parameter-level detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and precise resource (feedback this workspace has sent to the LivePage team), plus scope and ordering (newest first) and the returned field set. This clearly distinguishes it from siblings like list_feedback and send_feedback_to_livepage without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger: 'Call it when the user asks what happened to a suggestion,' and even prescribes follow-up behavior when a reply or shipped status appears. It lacks an explicit contrast against sibling tools (e.g. list_feedback), so it stops short of a 5, but the usage context is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proposalsList pagesARead-onlyIdempotentInspect
List pages in the current workspace, including title, proposal_id, version state, current_version_id (the version clients see now), visibility, URL and recent activity. Use this to find existing pages rather than asking the user to copy IDs. Omit folder_id for all pages, use a folder ID for that folder, or null for pages not in any folder. In a new session, take current_version_id straight to preview_version or get_version: a proposal_id is not a version_id, and get_version on a proposal_id returns not_found. Use list_versions for earlier versions or a rollback. Existing legacy links are reported with their counts and link_ids: those links remain valid independently of default-link visibility, and revoke_share_link takes one of those link_ids to stop it. This is the only place a link_id is available. Each row also flags versions that exist but clients cannot see: pending_version is a version that never finished publishing (still uploading, converting or under moderation), and held_version is an approved version waiting to publish. When either is present, continue with that version (list_versions or get_version to see its state, publish_version to publish one that is waiting) instead of treating the page as unpublished and creating another one. When the result carries notices (the LivePage team has replied to feedback the user sent earlier; shown only once), pass them on to the user in a sentence or two before anything else. Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search page titles; can be combined with folder_id. | |
| folder_id | No | Omit for all pages; a folder ID lists that folder; null lists only pages not in any folder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read profile, but the description goes well beyond them: it explains current_version_id semantics, the distinction between pending_version and held_version, that link_ids are only surfaced here, that legacy links survive visibility changes, and that notices must be relayed once to the user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core routing information is front-loaded, but the body is long and drifts into link/notice workflows that are only tangentially about listing pages, and the trailing keyword dump adds bulk without helping invocation. A capable agent gets what it needs, but several sentences could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return fields (title, proposal_id, version state, current_version_id, pending/held flags, notices) and does so thoroughly, so an agent knows what to expect and how to act on each field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the three-way folder_id semantics that the description merely restates. The description adds no syntax or format detail about the query parameter beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('List pages in the current workspace') and enumerates the returned fields, which lets an agent distinguish it from list_versions, list_folders, and list_feedback. It also preempts naming confusion by explaining that a proposal_id is not a version_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('find existing pages rather than asking the user to copy IDs'), parameter-selection guidance for folder_id (omit / ID / null), and names alternatives with conditions — list_versions for earlier versions or rollback, preview_version/get_version for the current version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsList visitsARead-onlyIdempotentInspect
List visits to this page in a date range, including device, start, duration, entry and furthest page, steps and source. Optionally filter by link or include internal visits. Use get_session_timeline for individual steps.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Default: 30 | |
| link_id | No | ||
| proposal_id | Yes | ||
| include_internal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the important scoping note about internal visits and the date-range bound, but does not mention the 90-day maximum, default 30-day window, or pagination/return volume. With annotations carrying the safety burden, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first says what is returned, the second says the filtering options and the sibling escape hatch. Nothing is wasted and the front-loaded verb/resource framing is correct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema and partial annotations, the description covers the main return fields and filtering, and points to get_session_timeline. However, it omits the 90-day cap, the default 30-day range, and any pagination/result-size expectation, which an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%: days, link_id and include_internal have no schema descriptions, and only the 90-day/days default hint is present. The description partially compensates by saying it filters by link and optionally includes internal visits, which maps to link_id and include_internal, but it ignores the days parameter and its boundaries. Baseline for near-miss coverage is around 2-3; the description earns a 3 for mapping two of three undocumented params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (List) and resource (visits to this page), and enumerates the returned fields (device, start, duration, entry/furthest page, steps, source). It does not differentiate itself from the many other list_* siblings, but the domain object (visits/sessions) is specific enough to distinguish it from list_proposals or list_folders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit scope (date range) and the ability to filter by link or include internal visits, plus routes the agent to get_session_timeline for per-step detail. It does not state when NOT to use it or name alternative list tools, but the sibling hand-off for individual steps is a concrete usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_versionsList versions of one pageARead-onlyIdempotentInspect
The version table of one page, newest first: version_id, sequence number, status, whether it is the version clients see now, whether it is waiting to publish, when it went live, and a preview link. Use this when a new session has only a proposal_id: preview_version, publish_version and get_version all take a version_id, and a proposal_id is not one. To preview what clients see now you do not need to scan the rows: list_proposals already returns current_version_id. Rows with status published and is_current false are either waiting to publish or older versions superseded by a newer one, which publish_version can roll back to.
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_id | Yes | 哪一个页面,来自 list_proposals |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent safety, and the description adds real semantic value: newest-first ordering and the interpretation of rows with status 'published' and is_current false (waiting to publish vs. superseded, and rollback-able via publish_version). It does not mention pagination or result-size limits, so it stops short of full behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the returned shape, then usage routing, then status semantics. Dense but every clause carries information; the field enumeration sentence is somewhat long but earns its place since there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a single parameter, the description compensates well by listing returned fields and explaining status combinations. The only gap is the absence of any statement about result volume/pagination for a listing tool that could return many versions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining the provenance and identity of proposal_id ('from list_proposals') and stressing that it is not a version_id, which is exactly the confusion an agent would hit. It adds meaningful disambiguation beyond the schema's own text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific resource (the version table of one page), the ordering (newest first), and enumerates the returned columns, so an agent knows exactly what this yields. It also implicitly distinguishes itself from get_version/preview_version by being the listing operation over a proposal rather than a single version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the trigger condition ('when a new session has only a proposal_id') and the alternatives that cannot be used (preview_version, publish_version, get_version take a version_id, not a proposal_id). It further routes the agent away from scanning rows by pointing to list_proposals for the current version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_proposalMove pageAInspect
Move a page into a folder, or set folder_id to null to take it out of any folder. Moving a folder’s cover out also removes that cover. Moving a page into a shared folder can grant access to its live version unless it is set to not be shared through the folder link.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | Yes | null = not in any folder | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic flags (readOnly=false, destructive=false, idempotent=false). The description adds two non-obvious behavioral facts the annotations do not: removing a page from a folder also strips a folder cover, and moving into a shared folder can grant access to its live version. That is exactly the kind of consequence an agent needs before mutating.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and null semantics are front-loaded in the first sentence, followed by the two caveats. Every clause carries information, though the final sentence is dense and could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with annotations present and no output schema, the description covers the main risks (cover removal, access grant). It does not say whether the move is reversible or what the response contains, but those are minor given the annotations and simple schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: folder_id is documented in the schema itself ('null = not in any folder'), which the description largely repeats, while proposal_id is undocumented in both places. The description adds the access-grant implication of folder_id but nothing about proposal_id, so it partially compensates rather than fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Move a page into a folder') plus the null-folder case, so the operation is unambiguous. It does not differentiate itself from sibling tools such as set_folder, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the conditional side effects ('moving a folder's cover out also removes that cover'), which hint at when the call has consequences, but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_downloadsPreview delivery materialsARead-onlyIdempotentInspect
After creating an upload session, compare the proposed manifest with the current version before finalizing. Returns added, removed, replaced and missing files, the full list and a basis token. Omitted downloads inherit explicit current settings; a first version defaults to none; [] clears the list. Resolve missing files explicitly. Pass basis as download_basis to finalize_upload to detect concurrent changes. The CLI handles this step.
| Name | Required | Description | Default |
|---|---|---|---|
| manifest | Yes | ||
| version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description goes further by disclosing the diff output categories and the concurrency-detection contract via the basis token. It also explains inheritance semantics for omitted downloads (inherit current settings, first version defaults to none, empty array clears) and the rule that missing files must be resolved explicitly — behavior an agent could not infer from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and workflow position are front-loaded in the first sentence, followed by return shape and then field semantics — a sensible order. Every sentence carries information, though 'The CLI handles this step' is terse to the point of ambiguity about what an agent should do with that fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of naming the returned diff fields and basis token, and it explains the mutate-vs-clear semantics that matter for a preview call. The remaining gap is the undocumented manifest vocabulary, which is presumably shared with the upload/finalize siblings but is not referenced here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the manifest is a large nested object, so the description carries real weight: it defines the semantics of the downloads field (omission inheritance, defaults, empty-array clearing) and the role of the returned basis token. However, it says nothing about the dozens of other manifest properties (title, entry, cta, forms, actions, theme, etc.) or about version_id, leaving most of the schema undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation: diffing a proposed downloads manifest against the current version of a version_id, and enumerates the result categories (added, removed, replaced, missing, full list, basis token). Combined with the title and the sequencing sentence, an agent can distinguish this from create_upload_session and finalize_upload without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It places the call precisely in the workflow — after creating an upload session, before finalizing — and tells the agent to carry the returned basis into finalize_upload as download_basis to detect concurrent changes. It also hints that the CLI covers this step, which is an implicit exclusion but not a spelled-out 'do not call when'. No competing sibling such as preview_version is named as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_versionCheck published appearanceARead-onlyIdempotentInspect
Returns an interactive preview link (interactive_url) to the real SPACE viewer, open for 60 minutes. Screenshots are disabled on this server: no images are returned and screenshot_status is disabled. Hand interactive_url to the requesting user: it needs no login and shows desktop or mobile (as in WeChat), or both side by side, and fills the screen when opened on a phone. Default visitor audience never includes speaker notes. Read-only: does not publish, record visits, submit feedback, edit access or join live presenter rooms. Device emulation does not verify real phones, WeChat or cross-device remote control. Pass embed_origin to also get embed.url: an embed link only that parent origin (a platform first-party origin such as https://claudefleet.24haowan.com, or one on the workspace embed allowlist) may frame, read-only, no login, no visit tracking, no feedback or form submissions, valid at most 60 minutes; call again to refresh. Preview links grant temporary access to one version; share only with the requesting user. Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| panel | No | document | |
| theme | No | default | |
| wait_ms | No | ||
| audience | No | visitor | |
| viewports | No | ||
| version_id | Yes | ||
| embed_origin | No | To embed this version in another page, the parent origin (such as https://claudefleet.24haowan.com); platform first-party origins are allowed by default, any other origin must already be on the workspace embed allowlist. Returns embed.url (read-only, no login, at most 60 minutes, only that origin may frame it). | |
| embed_renewable | No | For an authenticated internal studio: also return embed.renewal (read-only, exact version/origin, max 7 days or token expiry). Keep renewal.key on the trusted server; never expose it in a page URL. No publishing or editing rights. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations with behavior an agent could not otherwise know: 60-minute expiry, screenshots disabled and screenshot_status disabled, no login required, visitor audience never includes speaker notes, device emulation does not verify real phones/WeChat, embed links are origin-locked to allowlisted parents and expire, and renewal keys must stay server-side. This is exactly the extra context annotations can't carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, which is good, but the body is a dense run-on of chained clauses and the trailing 'Keywords: publish · web page · ...' list is search-stuffing that adds noise rather than agent-relevant meaning. Several constraints are repeated (60 minutes appears twice, no login twice).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly names the fields returned (interactive_url, embed.url, screenshot_status, embed.renewal) and covers security/expiry constraints, so an agent can call and hand off the result safely. The remaining gap is the unexplained page/panel/theme/wait_ms parameters, which leave preview composition ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 22% across 9 parameters, so the description must compensate. It does cover the consequential ones — audience (visitor default, no speaker notes), viewports (desktop/mobile/both side by side, fills a phone screen), embed_origin and embed_renewable — but page, panel, theme, wait_ms and version_id get no semantics at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and artifact: returns an interactive preview link to the real SPACE viewer, valid 60 minutes. The explicit 'Read-only: does not publish, record visits...' clause separates it from write-side siblings such as publish_version and push_to_wechat without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operating instructions: 'Hand interactive_url to the requesting user', 'Pass embed_origin to also get embed.url', 'call again to refresh', and 'share only with the requesting user'. It also enumerates what it does not do (no publishing, no feedback, no presenter rooms). It never names a sibling alternative by name, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_filePublish one page or document (no terminal)AInspect
Publish an HTML / Markdown page or document straight to a WeChat-ready LivePage link; no terminal needed.
Which upload route: terminal ⇒ SPACE CLI (create_cli_token first); no terminal and text files up to 2 MB in total ⇒ publish_file; anything else or unsure ⇒ create_upload_link.
The link opens and forwards inside WeChat (links from WorkBuddy's built-in site publishing, *.app.workbuddy.host, cannot be opened inside WeChat); use this when the user wants it in WeChat.
Use this when you have no terminal and the page is text files — HTML or Markdown pages and documents (no upload session to open first): pass the complete text content and the platform uploads it for you. Validation, content moderation (never released while moderation is unavailable), automatic release after approval or hold, and the result are exactly the same as finalize_upload. To add a version to existing pages pass proposal_id (find it with list_proposals first); to create new pages pass title (optional folder_id). One file: pass filename + content (.html / .htm / .md). When the page, styles and scripts are separate files, pass files: [{ path, content }] instead (one or the other): paths may include directories (e.g. css/style.css) and pages reference each other with relative paths; text files only (html / htm / md / css / js / mjs / json / svg / txt / csv), at most 50; the entry is manifest.entry, else index.html, else the only page. When a file is already at a public https URL (a cloud-drive public download link, a PDF link produced by another tool), pass { path, url } in files instead (e.g. [{ path: 'report.pdf', url: 'https://…' }]) and the platform fetches it — PDF, PPTX and images work: up to 50 MB each and 50 MB in total, at most 5 URLs, fetched within 30 seconds; only public addresses, and links that need a login cannot be fetched (fetch_failed, with fetch_* details in issues). UTF-8 text, up to 2 MB in total — anything larger is rejected with too_large and never truncated. The contents of images, PDF, PPTX and other binary files cannot be sent here: use a URL if there is one; otherwise without a terminal, use create_upload_link to give the user an upload page; with a terminal, use the SPACE CLI with create_cli_token. IMPORTANT: when the page already has readers outside the workspace, set hold=true whenever the user has not explicitly approved releasing this version, then give them the preview URL before publish_version. Hold only matters once the page has readers outside the workspace (passcode, public, a folder link or a named link); on a page only workspace members can open — every new page starts that way — hold is ignored and the approved version becomes current directly without notifying anyone. For a small edit (a typo fix) that should not notify anyone, pass quiet=true: workspace people and subscribers are not notified this time, and subscribers are notified on the next update.
Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional: the tag this version gets when it goes live (a string = the tag name, such as 2026-10-28 / v2 final; or {name, title, note}). On a tagged page readers see the newest tagged version and can browse every tagged one (past issues); an existing tag name moves to this version. Daily reports use the day's date. Omitted: a page that has never been tagged behaves exactly as today; on a tagged page this version takes over the tag readers are looking at | |
| hold | No | True keeps the approved version waiting to publish until the user confirms; then call publish_version. Default false: approval automatically makes this version live. Only takes effect once the page has readers outside the workspace (passcode, public, a folder link or a named link); on a page only workspace members can open it is ignored, and the approved version becomes current directly without notifying anyone. | |
| note | No | What changed this time: one line for subscribers and teammates, 20 characters or fewer, for example “Revised pricing after client feedback”. It appears in the update reminder; without it the reminder only says the version number, and the platform will not make one up. | |
| files | No | A web page made of several files (page, styles, scripts and so on), or files at public URLs; use this or filename / content. | |
| quiet | No | true = no notification this time: when this version goes live, neither workspace people nor readers subscribed to this page are notified; subscribers are notified as usual on the next update. Use it for small edits such as typo fixes | |
| title | No | Title for a new page; with proposal_id it becomes this version’s title. | |
| content | No | For one file: its complete text content (UTF-8). | |
| filename | No | For one file: its name, such as index.html or report.md, without a directory; use this or files. | |
| manifest | No | Optional manifest fields, the same as finalize_upload (theme / theme_switch / chrome / scene / share / sections / actions …). For one file the entry comes from filename; with files you may set entry to choose the entry page. title defaults to the title above. Page settings can ride along here too (page contract): name (page name) · folder (null = out of any folder) · folder_link (shared through the folder link) · path (workspace address) · forms (same fields as set_form, no amount) · analytics.replay (session recording) · tag; anything left out is untouched, and page_settings in the result reports each item. | |
| folder_id | No | Only when creating a new page: destination folder; omit to keep it out of any folder. | |
| proposal_id | No | Existing page to add a version to; supply this or title. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' basic mutation profile, it discloses moderation gating, automatic release, hold and notification behavior, remote fetching constraints, and rejection with too_large rather than truncation. The requirement to hold unapproved releases for pages with external readers is especially valuable safety context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and routing are front-loaded, but the remainder is a sprawling, dense paragraph with repeated no-terminal guidance and substantial duplication of the hold, quiet, and file-field schema descriptions. The keyword tail adds further bulk, while headings or bullets would make the many modes and constraints much easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, multi-mode publishing tool, it covers selection, invocation combinations, content acquisition, limits, moderation, release safety, notifications, and several errors; the schema documents the remaining fields such as manifest. With no output schema, however, the response contract is only indirectly described as a LivePage link and as being the same as finalize_upload, so the definition is not fully self-contained about the returned result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds substantial cross-parameter semantics: title versus proposal_id, filename/content versus files, content versus url, and the entry-page fallback order. It also supplies aggregate limits, supported text formats, public-URL restrictions, and concrete failure behavior that the individual schema fields do not fully capture.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific action, resource, and outcome: publishing HTML or Markdown content to a WeChat-ready LivePage link without a terminal. It also distinguishes the tool from built-in site publishing and from the CLI and upload-link routes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit selection tree among SPACE CLI with create_cli_token, publish_file, and create_upload_link, plus separate guidance for WeChat sharing and binary content. It also explains when to use list_proposals for an existing page and when hold leads to preview followed by publish_version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_versionSwitch live versionADestructiveInspect
Make an approved version that is waiting to publish live, or roll back to an earlier approved version. Existing versions and comments remain. Call only after the user explicitly approves publishing or rolling back. Approved uploads without hold may already have become live. quiet=true makes this switch notify no one (workspace people or subscribers); releasing a held version keeps the quiet choice made at upload unless you pass it. Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional: the tag this version gets when it goes live (a string = the tag name, such as 2026-10-28 / v2 final; or {name, title, note}). On a tagged page readers see the newest tagged version and can browse every tagged one (past issues); an existing tag name moves to this version. Daily reports use the day's date. Omitted: a page that has never been tagged behaves exactly as today; on a tagged page this version takes over the tag readers are looking at | |
| note | No | What changed this time: one line for subscribers and teammates, 20 characters or fewer, for example “Revised pricing after client feedback”. It appears in the update reminder; without it the reminder only says the version number, and the platform will not make one up. | |
| quiet | No | true = no notification this time: when this version goes live, neither workspace people nor readers subscribed to this page are notified; subscribers are notified as usual on the next update. Use it for small edits such as typo fixes | |
| version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotency; the description adds real context beyond them: 'Existing versions and comments remain', the explicit-approval gate, and the notification side effects of quiet=true, including that releasing a held version inherits the upload-time quiet choice. That is meaningful disclosure about side effects not encoded anywhere in the schema, though permissions and rollback reversibility are still unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core is front-loaded and each of the first four sentences carries real information about preconditions and notification effects. The trailing keyword list ('publish · web page · webpage · link · share · share to WeChat · ...') is thirteen tokens of search-style noise that add nothing to an agent's decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, the description covers the trigger condition, the survival of existing versions/comments, and the notification matrix. What is missing is modest: whether this requires a specific role or permission, and what happens to readers mid-session when the live version switches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% and tag/note/quiet are already richly documented there, so the description only needs to compensate at the margin. It does add one non-obvious interaction (quiet on a held version carries over from upload), but version_id — the sole required parameter — is undocumented in both schema and description beyond the vague 'roll back to an earlier approved version'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource pair ('make an approved version live', 'roll back to an earlier approved version'), which is far more precise than the title alone. It doesn't explicitly distinguish itself from near siblings like publish_file, tag_version, or revoke_versions, so the agent still has to infer which switching tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a hard precondition — 'Call only after the user explicitly approves publishing or rolling back' — plus the useful edge case that approved uploads without hold may already be live, avoiding a redundant call. It never names an alternative tool, so the routing guidance to siblings is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_to_wechatSend this page’s live version to WeChatAInspect
Send this page’s CURRENT LIVE version to WeChat as a service-account template message. By default (to omitted or "self") it goes to YOU ONLY — the account calling this tool — whether or not the workspace has other members; nobody else receives anything. to: "members" sends it to the people in this workspace instead (the creator plus every member; you are excluded when “also send to me” is off). It is never sent to clients — forward them the link instead. Pass include_subscribers: true to also send it to this page’s subscribers (each person gets a version once, and at most one reminder a day). The receipt’s first line is the same sentence the publish receipt uses — “This time it will notify: you, 2 teammate(s), 5 subscriber(s) (4 reachable)” — relay it to the user as is. Each person receives their own personal link, created on first send and reused afterwards, so reading activity shows who opened it. This ignores the workspace’s automatic-push switch: it is a manual send. AUTOMATIC DEDUPLICATION: each person gets a given version once — automatic push, publishing, this tool and subscriber reminders share one ledger. When automatic push is on, publishing has already sent it, so there is no need to call this tool; a repeat call sends nothing and the receipt says “already sent (automatic push · 14:03), not sent again”. Pass force: true only when the user really wants it again (only with to: "self", at most 5 times a day). People who have not followed the service account do not receive it, and the receipt reports those separately (not followed / refused / no WeChat binding) — that is not an error. A page with no live version is rejected with a clear 409 rather than silently doing nothing. When YOU did not receive it (no WeChat binding or not following), the receipt includes a binding QR code (an image plus bind_qr_image_url): once the user scans it in WeChat, the binding completes within seconds and this page is re-sent to them only — no second call needed. Never tell the user to “sign in by scanning in WeChat” — that creates a separate account. When the user says “send it to my WeChat”, call this tool; when the user is on a computer and only wants the page just published in their own phone’s WeChat, the publish receipt’s push_qr_url code also works — one WeChat scan, no account linking.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Who receives it: self (default) = only you; members = the people in this workspace (the creator plus every member) | |
| force | No | true = 这一版你已经收到过、仍要再收一次(只能配 to="self",每人每天最多 5 次)。不传 = 已推过的不再重复发 | |
| proposal_id | Yes | 要推哪一份,`list_proposals` 里的 proposal_id | |
| include_subscribers | No | true = also send to this page’s subscribers (each person gets a version once, and at most one reminder a day). Omit = only people in the workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: discloses the shared deduplication ledger across automatic push/publishing/this tool, the force limit (5/day, self only), the 409 on missing live version, the QR binding flow, and that non-followers are reported but not errors. These are exactly the mutation traits (idempotentHint=false, openWorldHint=true) an agent needs to reason about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and default before the edge cases, and every clause carries operational detail. It is dense and long, with mild repetition of the dedup concept, but the length is largely justified by the behavioral quirks it must disclose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description describes the receipt's first line, the dedup message, the failure categories, and the bind_qr_image_url — so an agent knows exactly what comes back and how to relay it. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each param. The description adds meaning beyond it — e.g., that `to: "members"` excludes the caller when "also send to me" is off, and how `force` interacts with the dedup ledger — though it largely restates the schema's own wording for `to` and `include_subscribers`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — sending the page's CURRENT LIVE version as a WeChat template message — and immediately distinguishes itself from alternatives like automatic push and the publish receipt's push_qr_url. An agent can tell what this does versus set_publish_notify or publish_version without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call it ("when the user says send it to my WeChat"), when not to (automatic push already sent it — no need to call), and offers the alternative path (publish receipt's push_qr_url for computer users). Defaults, exclusions, and the force caveat are all laid out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_versionRead this version’s bodyARead-onlyIdempotentInspect
Read back the rendered body of a version: the same bytes a reader receives in the browser, which differ from the uploaded file only by the one platform line — not a rewritten copy. This is how an agent confirms for itself that what went live is what it made: no browser, no screenshot, no human login, and no need to hand the link to the user to look at for you. Reads the entry file by default; pass file with a package-relative path to read one text file (.html, .md, .txt, .json, .svg and the like). To see which files a version has, and which one is the entry, read get_version artifacts. Two things it cannot read: PDF and PPTX content, which is page images (use preview_url, or the page count from get_version), and versions still uploading or converting, which have no body yet. A version in another workspace is not_found. A long body is returned up to a limit, and the reply states the full character count and whether it was cut.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | 包内相对路径;不传就读入口文件(get_version 的 artifacts 里 role=main 那个) | |
| version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new traits: the exact byte delta from the uploaded file (the single script tag), no browser or login required, not_found for other workspaces, and truncation behavior that reports full character count. This is well beyond what structured fields convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what is returned and why it matters, then layers defaults, exclusions, and error/truncation behavior. A few clauses are wordy ('no browser, no screenshot, no human login, and no need to hand the link to the user'), but nearly every sentence carries operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description discloses the return shape (body bytes, truncation with full character count), error cases, and unsupported content types. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% (version_id has no description), and the description compensates: it explains the default entry-file behavior, the package-relative path semantics, and supported text extensions for `file`. It adds real meaning for both params but stops short of full syntax detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('read back the rendered body of a version') and immediately scopes it as the reader-visible bytes, which separates it from get_version (metadata/artifacts) and preview_version. An agent can tell exactly what this returns without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the motivating use case ('confirms for itself that what went live is what it made') and routes to alternatives: get_version artifacts to list files/entry, preview_url or get_version page count for PDF/PPTX. Explicit exclusions are stated (PDF/PPTX, still-uploading versions, cross-workspace not_found).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_memberRemove a memberADestructiveIdempotentInspect
Owner only. Remove someone from this workspace: they lose access to all of its pages, folders, links and feedback. Any token they created for this workspace stops working on its very next request — membership is rechecked per request, so this is also the way to cut someone off immediately, with no separate token revocation. The workspace creator cannot be removed, because that would leave the workspace without an owner. This cannot be undone: re-adding them needs add_member or invite_teammate, and their previous per-recipient links do not come back. Confirm which person with the user first — 26-character IDs all look alike, and list_members shows nicknames.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | 要移除谁,26 位 user_id(`list_members` 里那个) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, but the description goes well beyond them: it discloses per-request membership rechecking, that existing tokens die on their next request with no separate revocation needed, that removal is irreversible, and that prior per-recipient links are not restored. These are exactly the operational consequences an agent must know before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the critical constraint ('Owner only') and every sentence carries real information. It is on the long side, with the token-behavior clause and the creator-exclusion clause each doing work, though a couple of asides could be tightened without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent-in-spirit membership operation with no output schema, the description covers permissions, side effects on tokens and links, irreversibility, the edge case of the workspace owner, and the correct recovery path. Nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents the single user_id parameter including its 26-character constraint. The description adds meaning beyond the schema by warning that 26-character IDs look alike and pointing to list_members as the source that reveals nicknames — useful disambiguation for a single opaque ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove someone from this workspace') and immediately scopes the effect to pages, folders, links and feedback, which distinguishes it from siblings like set_member_role or revoke_api_token. An agent can tell what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions ('Owner only'), the intended use case (cutting someone off immediately since membership is rechecked per request), a hard exclusion (the workspace creator cannot be removed), and the correct sibling for reversal ('re-adding them needs add_member or invite_teammate'). It also prescribes confirming the target with the user before calling, which is unusual and valuable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_payment_qrRemove the business collection QR codeADestructiveIdempotentInspect
Removes the displayed QR-code image only; no funds are involved, because money never moves through LivePage. Take down this workspace's business collection QR code. Forms that carry an amount then show the total only, with no payment step; the form itself keeps collecting submissions. This cannot be undone, and you do not need it to swap codes — set_payment_qr replaces one directly. Removal is written to the audit log and notifies the workspace owner on WeChat. Payment marks already recorded on submitted rows are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, idempotentHint=true), the description discloses that removal is irreversible, that it writes to the audit log, notifies the workspace owner on WeChat, leaves payment marks unaffected, and changes form behavior to show totals without a payment step. This is rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and scope, then proceeds through consequences and alternatives. It is slightly long but every sentence adds distinct value, with only minor redundancy against the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a destructive, idempotent tool with zero parameters, the description covers side effects, irreversibility, notification behavior, form impact, and the correct alternative. Nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema carries no semantic burden and the description need not add parameter details. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Removes') and resource ('displayed QR-code image', 'business collection QR code'), and clearly distinguishes it from the sibling tool set_payment_qr by noting that one swaps codes directly. The clarification 'no funds are involved' adds precise scope beyond the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says the tool is not needed to swap codes and points to set_payment_qr as the alternative. It also provides the context of what happens to forms carrying an amount, giving clear guidance on when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_proposalRename pageAIdempotentInspect
Rename a page (keywords: rename, change title, retitle). The page name is what the web console list, list_proposals and folder page pages show. ★ The page name is separate from each version’s manifest title (the title readers see and the WeChat card title): publishing a new version never changes the page name. If the page title changed but lists still show the old name, rename it with this tool.
Changes only the name: links, versions, visibility and analytics stay the same, and no version’s content is modified. Every rename is audited.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The new name of the page | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the generic profile (not read-only, idempotent, non-destructive); the description adds real behavioral context beyond that — only the name changes, links/versions/visibility/analytics are untouched, no version content is modified, and every rename is audited. That is exactly the value-add expected on top of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the disambiguation rule, then side-effect guarantees. The keyword list ('keywords: rename, change title, retitle') is mildly redundant noise but the rest earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and the description covers side effects, non-effects, audit behavior, and the rename-vs-publish distinction, so an agent has enough to call it correctly. Only the undocumented proposal_id leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (proposal_id undocumented), so the description must compensate. It does so for 'title' by explaining that the page name is distinct from the manifest title, though it adds nothing for proposal_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Rename a page') and explicitly distinguishes the page name from a version's manifest title, which is the exact confusion an agent would otherwise have. This separates it from siblings like publish_version and set_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger condition: 'If the page title changed but lists still show the old name, rename it with this tool,' and clarifies that publishing a new version does not rename the page. It does not name alternative tools (e.g. move_proposal) or state exclusions, so it falls short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_workspaceRename workspaceAIdempotentInspect
Change this workspace’s display name (for example, replace the generated “xxx’s workspace” with a company or brand name). It appears in the web console, on invitation pages, on the workspace home page and on folder pages; up to 40 characters. ★ Display name only: the part of https://.hy.24haowan.com stays the same (change that with set_workspace_slug), and links, pages and members are unchanged. ★ The company name on WeChat share cards comes from set_workspace_profile’s company_name, not from this name. ⚠️ Workspace owner only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new workspace name: 1–40 characters, no angle brackets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely non-structured context: where the new name surfaces (web console, invitation pages, home and folder pages), the 40-character ceiling, that links/pages/members are untouched, and the owner-only permission requirement. It stops short of describing the response or failure modes beyond permission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the character limit, then progressively narrowing with the ★ and ⚠️ markers. All sentences carry real content, though the marker formatting is slightly heavier than needed for a single-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, full schema coverage, annotations present and no output schema, the description supplies everything an agent needs: what changes, what doesn't, size limit, visibility surfaces, and the authorization requirement. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds value by giving an example of the intended content ('replace the generated "xxx's workspace" with a company or brand name') and restating the 40-character limit that conflicts with the schema's maxLength of 128. It doesn't resolve that schema/description length discrepancy explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change this workspace's display name') and immediately scopes it to the display name only, explicitly excluding the URL slug and the WeChat company name. An agent can distinguish it from set_workspace_slug and set_workspace_profile without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the two alternative tools and the exact condition that selects each: set_workspace_slug for the <workspace> subdomain, set_workspace_profile's company_name for WeChat share cards. It also states the prerequisite ('Workspace owner only'), so the agent knows when the call will fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_feedbackReply to a piece of feedbackAInspect
Write a reply under one feedback thread. The reader sees it on the page they are already looking at — this is the same path and the same rendering as pressing “reply” in the web console. Get thread_id from list_feedback. Threads whose visibility is internal can also be replied to, but that thread was never visible to the reader, so only workspace members will see it. Until this existed an agent could read a customer's question and change its status but could not answer it, which to the customer looks like being ignored. Read-only members cannot call it.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The reply itself. Write it for the reader: it appears verbatim on the page they are looking at. | |
| thread_id | Yes | The id of the thread to reply to, from list_feedback. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the mutation/safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false), and the description adds real value beyond them: the reply renders verbatim on the reader's page, matches the web-console reply path, internal threads are visible only to workspace members, and a permission requirement exists. It stops short of covering failure modes or whether replies can later be edited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and scoping facts, but the historical sentence ('Until this existed an agent could read...') is rationale rather than invocation guidance and costs space. Four sentences, mostly earning their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema and annotations already carrying the safety profile, the description supplies everything an agent needs: where to get thread_id, permission limits, visibility semantics, and rendering behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented with descriptions. The description only reinforces that text 'appears verbatim on the page they are looking at' and repeats that thread_id comes from list_feedback; it adds no syntax, format, or constraint detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Write a reply under one feedback thread') and immediately distinguishes itself from the status-changing sibling by noting an agent could previously only 'change its status but could not answer it.' An agent can separate this from list_feedback, set_feedback_status, and send_feedback_to_livepage without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to list_feedback for the thread_id, states a clear exclusion ('Read-only members cannot call it'), and covers the edge case of internal-visibility threads. The conditions that select this tool versus alternatives are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_templateRequest a templateAInspect
Post a request on LivePage's public template request wall: kind=new asks for a new template, kind=improve suggests an improvement to an existing one (template_key is the key from list_examples). Use it when list_examples has nothing that fits what the user wants to make, or a template lacks something the user needs, and only after the user agrees to submit it. Write text in the user's own sense: what they want, who reads it and where; no phone numbers, emails, WeChat IDs or real client names. The wall is public and anonymous by default (it shows only the industry from the workspace profile); show_name=true shows the user's nickname. At most 5 requests per person per day; the text is moderated first. The template factory triages requests daily and replies publicly, and the user is notified when the status changes. Returns the request's public URL; show it to the user.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | new = a new template; improve = improve an existing template | |
| text | Yes | What the user wants (up to 500 characters) | |
| scene | No | Scene (optional): a scene code from the template gallery | |
| show_name | No | Pass true only if the user agrees to show their nickname on the wall; anonymous by default | |
| template_key | No | Required for improve: the key of the template to improve (from list_examples) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-idempotent write, and the description adds substantial context beyond that: the wall is public and anonymous by default, only industry is derived from the workspace profile, show_name=true reveals the nickname, requests are moderated, the factory triages daily and replies publicly, the user is notified on status change, and the return value is a public URL. That is genuinely rich disclosure. However, it never states the privacy/user-identity consequence of improving someone else's template or what happens to a request that fails moderation, so it is strong but not exhaustive. Because annotations carry the safety profile and the description adds real behavioral context, a 3 sits appropriately between 'adequate' and 'rich'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose first, then when-to-use, then content rules, then rate limits and outcome, then the return value. Every sentence carries information, though the middle section on text content and privacy is packed into one long clause-heavy sentence that is harder to skim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly states what is returned (the request's public URL) and to show it to the user, and it covers the consent, anonymity, and moderation flow an agent needs before calling. The gap is the internal inconsistency between the schema's maxLength of 1000 and its own note of 'up to 500 characters', which the description does not resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, and the description earns an increment by explaining that template_key must be the key from list_examples, that show_name should only be passed with user consent, and by giving content guidance for text (say what they want, who reads it and where). It stops short of addressing scene or the 1000-vs-500 character discrepancy, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Post a request on LivePage's public template request wall', and immediately disambiguates the two modes (kind=new vs kind=improve). It also ties the tool to its sibling, naming list_examples as the source of template_key and the trigger for using this tool, so an agent can distinguish it from sibling 'report_task' or 'send_feedback_to_livepage' without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use conditions are given: only when list_examples has nothing that fits, or a template lacks something needed, and only after the user agrees to submit. It also names the alternative (list_examples) and the gate (user consent), plus the per-day cap and moderation step that constrain invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_default_linkReplace sharing URLADestructiveInspect
Replace the URL for exactly one proposal_id or folder_id, for example after a leak. ALL old URLs stop working immediately, including URLs sent to intended viewers. Confirm this consequence before proceeding and provide the replacement URL afterward. Visibility and reading statistics are retained.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | No | Replace one folder’s URL. Supply exactly one of folder_id or proposal_id. | |
| proposal_id | No | Replace one page’s URL. Supply exactly one of proposal_id or folder_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by detailing exactly what is destroyed: ALL old URLs stop working immediately, including URLs already sent to intended viewers. It also specifies what is retained (visibility and reading statistics) and requires the agent to confirm the consequence and provide the replacement URL afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then immediately explains the destructive consequence and the retained data. Every sentence contributes useful information: scenario, warning, confirmation requirement, and retention behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for this tool despite no output schema. It covers the target scope, destructive impact, confirmation requirement, retained data, and the expected follow-up of providing the new URL. An agent has everything needed to invoke it responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents that exactly one of folder_id or proposal_id must be supplied. The description repeats the mutual exclusivity without adding format, syntax, or other semantic detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: replace the URL for exactly one proposal_id or folder_id. It clearly describes the operation and its target scope, including 'for example after a leak.' It does not explicitly name or contrast with close siblings such as revoke_share_link, so it falls just short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear usage scenario ('after a leak') and a strong prerequisite to confirm the consequence before proceeding. It does not explicitly state when to use this versus alternatives like revoke_share_link, but the context is sufficient to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_folderRestore deleted folderAInspect
Bring back a folder you deleted — only within 30 days. The folder link works again with the visibility it had before; pages moved out when it was deleted and not put in another folder since go back into it. Get folder_id from list_deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful side effects: the original link is reactivated with prior visibility, and pages moved out during deletion are returned if they were not moved elsewhere. The 30-day window is also stated. It does not cover failure behavior after the window or idempotency, but the core restoration semantics are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no filler. The temporal constraint and restoration effects are front-loaded, and the prerequisite is placed at the end for quick reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with no output schema, the description covers the essential what, when, side effects, and prerequisite. It could mention the non-idempotent behavior from the annotations, but otherwise it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so for the single required parameter by telling the agent to obtain folder_id from list_deleted, which is the key operational detail missing from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — bringing back a deleted folder — and makes clear it is the inverse of delete_folder and distinct from list_deleted. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear conditions for use: the folder must be restored within 30 days, and the folder_id comes from list_deleted. It does not explicitly enumerate when not to use this tool or name an alternative restore mechanism, but the context is strong enough for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_proposalRestore deleted pageAInspect
Bring back a page you deleted — only within 30 days of deletion; a page already erased cannot be restored, because by then the platform no longer holds it. After restoring, the link works again with the visibility it had before.
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the mutation profile (readOnly=false, destructive=false), so the description carries the interesting burden and does add unique context: the 30-day retention limit, the permanence of purge, and the post-restore behavior (link works again with prior visibility). It does not address what happens on a duplicate restore, though idempotentHint=false makes that a relevant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its deadline, with the trailing clause earning its place by explaining why purge is irreversible. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema mutation, the description covers the retention window, irreversibility, and the resulting state of the restored link. Only the duplicate-restore behavior (relevant given idempotentHint=false) and confirmation that proposal_id is the deleted page's ID are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter (proposal_id) is never mentioned in the description. The description talks only about 'a page' and never says the caller must supply the deleted proposal's identifier, so it fails to compensate for the documentation gap beyond the fairly self-explanatory parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Bring back') and resource ('a page you deleted'), plus the governing condition (within 30 days). An agent can immediately distinguish this from delete_proposal and the other proposal-management siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states both the use window ('only within 30 days of deletion') and the hard exclusion ('a page already erased cannot be restored'), which is exactly the when/when-not guidance an agent needs. It stops short of naming any alternative path, but there is no real substitute for a restore.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_api_tokenRevoke a credentialADestructiveIdempotentInspect
Make one credential stop working immediately: whoever (or whatever app) holds it is refused on its next call. Use it when a credential leaked or a third-party app should no longer have access. This cannot be undone — there is no restore tool, and a replacement has to be created on the web console with a new secret. Confirm which credential with the user first by reading its name and prefix from list_api_tokens. You can only revoke what you can see: your own credentials, or every credential in the workspace if you are the owner; anything else reports not found. You can revoke the credential you are calling with (and the one it was derived from) — during a leak that is exactly the right move, but this connection ends with it, so tell the user before doing it. Revoking stops that one credential only: pages, links, reading records and other credentials are untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes | 要撤的那一枚的 token_id(从 list_api_tokens 来 —— 别处给不出) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds substantially beyond them: irreversibility ('this cannot be undone'), the absence of a restore tool, the requirement to recreate via the web console with a new secret, the visible-scope rule (own credentials, or everything if workspace owner), and the self-revocation edge case where the calling connection dies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the effect and the 'when to use' trigger, and every sentence carries actionable content (irreversibility, scope, self-revocation, blast radius). It runs long and slightly restates the single-credential scope in the opening and closing sentences, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with no output schema, the description covers everything an agent needs: effect, triggers, irreversibility, permission scope, error behavior ('reports not found'), and the self-revocation hazard. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents token_id and its provenance. The description reinforces the provenance ('which credential ... by reading its name and prefix from list_api_tokens'), which adds minor confirmation value but nothing the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('make one credential stop working immediately') and clarifies the effect in operational terms ('refused on its next call'). It is clearly distinguishable from its revoke_* siblings (revoke_share_link, revoke_invite, revoke_versions) because it names the object as a credential/API token rather than a link or invite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers ('when a credential leaked or a third-party app should no longer have access') and an explicit prerequisite workflow: read the name and prefix from list_api_tokens and confirm with the user first. It also states the permission boundary and what to do instead when the credential is out of scope ('anything else reports not found').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_inviteRevoke an invitation linkADestructiveIdempotentInspect
Owner only. Make one unexpired invitation link stop working immediately — the only way to stop the bleeding when an invitation was forwarded somewhere it should not go. People who already joined through it are NOT removed; that is remove_member. Get invite_id from list_members, which lists every live invitation (invite_teammate also returns it once, at creation). Anyone opening the link afterwards is told it was revoked and to ask for a new one.
| Name | Required | Description | Default |
|---|---|---|---|
| invite_id | Yes | 要撤销哪一条,`list_members` 的 invites 里那个 invite_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=true, and openWorld=false, but the description adds meaningful context beyond them: the owner-only permission requirement, immediate effect, that it does NOT remove existing members, and post-revocation behavior for anyone opening the stale link. That is the full behavioral picture an agent needs for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the critical 'Owner only' constraint and appropriately sized for a destructive tool. The metaphorical 'stop the bleeding' phrase is slightly florid but does not obscure the meaning, and every sentence carries a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still covers everything needed: auth requirement, effect, exclusions, parameter sourcing, and downstream consequences. Nothing an agent must know before invoking this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by telling the agent where to obtain invite_id ('Get invite_id from list_members ... invite_teammate also returns it once, at creation'), which is more actionable than the schema's terse property note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Make one unexpired invitation link stop working immediately') and explicitly scopes it apart from sibling remove_member and revoke_share_link. An agent can distinguish it from the other revoke_* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the precondition ('Owner only'), the scenario that selects it ('forwarded somewhere it should not go'), and names the alternative for the closely-related case ('People who already joined through it are NOT removed; that is remove_member'). The word 'unexpired' also implicitly tells the agent not to bother with expired links.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_versionsRevoke old versions to free storageADestructiveIdempotentInspect
Use this when storage is full (quota_exceeded): revoke a page's older versions to free storage right away. The current version is untouched (what readers see and the link stay as they are); revoked versions are marked revoked in the version list, their version preview addresses stop working, and they cannot be switched back to. By default revokes every version before the current one; pass up_to_seq to revoke versions 1 through up_to_seq only. Versions still in review / conversion / upload and versions pinned by a dedicated link are skipped. An identical file counts toward storage only once across versions, so how much is freed depends on how much old-version content the current version does not reuse — the receipt says how much was freed and how much is now used. confirm must repeat the page's title exactly: check which versions go with list_versions first, and confirm with the user.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | 原样传这个页面的标题 —— 撤回的旧版本不能再切回 | |
| up_to_seq | No | 撤回第 1 版到这一版(含);必须小于当前版本号。不传 = 当前版之前的全部 | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/idempotentHint annotations: it discloses that the current version and link are untouched, that revoked versions cannot be switched back to, that preview addresses stop working, which versions are skipped (in-review/converting/uploading, dedicated-link-pinned), and the storage-dedup nuance behind how much is actually freed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the trigger and the reassurance about the current version before the mechanics, and each sentence carries real information. It is dense and long, but there is little filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema mutation tool, it covers the trigger, scope/default, exceptions, irreversibility, side effects on addresses, and even what the receipt reports. An agent has everything needed to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; the description compensates by explaining that confirm must be the exact page title (a non-obvious string, clarified in the otherwise-Chinese schema), that omitting up_to_seq revokes everything before the current version, and that up_to_seq is inclusive up to version 1. proposal_id remains unexplained in both places, keeping this short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (revoke a page's older versions) plus the motivating condition (storage full / quota_exceeded). It is clearly distinguishable from siblings such as list_versions, preview_version, and delete_proposal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use this when storage is full (quota_exceeded)') and prerequisites ('check which versions go with list_versions first, and confirm with the user'). It does not contrast against an alternative for reclaiming storage, e.g. deleting a whole proposal, so the routing picture is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedback_to_livepageSend the user’s feedback to the LivePage teamAInspect
Send the user’s opinion, problem or feature wish about LivePage itself (this platform) to the LivePage team — not a comment on a page (that is add_external_feedback). ★ First write what you would send as a short draft and show it to the user; call this only after they explicitly agree, and pass user_confirmed=true. If they have not agreed, or were only venting without asking to send feedback, do not call it. Write text in the user’s own sense; do not invent opinions, and never include page content, reader information, tokens or passwords. The platform attaches which agent is calling, the related pages / version (about) and the last tool that failed on this connection with its error code, so there is no need to describe the environment in text. When a display problem is hard to describe: pass version_id (from list_versions) for the version where it shows, so the team can open that exact version; attachment adds one screenshot (png / jpeg / webp / gif, ≤5 MB) — declare only mime and size, then PUT the image unchanged to attachment_upload.put_url from the result (Content-Type as in headers, valid for 15 minutes); without a terminal you cannot upload it, so do not attach. Pass contact_ok=true only when the user explicitly says the team may contact them or wants to talk it through: the LivePage team will reach them via the phone / email already bound to their account (do not put contact details in text); if they did not say so, omit it and do not ask just to fill it. Returns id and status; use list_my_feedback later for status and our reply. If the user wants a person rather than to leave a suggestion, do not use this — give them the support link from the server instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text the user agreed to send (up to 2000 characters). | |
| about | No | The proposal_id or version_id of the related page (optional). | |
| source | No | hint = the user is sending this after seeing the “you can send feedback” line (feedback_hint) at the end of a publish result; omit otherwise. | |
| category | No | bug = something broke or is hard to use; idea = a feature they want; other = anything else (default). | |
| attachment | No | Attach one screenshot (optional): the result carries attachment_upload; PUT the image there as it says. | |
| contact_ok | No | Pass true only if the user explicitly agreed that the LivePage team may contact them (via the phone / email already bound to their account); omit otherwise. | |
| version_id | No | The version_id of the version where the problem shows (optional, from list_versions); the team will open that exact version. | |
| user_confirmed | Yes | The user has seen the draft and agreed to send it. Pass true only when they really did. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false; the description supplies far more: the platform auto-attaches the calling agent, related pages/version, and the last failing tool with its error code, so the agent knows what not to duplicate. It also documents the two-step attachment flow (declare mime/size, then PUT to attachment_upload.put_url with a 15-minute validity and a no-terminal fallback), and states the return is id and status with list_my_feedback for follow-up.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the ★ consent gate before any logistics, and each clause carries distinct operational content (consent, content limits, auto-attached context, attachment upload, contact opt-in, return value). It is dense and reads as one long paragraph, so a few clauses (e.g. the mime list) could be compressed, but there is little pure waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with a nested attachment object and no output schema, the description covers the consent contract, what the server attaches automatically, what must never be included (page content, reader info, tokens, passwords), the attachment mechanics, and what the call returns. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the description goes beyond it: it explains when to pass version_id (from list_versions, for hard-to-describe display problems), the exact condition for contact_ok (only if the user explicitly permits contact, and don't ask just to fill it), the source="hint" origin from feedback_hint, and the consent semantics of user_confirmed. The attachment sub-object handling is described operationally rather than by field, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (send the user's feedback about LivePage itself to the LivePage team) and explicitly delimits the scope against the nearest sibling: "not a comment on a page (that is add_external_feedback)". An agent can route between this and add_external_feedback without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition (show a draft, call only after explicit agreement with user_confirmed=true) and an explicit negative case ("If they have not agreed, or were only venting without asking to send feedback, do not call it"). It also routes two alternatives: add_external_feedback for page comments and the server-instruction support link for users who want a person.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_phone_codeSend a phone verification codeAInspect
Send a 6-digit SMS code to the user's own phone number to complete real-name verification (a verified phone is one of the platform's identity anchors; publishing is blocked until this step is done). Feed the code back with verify_phone_code. ONLY call this when the user has explicitly asked to verify their phone number. NEVER ask the user for a verification code on your own initiative — the user asking to verify is what starts this, not you needing it for a flow. This binds the CALLER'S OWN number, not somebody else's and not a workspace setting; do not fill in a number you believe to be theirs. The code is valid for 5 minutes with at most 5 attempts. Rate limits are hard: one SMS per number per 60 seconds, 5 per number per day and 10 per user per day — when limited, wait rather than retrying. Mainland numbers are 11 digits; international numbers need a country code (for example +852…) and are restricted to users signed in with Google. One phone number belongs to one account: a number already bound elsewhere is refused at the verify step and the platform never merges accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| phone | Yes | 用户自己的手机号:大陆 11 位,或带国家区号的国际号(如 +85261234567) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover mutation/safety hints (readOnly=false, idempotent=false). The description adds the critical traits annotations cannot express: 5-minute code validity, 5-attempt limit, hard rate limits (1/60s, 5/day per number, 10/day per user), binding is permanent per account, and numbers bound elsewhere are refused. Exceptional behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then constraints and warnings in a logical sequence. Dense but every sentence earns its place given the number of behavioral caveats. Slightly long, but the density is justified for a tool with real foot-guns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the full lifecycle: what's sent, how to complete verification, error conditions (already-bound number), retry guidance (wait when limited), and identity model. An agent has everything needed to call it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully described in the schema (including mainland vs. international format). The description adds context about which number to supply (caller's own, not someone else's) and international country-code requirements, but this overlaps with the schema. Baseline 3 for high coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (send a 6-digit SMS code to the user's own phone) and names its scope: real-name verification binding the caller's own number. The pairing with verify_phone_code is made explicit, distinguishing it from any other sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (user has explicitly asked to verify) and when-not-to-use (never on your own initiative, don't fill in someone else's number), plus the follow-up tool. This is a textbook routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_dataCreate, replace or delete a data tableADestructiveInspect
Attach a data table to a page, replace it entirely, delete it, or open/close reader write-back. Tables are independent of versions: editing data never republishes the page and pushing a new version never changes tables. Call get_data first and pass the revision back unchanged: 0 creates, the current value updates; a mismatch is rejected (409) and requires re-reading, never blind overwrites. Provide rows (array of objects, optional columns for order) or csv (text, first line headers), not both; delete=true removes the table and its appended rows. append_open=true lets viewers append one row from the page with a plain form or POST ./_data/ (or the optional SDK space.data.append) (sign-ups, check-ins, votes, feedback): off by default, per table; passing append_open alone only flips the switch. Appended rows are rate-limited, moderated before other viewers see them, and readable only through list_data_rows; rows the author or another workspace member submits while signed in on the live page carry by=member. members_only=true accepts rows from workspace members only (visitors get 403) and, like append_open, can be passed on its own. In the page read (fetch('./_data/.json') / space.data.get) every viewer row carries _row_id, _at (submission time) and _status (approved / held); rows the current viewer submitted carry _mine: true and submitters can read their own held rows (never other people's); when the viewer is a member, member rows add _by (nickname). A submitter can withdraw their own row within 24 hours with DELETE ./_data//<row_id>. Columns the table does not have are accepted but not stored, and the receipt carries warnings (unknown_columns). Table names start with a lowercase letter and contain only letters, digits and underscores. The receipt states the per-table, per-page and workspace limits with current usage.
| Name | Required | Description | Default |
|---|---|---|---|
| csv | No | CSV text, first line is the header; either this or rows | |
| rows | No | Array of objects, one per row, keys are column names; either this or csv | |
| table | Yes | Table name, e.g. items or sales_2026 | |
| delete | No | true = delete this table (no rows or csv needed) | |
| columns | No | Optional: column order and selection (rows only) | |
| identity | No | Reader WeChat profile: off = anonymous (default) · wechat = only readers who tapped “Join with WeChat”, each row carries _by (nickname, avatar) · wechat_optional = rows carry the profile when the reader authorised, anonymous otherwise. The page reads the current reader with space.me() and asks for authorisation with space.me.request(). Passing it alone only flips the switch | |
| revision | Yes | 0 to create; the current value from get_data to replace or delete | |
| vote_key | No | Which column per_reader=vote counts one vote per reader per value on (must be a table column, e.g. item). Can be passed with per_reader or alone, with `revision`. | |
| per_reader | No | One row per identity: off (default) allows repeats; one rejects repeats with 409; latest shows only the latest row per person on the page and keeps history in list_data_rows; vote allows one vote per reader per value (also pass vote_key=<column>; a repeat vote for the same value gets 409 reader_already_voted; withdrawing your own row frees it, with no 24-hour limit). Requires identity=wechat or wechat_optional. Anonymous rows are unrestricted; members use their user id. Withdrawal does not free a one slot. Can be set alone with `revision`. | |
| append_open | No | 读者写回开关:true 开、false 关。单独传 = 只翻开关(底表不动,仍要带 revision) | |
| proposal_id | Yes | ||
| members_only | No | Accept write-back from workspace members only: when true, visitor submissions get 403. Passed alone = only flips the switch (`revision` still required) | |
| notify_emails | No | 新提交邮件通知:最多 3 个收件邮箱,读者每交一行(过审)发一封邮件给它们,附全部字段;新地址先收确认信、点确认后才发;[] = 不再通知。可单独传 | |
| identity_visibility | No | Who sees participants' nicknames and avatars: all = every reader (default) · author = only the author and workspace members. Passing it alone only flips the switch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructive/not-idempotent; the description adds far more: 409 rejection on stale revision, moderation and rate limiting of appended rows, 403 for visitors under members_only, a 24-hour self-withdrawal window, and unknown-column warnings in the receipt. These are consequences an agent cannot infer from the annotation flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The actions are front-loaded correctly, but the body is a single dense run-on paragraph stacking parentheticals, HTTP verbs, SDK calls and reader-view field names. Sizeable chunks describe downstream page-read behavior (_row_id, _at, _status, _mine) that belongs to list_data_rows or the page runtime rather than to this call, diluting the operative instructions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter, destructive, no-output-schema tool, the description covers the risky paths (revision conflict, delete, limits reported in the receipt) and explains the receipt since no output schema exists. It stops short of introducing five of the parameters that only appear in the schema, but with 93% schema coverage that gap is modest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 93%, so the schema already carries most parameter meaning; the description nonetheless adds real semantics for the highest-risk ones — revision 0-vs-current behavior, rows/csv exclusivity, columns-as-order, and default-off append_open. It says nothing about notify_emails, identity, per_reader, vote_key or identity_visibility, leaving those entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb set and resource: "Attach a data table to a page, replace it entirely, delete it, or open/close reader write-back." It also implicitly separates this write tool from the read siblings by telling the agent to call get_data first and noting appended rows are "readable only through list_data_rows".
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sequencing and conflict policy: "Call get_data first and pass the `revision` back unchanged: 0 creates, the current value updates; a mismatch is rejected (409) and requires re-reading, never blind overwrites." It also names the mutually exclusive input modes (rows vs csv) and states that a lone `append_open`/`members_only` only flips a switch rather than rewriting the table.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_data_row_statusDecide on a viewer-appended rowADestructiveInspect
Decide what happens to one row a viewer appended: approve makes it visible to viewers, hold takes it back so only you can see it, delete removes it for good. Rows flagged by moderation land in held, where only you can see them and the page does not show them to viewers — until now there was nothing you could do about such a row. approve and hold are reversible, so a misjudgement can be corrected; delete is not — the row disappears from the page, exports and counts, and only an audit entry records that a row was deleted, never its contents. Get row_id from list_data_rows. Approving also marks that row's moderation hit as a false positive, recorded separately as a publisher release so it is not mixed with operator labelling. Every decision bumps the page's data_revision, because the set of rows the page can show has changed.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | approve = 放行给读者看 · hold = 收回只有你看 · delete = 真删,不可撤销 | |
| row_id | Yes | 用 list_data_rows 拿到的 row_id | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, idempotentHint=false), the description discloses that approve/hold are reversible while delete is not, that delete strips the row from the page, exports and counts with only a content-free audit entry, that approving records a false-positive publisher release, and that every decision bumps data_revision. This is exactly the side-effect and reversibility detail an agent needs before a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph but front-loads the core decision semantics before side effects and provenance. A few clauses are padded, notably the 'until now there was nothing you could do about such a row' framing, which adds length without actionable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema but with safety annotations, the description covers reversibility, side effects, audit behavior and row_id provenance. The one hole is proposal_id, whose origin is documented nowhere an agent can see.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%. The description elaborates the action enum well beyond the schema's short enum strings (per-action reversibility and visibility semantics) and tells where row_id comes from. proposal_id is left unexplained by both schema and description, which is the remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource: rendering a decision on a single viewer-appended row via three named actions (approve/hold/delete), each defined in a clause. It implicitly scopes itself to viewer-appended rows, distinguishing it from sibling write tools like set_data and from the read-side list_data_rows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent explicitly ('Get row_id from list_data_rows') and gives the effect of each action, which effectively tells the caller which action to choose. It stops short of stating when not to use this tool (e.g., non-viewer rows handled elsewhere) or naming a preferred alternative for those cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_domain_regionSwitch your domain’s acceleration region (move to mainland China once filed)AIdempotentInspect
Change the region a custom domain is served from on the acceleration network. A domain without an ICP filing is automatically served from overseas nodes (worldwide excluding mainland China) when it goes live, so it opens in mainland China but more slowly; once the user has filed it, use this to set region to domestic (mainland China) or global (worldwide). It takes effect at once and takes a few minutes to reach every node; the domain keeps opening meanwhile. Switching to domestic / global while no filing can be found yet is refused with the reason (a fresh filing can take a while to sync from the MIIT records); region=overseas needs no filing. Workspace owner only. Confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | domestic = mainland China acceleration (default, needs an ICP filing); global = worldwide (needs a filing); overseas = worldwide excluding mainland China (no filing needed) | |
| hostname | No | The domain itself, such as go.acme.com; pass this or domain_id | |
| domain_id | No | The domain_id returned by bind_domain / list_domains; pass this or hostname |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations (readOnly=false, idempotent=true, destructive=false): it discloses immediate effect with a few-minute propagation window, that the domain keeps serving during propagation, that unfiled domestic/global calls are refused with a reason (and why syncing lags), the permission requirement (workspace owner), and a confirm-with-user norm.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Opening sentence states the action, then the filing/propagation constraints follow in a logical order. The second and third sentences are dense run-ons with semicolons and parentheticals that slow parsing, though no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation with no output schema, it covers propagation timing, failure mode, permissions, and confirmation intent — enough to call correctly. It does not mention what the tool returns or how a refusal is surfaced to the caller.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the enum description already explains domestic/global/overseas including filing requirements; the description largely restates this. It adds the practical consequence ('region=overseas needs no filing') but says nothing extra about hostname vs domain_id selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Change the region a custom domain is served from on the acceleration network.' This clearly separates it from bind_domain/unbind_domain/verify_domain and from the routing-related set_domain_route without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use and when-not conditions: a domain without an ICP filing is auto-served overseas, and this tool is for after filing to set domestic or global; overseas needs no filing; workspace owner only; confirm with the user first. It does not name sibling tools as alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_domain_routeSet paths on your domain (which name opens which page)AIdempotentInspect
Choose which page or folder each name opens on the user’s own domain: path="/" is the home page, path="/autumn-plan" is https://go.acme.com/autumn-plan. Pass proposal_id or folder_id; remove=true deletes the path. A page always shows its current version (no need to set it again after a new version). The domain does not have to be live yet: set paths first and they open the moment it goes live. Whether readers can see the page is decided by that page’s own visibility (set_visibility). Names are 1–64 lowercase letters, digits and hyphens.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path: / or / plus a name, such as /autumn-plan | |
| remove | No | true = delete this path (do not pass proposal_id / folder_id) | |
| hostname | No | The domain itself, such as go.acme.com; pass this or domain_id | |
| domain_id | No | The domain_id returned by bind_domain / list_domains; pass this or hostname | |
| folder_id | No | Open this folder (pass this or proposal_id) | |
| proposal_id | No | Open this page (pass this or folder_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered; the description still earns credit by clarifying that remove=true performs the deletion (and which arguments to omit then), that pages track their current version automatically (no re-set after publish), and that setting paths before go-live is safe. It adds real behavioral context rather than restating annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and a worked path example, then behavior, prerequisites and naming rules. Four dense sentences with essentially no filler, though the version-inheritance sentence could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, no-output-schema mutation tool this covers operation, deletion, propagation timing and naming constraints, and points to set_visibility for the adjacent concern. It stops short of stating auth/permission requirements or what happens on an invalid or conflicting path, which are minor residual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics: path naming rules (1–64 lowercase letters, digits, hyphens), path format examples, the hostname/domain_id and proposal_id/folder_id mutual exclusivity, and the rule that remove=true must not be combined with proposal_id/folder_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (choose/set which page opens) and resource (paths on the user's own domain), with concrete examples ("/" = home page, "/autumn-plan" = https://go.acme.com/autumn-plan). The scope is distinguishable from name-similar siblings such as bind_domain and set_visibility, and the latter is explicitly deferred to for reader visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the core usage contract: pass proposal_id or folder_id to open a page or folder, remove=true to delete a path, and that the domain need not be live yet. It routes visibility decisions to set_visibility. What it does not state is the prerequisite relationship to bind_domain/list_domains beyond a schema mention, or when to prefer hostname over domain_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_downloadsConfigure downloadsAInspect
Replace an approved version’s download settings without reuploading its content. Read get_downloads first for its revision and candidates. Select source (or null) and ordered attachments. Each item needs a label; description and downloadName are optional; showFilename defaults to false. Keep the filename extension. enabled=false disables all download URLs while preserving the list. Changes to a live version apply immediately. On conflict, read and review again; do not overwrite blindly. A download button drawn in your own page body is marked data-space="download:" and only works for files in this list.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | ||
| revision | Yes | ||
| version_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give a generic non-read, non-destructive, non-idempotent profile; the description adds real behavior: changes to a live version apply immediately, enabled=false disables URLs while preserving the list, and stale revisions must be re-read rather than blindly overwritten. It also explains the data-space='download:...' rendering contract, which no annotation covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and prerequisite are front-loaded, and most sentences carry distinct information (defaults, conflict handling, immediate effect). It runs long and the trailing data-space sentence is somewhat tangential, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested config object and no output schema, the description covers inputs, defaults, and failure handling well. It omits what the call returns (e.g., a new revision) and any permission/auth expectations, which are the remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage the description carries the load and does so well: source-or-null, ordered attachments, required label vs optional description/downloadName, showFilename defaulting false, extension preservation, and enabled semantics are all explained. It leaves the `schema` const and `version_id` unmentioned, so not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource plus scope: 'Replace an approved version's download settings without reuploading its content.' That distinguishes it from read/set siblings by making clear it mutates config rather than content or reads state, and it explicitly routes reads to get_downloads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the prerequisite read step ('Read get_downloads first for its revision and candidates') and prescribes conflict behavior ('read and review again; do not overwrite blindly'). It stops short of explicitly contrasting with preview_downloads or stating when not to call it, so it falls just short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_feedback_statusUpdate feedback statusAInspect
Mark a feedback thread open, confirmed, disputed or resolved. Changes its workflow status; the original comments remain.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| thread_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false. The description adds behavior beyond them by stating that only workflow status changes and that original comments remain, clarifying the mutation's scope. Permissions and downstream effects are not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource. No wasted words; the status enumeration is compact and directly useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter status mutation with annotations covering safety and no output schema, the description is adequate: it explains what changes and what persists. It omits auth requirements and how to obtain a thread_id, but these are minor for this operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names the target resource for thread_id and enumerates the valid status values, but the enum already exists in the schema and thread_id's format or source is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'Mark a feedback thread' with enumerated target states. It distinguishes itself from sibling feedback tools like reply_feedback and list_feedback by its status-setting action, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance, alternatives, or prerequisites are given. Usage is only implied by the action itself, leaving the agent to infer when to choose this over reply_feedback or list_feedback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_folderUpdate folderAInspect
Change a folder’s name, introduction or cover. A cover must be a page inside this folder that is shared through the folder link. Set cover_proposal_id to null to restore the generated index. The cover uses the page’s live version. Folder page layout: layout {pinned, sections:[{title, items}], rest, hidden} with items p: or l: (add links with set_home links_add); or pass only sections / rest, or pin / unpin / hide / show; layout=null restores newest-first. ★ hide is not set_internal: a hidden page is just not listed on the folder page — the folder link still opens it and its own link is unchanged; internal means the folder link does not include it at all.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | ||
| hide | No | 在合集目录里隐藏(不改它的可见性,合集链接照样能进) | |
| name | No | ||
| rest | No | auto = 没排进去的页面按时间接在最后;none = 只出排进去的 | |
| show | No | ||
| intro | No | ||
| unpin | No | ||
| layout | No | 合集门户的整份排版(替换);null = 回到「最新在前」 | |
| sections | No | ||
| folder_id | Yes | ||
| cover_proposal_id | No | Use null to remove the cover and restore the generated folder page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a non-read-only, non-destructive write. The description adds substantial non-obvious behavior: cover pages must be shared through the folder link, covers use the live page version, layout=null restores newest-first, and hide does not remove link access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and most sentences carry useful semantic detail, especially the hide warning. The layout paragraph is dense and semicolon-heavy, but it avoids obvious repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with no output schema, the description covers the important invocation semantics and non-obvious effects. It does not explain return behavior or permission requirements, though annotations reduce the safety gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is only 36% across 11 parameters, the description compensates well: it explains name, introduction, cover, cover_proposal_id null behavior, layout shape, sections/rest, pin/unpin/hide/show, and the p:/l: item syntax. This is materially more useful than the sparse schema descriptions alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: change a folder's name, introduction, cover, or page layout. It also distinguishes the hide operation from set_internal and points to set_home for adding links, so an agent can separate it from nearby setters without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage rules for cover changes, null restoration, layout replacement, and the hide versus set_internal distinction. It does not provide a full when-to-use/when-not-to-use statement, but the key alternatives and constraints are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_formDefine a form / order blockAIdempotentInspect
Attach a form viewers can fill in (sign-ups, orders, bookings, leads) to a page: you only define the fields; the platform renders the form in the reading page (mobile-friendly, validated), and each submission lands as a row in this data table, readable with list_data_rows. No form code needed (a plain posting to ./_data/ works too). Idempotent: creates the table when absent, otherwise replaces the whole field definition (rows already collected are kept). fields: at most 20 items of { key, label, type, required?, options?, min?, max?, visibility?, fence? … }; nine types: text (single line), textarea, select (options), multiselect (options, stored joined with 、), number (min / max), phone (11-digit mobile), email, image (check-in photos / collected material; max = how many images, 1–9, default 1; visibility = author — only you and the submitter see the images (default) — or all — shown with the row to every reader, for a check-in wall; viewers pick photos on their phone, the platform compresses them, strips location metadata and runs image moderation, and a row with a flagged image is visible only to you; list_data_rows gives each image a one-hour URL under images), location (location check-in; at most one per table; fence = { lat, lng, radius_m, name? } sets the check-in point, coordinates in GCJ-02 (as picked on Tencent / Amap maps), radius 20–5000 m; without fence there is no range limit and the field just records where viewers checked in (they pick a nearby place and the field stores its name); max_accuracy_m is the accuracy requirement, default 100 m (1000 without fence); out_of_range = reject — out-of-range check-ins are refused (default) — or hold — kept for you to confirm; window = { start, end } is the check-in time window; require_identity defaults to true, meaning viewers check in with their WeChat identity and the table first needs set_data identity=wechat. The page calls space.location({ table }) to get a ticket, puts it in this field and then appends; the row stores the distance in metres plus _loc_in_range / _loc_accuracy_m / _loc_source, never the coordinates; if you really need coordinates pass keep_coords=true — they then appear only to you under location in list_data_rows and are cleared automatically after 30 days). amount is optional and only displays a price: { unit_price_cents, qty_field? (which number field holds the quantity) }; the platform computes the total as unit price × quantity and writes it into each row as _amount_cents — no money is collected (payment guidance and real payment are separate tools). Each row also carries _form_rev (the table version at submission time). Viewer write-back is open by default (append_open=true); pass false to close it. Submissions remain rate-limited and text is moderated first: approved rows appear for viewers on refresh, flagged rows are visible only to you in list_data_rows. Preview and presenter sessions never submit; the author and other workspace members can submit on the live page while signed in, and their rows record which member (by) without counting as a visitor. With members_only=true only members can submit and visitors do not see the form. Page read-back, withdrawal and unknown-column warnings work as described under set_data (_row_id / _at / _status / _mine / _by). Optional notify_emails sends an email for every new approved submission (up to 3 addresses; each new address first gets a confirmation email and only receives notifications after confirming; with an email field, replying reaches the submitter). Share the page after defining the form; the page does not need republishing.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | 表名,例如 signup、orders;提交的行落在这张表 | |
| title | No | 表单标题,也是查看页里那枚按钮的字,例如「报名」「下单」;缺省「填写」 | |
| amount | No | 显示金额;不传 = 不显示金额 | |
| fields | Yes | 字段定义,按顺序渲染 | |
| revision | No | 可选:get_data 返回的当前 revision,传了就防并发(不一致 409);不传按当前修订写 | |
| append_open | No | 读者写回开关,缺省 true;false = 表单不显示、提交被拒 | |
| proposal_id | Yes | ||
| members_only | No | Accept submissions from workspace members only (visitors do not see the form and get 403); omitted = keep the current value, false for a new table | |
| notify_emails | No | 新提交邮件通知:最多 3 个收件邮箱,读者每交一行(过审)发一封邮件给它们,附全部字段;新地址先收确认信、点确认后才发;[] = 不再通知。可单独传 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds extensive behavior beyond the annotations: table creation/replacement semantics, rate limiting, moderation, preview/presenter restrictions, member submission recording, image processing, location rules, and notification confirmation flow. These details help the agent predict side effects even though idempotentHint and destructiveHint are already present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the description is a very long dense paragraph with some repetition, such as flagged-row visibility and moderation behavior appearing more than once. The detail is mostly relevant for this complex tool, but the structure could be easier to scan with shorter grouping.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex nested field schema, nine parameters, and no output schema, the description covers the essential behavior an agent needs: form definition, field types, identity requirements, submission moderation, notifications, and how to read submissions via list_data_rows. It points to set_data for shared read-back/withdrawal semantics, which fills the remaining context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high at 89%, and the description still adds substantial meaning for fields, amount, append_open, members_only, notify_emails, and the image/location field types. It does not explain proposal_id or revision in prose, though revision is described in the schema and proposal_id appears to be a generic required identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it defines a form/order block with fields attached to a page, and submissions land as rows. It explicitly names related tools such as list_data_rows and set_data, so an agent can distinguish its role from plain data-table operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: define the form, share the page, and no republishing is needed; it also notes that payment and payment guidance are separate tools. It lacks an explicit comparison such as 'use set_data instead when you only need a table without a form', but the surrounding guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_homeArrange the workspace home pageAInspect
Turn the workspace home page https://.hy.24haowan.com/ into one link that holds everything (for a social-media bio, a WeChat signature or a business-card QR code): 1–3 pinned large cards, section headings, external link cards (website, shop, social accounts…) and contact buttons (add-on-WeChat QR code, phone, email, or one item). Call with no arguments to read the current state (layout, links, contact buttons, clicks in the last 7 days). Items are refs: p:, f:, l: (add links first with links_add; with section they go straight into that section).
layout replaces the whole layout {pinned, sections:[{title, items}], rest:"auto"|"none", hidden}; null restores the automatic layout. Or pass only sections / rest, or use pin / unpin / hide / show.
rest=auto: public pages not placed anywhere follow, newest first; none: only pinned and sectioned items show.
hide: do not list a page / folder on the home page without changing its own visibility (its link still works); show undoes it. ★ The home page is a showcase, not a key: it only shows content that is itself public or passcode-protected; private items placed in the layout stay invisible to readers (the result names them). The home page is members-only by default; to share it, ask the user and then use set_visibility(home: true). ★ External links accept https / tel / mailto only; readers first see a “leaving LivePage” page, which also counts the click. ★ Free: pinning, sections, external links, contact buttons. Premium (workspace owner): theme colour and banner image. Editors and owners can call it.
| Name | Required | Description | Default |
|---|---|---|---|
| bio | No | 头像下的简介,≤80 字,最多 3 行;null = 去掉 | |
| pin | No | 置顶(最多 3 项,只能是页面或合集) | |
| hide | No | 在主页上隐藏(不改它自己的可见性) | |
| rest | No | ||
| show | No | 取消隐藏 | |
| theme | No | 配色(高级);null = 品牌色 | |
| unpin | No | ||
| layout | No | 整份版式(替换);null = 回到自动排法 | |
| contact | No | ||
| sections | No | 只换分组(标题 ≤16 字,每组 ≤50 项) | |
| links_add | No | ||
| links_remove | No | 要删的外链 id(或 l:<id>) | |
| banner_base64 | No | 横幅图(高级,PNG / JPEG 的 base64);空串 = 去掉 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare destructiveHint=false, but the description explicitly says layout replaces the whole layout and links_remove deletes external links; empty banner/contact values can also remove existing content. This directly contradicts the non-destructive annotation, so per the rules the behavioral transparency score is 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the purpose and then uses compact bullets for layout, visibility, links, and premium limits. It is long, but the length is largely justified by the 13-parameter surface; some dense repetition around layout behavior keeps it from being maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 13-parameter mutation tool with no output schema, it covers the important context: read mode, permissions, free vs premium behavior, private-item invisibility, external-link restrictions, and the interaction with set_visibility. An agent has enough information to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 13 parameters and only 69% schema description coverage, the description adds substantial meaning: item refs use p:/f:/l:, layout replaces the whole layout while null restores automatic, rest=auto/none controls unplaced public pages, hide/show do not change page visibility, and contact buttons have 1-3 items with the first as primary. It still leaves some details, such as the bio and theme enum, mostly to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: it turns the workspace home page into a single shareable link with pinned cards, sections, links, and contact buttons. It also distinguishes related actions such as links_add and set_visibility, so the agent can tell what this tool owns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call with no arguments to read current state, to add links first with links_add, and to use set_visibility(home: true) when sharing the home page. It also states the editor/owner permission requirement and explains the showcase visibility constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_indexableSet search indexingAInspect
Allow or disallow indexing of public pages. Default false. Requires public visibility and publishing eligibility. Explicitly confirm before enabling: cached search results and crawler copies may persist after disabling. Never expose confidential client content. Making the link private or passcode-protected disables indexing.
| Name | Required | Description | Default |
|---|---|---|---|
| indexable | Yes | ||
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the mutation profile (readOnly=false, idempotent=false, destructive=false) but nothing about side effects. The description adds substantive context beyond that: default value is false, cached results and crawler copies may persist after disabling (a non-reversible effect), and the confidential-content warning. Strong disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and default in the first two sentences, then layers prerequisites and warnings. Dense but each sentence carries information. Slightly compressed into a run-on list of caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists and this is a mutation, so the description correctly covers preconditions, side effects, and irreversibility. It is nearly complete except for the unexplained proposal_id parameter, which leaves a gap given the 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is meaningfully explained. The description implies the boolean default ('Default false') but never clarifies what 'indexable' toggles versus what 'proposal_id' identifies. With no schema help, the description fails to compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action on a specific resource: allowing/disallowing search-engine indexing of public pages. This is distinguishable from visibility-style siblings by the word 'indexing', though it never names the sibling it should be contrasted with (e.g., set_visibility). Clear purpose, no explicit sibling routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides real preconditions: 'Requires public visibility and publishing eligibility' and 'Making the link private or passcode-protected disables indexing.' It also instructs confirmation before enabling. It stops short of naming alternative tools for related settings, so it earns a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_internalShare through the folder link or notBInspect
Choose whether a page is shared through its folder link. A page that is not shared through the folder link is absent from the folder page and cannot be opened through the folder link. Its own link retains its separate visibility. This does not make a public link private.
| Name | Required | Description | Default |
|---|---|---|---|
| internal | Yes | ||
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description discloses real behavioral consequences: an unshared page vanishes from the folder page, cannot be opened via the folder link, and retains its own separate link visibility. It does not mention permissions/auth requirements or reversibility explicitly, but the effect disclosure is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action before the consequences. Each sentence adds a distinct fact (effect on folder page, effect on folder link, effect on own link, effect on public link), so there is little waste, though the last two clauses overlap thematically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter boolean toggle with no output schema, the description covers the semantics of the state well but is incomplete where it matters most: the boolean polarity and the identity of proposal_id. No annotation or output schema compensates for that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden, and it does not name either parameter. The boolean's polarity is left ambiguous: it explains the 'not shared through folder link' state but never maps that to internal=true/false, which is the single most important thing an agent needs. proposal_id is entirely unmentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb-concept ('Choose whether') and a specific resource: whether a page is shared through its folder link. It clearly describes the state being toggled, but never names itself as distinct from close siblings like set_visibility, set_visitor_internal, or set_folder, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the semantics rather than stated. There is a partial exclusion ('This does not make a public link private'), which hints at when the tool is NOT the right one, but no explicit when-to-use guidance or named alternatives among the many set_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_member_roleChange a member’s roleAIdempotentInspect
Owner only. Change one member’s role in this workspace to editor or viewer. The workspace creator cannot be changed — they are permanently owner, which is what guarantees a workspace always has at least one. You cannot change your own role either: demotion is a one-way door, because afterwards you no longer hold the permission to change it back; hand over by having another owner do it. The change takes effect immediately, including for tokens the member is already using, because a token acts with its owner’s current role rather than the role held when it was created. Get user_id from list_members.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | editor 建页面 / 发版 / 发链接 · viewer 只读。**不能改成 owner** | |
| user_id | Yes | 要改谁,26 位 user_id(`list_members` 里那个) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint false, idempotent true, destructiveHint false) by disclosing that the change takes effect immediately for already-issued tokens, that the creator is permanently owner, and that self-demotion is irreversible. These are consequential behaviors an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the critical constraint (Owner only) and each sentence carries distinct information. It runs slightly long, with the token-behavior and self-demotion clauses both present, but neither is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description never states what is returned or whether the call fails silently on the forbidden cases, which is a minor gap. For a two-parameter mutation it otherwise covers permissions, side effects, and irreversible cases thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum is already defined, so the baseline is 3; the description adds real value by explaining the operational meaning of the roles and pointing to list_members for user_id. It does not, however, add format or edge-case detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (change), resource (one member's role), scope (this workspace), and the exact target values (editor or viewer). An agent can immediately distinguish it from add_member, remove_member, and invite_teammate without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when/when-not guidance: owner-only, the workspace creator cannot be changed, and you cannot change your own role. It even explains the workaround (have another owner do it) and where to source the input (user_id from list_members), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_nicknameChange your own display nameAIdempotentInspect
Change the display name of the person who authorized this connection. It appears in the web console, in member lists and on future authorization screens, and is at most 24 characters. It always changes your own name: there is no argument for choosing someone else, so it cannot rename another member.
| Name | Required | Description | Default |
|---|---|---|---|
| nickname | Yes | The new display name: up to 24 characters, and not empty. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false), idempotent, and non-destructive behavior, so the bar is lower. The description still adds real value beyond them: where the name surfaces (web console, member lists, future authorization screens) and the 24-character limit, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and limits. The final clause ('there is no argument for choosing someone else, so it cannot rename another member') partly repeats the preceding sentence, a minor redundancy, but overall it is tight and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-destructive, idempotent setter with no output schema, the description covers scope, limits, and where the change is visible. Nothing essential is missing, though the maxLength inconsistency between schema and description should be resolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully documented, so the baseline is 3. The description restates the 24-character constraint but adds nothing about format or validation beyond the schema; note also that the schema's maxLength (64) conflicts with the 24-character limit asserted in both the schema description and the tool description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('change the display name') and immediately scopes it to the authorizing user, which cleanly separates it from siblings like set_member_role, rename_proposal, and set_workspace_profile. An agent can identify the target object without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Makes the usage condition explicit ('always changes your own name... cannot rename another member'), which implicitly rules out the member-management and rename siblings. It does not name those alternatives directly or state prerequisites, but the self-only constraint is a strong routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_page_pathPut a page at a path on your workspace addressAIdempotentInspect
Put any page or folder at a name on the workspace’s own address: path="/autumn-plan" is https://.hy.24haowan.com/autumn-plan, path="/" is the workspace home page. Pass proposal_id or folder_id; remove=true deletes the path; omit path to list the current paths. Works out of the box: no domain to bind and no DNS records (that is bind_domain / set_domain_route, for the user’s own domain). Setting an existing name again points it at the new page, so an address already sent out now opens the new page. The page always shows its current version; whether readers can see it is decided by the page’s own visibility (set_visibility). Once set, this page’s link (url in list_proposals, the share card, copy link) is this tidy address. Names are 1–64 lowercase letters, digits and hyphens. Change the part with set_workspace_slug.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path: / or / plus a name, such as /autumn-plan; omit to only list the current paths | |
| remove | No | true = delete this path (do not pass proposal_id / folder_id) | |
| folder_id | No | Open this folder (pass this or proposal_id) | |
| proposal_id | No | Open this page (pass this or folder_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing a real side effect: setting an existing name repoints it, so an already-shared address silently opens the new page. It also explains that reader access is governed by the page's own visibility (set_visibility) and that this address becomes the canonical link in list_proposals/share cards. The delete mode (remove=true) is disclosed even though annotations only carry destructiveHint=false for the path-mapping removal, which is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and URL semantics, then modes, then side effects, then naming constraints — no filler. Slightly dense at roughly 120 words with several parenthetical asides, but every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers the main return implication (the page's link is this address). The remaining gap is the list mode — it says omitting path 'lists the current paths' but not what fields come back or whether it lists page/folder bindings — which is minor for this operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: a concrete path example mapped to a full URL, '/' as the home page, 'omit path to list', and the 1–64 lowercase/digit/hyphen naming rule. It also clarifies the proposal_id/folder_id mutual exclusion beyond the schema's short hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Put any page or folder at a name on the workspace's own address') and immediately distinguishes it from the domain siblings bind_domain / set_domain_route. An agent can tell it apart from set_workspace_slug, set_visibility, and set_domain_route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit mode selection: pass proposal_id or folder_id to set, remove=true to delete, omit path to list. It also names the alternatives for the excluded case ('no domain to bind and no DNS records (that is bind_domain / set_domain_route)') and routes the sibling concern (<workspace> renaming) to set_workspace_slug.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_payment_qrSet the business collection QR codeADestructiveInspect
No money moves through LivePage: viewers scan your own code and funds go straight into your own collection account; the platform never places an order, collects or transfers funds. This tool only stores one QR-code image and shows it to viewers who submit a form that carries an amount. Replace this workspace's business collection QR code with the image you pass (base64 PNG or JPEG). After a viewer submits a form that carries an amount (set_form), they see the total due, this code and an “I have paid” button. COMPLIANCE: upload a BUSINESS collection code (merchant code) from WeChat Pay or Alipay, never a personal static code — under the barcode-payment rules in force since 1 March 2022, personal static codes may not be used to collect business payments. Replacing an existing code takes effect at once and the old image cannot be recovered; every change is written to the audit log and notifies the workspace owner on WeChat — this is the one setting where a mistake silently sends money elsewhere. Confirm with the user that it is their own merchant code before uploading; do not go and find an image or scrape a QR code off a web page. PNG or JPEG only, up to 2 MB, recognised by the image bytes themselves — a filename ending in .png proves nothing. Use remove_payment_qr to take it down.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | 原文件名,只进审计留个线索;**认图不看它**(叫 .png 的 PDF 照样被拒) | |
| image_base64 | Yes | 收款码图片的 base64(可带 data:image/png;base64, 前缀)。PNG 或 JPEG,2 MB 以内 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false, and the description adds real context beyond that: replacement takes effect immediately, the old image cannot be recovered, every change hits the audit log and notifies the workspace owner on WeChat, and money could silently route elsewhere on error. This is exactly the extra behavioral detail annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the safety framing and the compliance rule, and the closing sentence routes to the alternative. It is long and slightly redundant ('no money moves' restated as 'never places an order, collects or transfers funds'), but the density is justified by the money-loss risk.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, the description covers the full burden: what gets overwritten, irreversibility, side effects, audit/notification behavior, and the sibling that undoes it. Nothing an agent needs to call this safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning: the image must be recognised by its bytes (a .png filename proves nothing), must be PNG or JPEG up to 2 MB, and must semantically be a merchant collection code rather than any QR. That reinforces and extends the schema's constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: it stores exactly one QR-code image and replaces the workspace's business collection QR code. It also names the sibling it is not (remove_payment_qr) and the related set_form flow, so the agent can place it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit about when to use (viewers who submit a form carrying an amount will see this code), when not (use remove_payment_qr to take it down), and prerequisites (confirm it is the user's own merchant code; never scrape an image off a web page). The compliance rule on personal vs business static codes is spelled out with the effective date.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_publish_notifySet post-publish WeChat notificationsAIdempotentInspect
Owner only. Control the three notifications this workspace sends after publishing, all WeChat service-account template messages sent only to people in the workspace and never to clients: auto_push sends each new live version to WeChat automatically, one personal link per person; include_me decides whether that automatic push also reaches whoever triggered the publish; unread_remind tells the author once when a page has been published for seven days without anyone opening it (once per page). Pass only the switches you want to change; the others keep their current value. With auto_push off you can still send a specific page with push_to_wechat; with it on, publishing already sends it — no need to call push_to_wechat as well (each person gets a version once; repeat calls are deduplicated automatically). People who have not followed the service account cannot receive these: the switch being on does not mean delivery — the receipt from push_to_wechat is what tells you. When YOU have no WeChat binding or have not followed the service account, the receipt includes a binding QR code (an image plus bind_qr_image_url): the user scans it in WeChat, which follows the service account and links that WeChat to the current account in one step. Never tell the user to “sign in by scanning in WeChat” — that creates a separate account. Calling it with no arguments only reports the current state and hands out the code when needed; when the user says they have scanned, call it again to confirm. For ONE page only, also pass proposal_id: auto_push then sets that page (true = notify for this page even when the workspace is off; false = do not notify for this page, neither people nor subscribers; null = follow the workspace again); proposal_id alone reports whether the page is notified. include_me and unread_remind are workspace-wide and cannot be combined with proposal_id. For a single small edit, leave the switches alone and pass quiet: true to publish_file / finalize_upload / publish_version. SUBSCRIBE CODES (for clients, managers or family — not workspace members): whenever proposal_id is passed, the result also carries that page’s subscribe code (an image plus subscribe_code.qr_image_url). One WeChat scan follows the service account and subscribes that person to the page, so new versions reach them as WeChat reminders. The default code is the same one as in the publish receipt; for a code with a note for one person add subscribe_code_label (such as “for Mr. Wang”; the same label returns the same code). Passing proposal_id + subscribe_code_label without auto_push only issues the code, without reading or changing switches, and needs editor rather than owner. Pages that are private, suspended or published without signing in get no code, and the result says why. SUBSCRIBER LIST (who subscribed to the page, shown by get_engagement_summary as one line per person with a row number, grouped by source code): revoke_subscribe_code (a code_id) revokes a code — scanning it no longer subscribes anyone, and everyone who subscribed through it is unsubscribed; remove_subscriber (a row number) removes one person. Both need proposal_id and editor rather than owner; passing only them (without auto_push / subscribe_code_label) only edits the list and issues no code. Confirm with the user which code or row before doing either. SUBSCRIBE TO A FOLDER (for weekly or daily issues — no new code for every issue): pass folder_id (optionally with subscribe_code_label) to get that folder’s subscribe code. One scan subscribes the person to the whole folder: any page in it getting a new version, or a new page being added, sends a reminder (at most one a day per subscription); pages marked internal do not notify. folder_id cannot be combined with proposal_id or the switches; folders visible only to you get no code.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_push | No | Push each new live version to WeChat automatically; with proposal_id it changes this page only, and null returns the page to the workspace setting | |
| folder_id | No | 拿某个文件夹的订阅码时传(`list_folders` 里的 folder_id):扫了订上整个文件夹,夹里有新版本或新的一页都提醒。不能和 proposal_id / 开关一起传 | |
| include_me | No | 自动推送也发给触发发布的那个人本人 | |
| proposal_id | No | 只管这一页时传(`list_proposals` 里的 proposal_id):看 / 改这一页的提醒,并附上这一页的订阅码;不传 = 改整个工作区 | |
| unread_remind | No | 发布七天没人打开时提醒作者一次 | |
| remove_subscriber | No | Remove one person from the subscriber list (row number, from the subscriber list in get_engagement_summary); future updates of this page will not remind them. Requires proposal_id; confirm with the user first | |
| subscribe_code_label | No | 订阅码的备注(≤ 20 字,如「给王总」),只有作者自己看得到;不传 = 这一页的默认码。需要同时传 proposal_id | |
| revoke_subscribe_code | No | Revoke one of this page’s subscribe codes (code_id, from the subscriber list in get_engagement_summary): scanning it no longer subscribes anyone, and everyone who subscribed through it is unsubscribed. Requires proposal_id; confirm with the user first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds genuinely useful behavior beyond the annotations: owner-only access, per-person deduplication, the caveat that 'the switch being on does not mean delivery', the QR binding flow, and the one-scan folder subscription semantics. However, it explicitly documents removal/unsubscription operations ('everyone who subscribed through it is unsubscribed', remove_subscriber) that require user confirmation, while the annotation declares destructiveHint: false — a mismatch between the declared safety profile and the described effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense wall of text mixing at least four distinct behaviors (workspace switches, single-page overrides, subscribe codes/subscriber lists, folder subscriptions) into one run-on block. After the strong first sentence, information is not front-loaded by task, and the result is far longer than needed to route the agent correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, 0-required, multi-mode tool with no output schema, the description compensates well: it explains the receipts, the bind QR ('bind_qr_image_url'), the subscribe code ('subscribe_code.qr_image_url'), and why some pages get no code. It is close to complete, held back only by the safety-profile gap and the fact that the delegation modes (revoke_subscribe_code, remove_subscriber) are buried rather than signposted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes well beyond the schema by codifying cross-parameter combinatorics the schema cannot express: proposal_id alone = read-only report, proposal_id + subscribe_code_label without auto_push = issue code only, null auto_push = revert to workspace setting. This is real added meaning; it loses a point only because several schema descriptions are in Chinese and partly duplicated rather than complemented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening 'Owner only. Control the three notifications this workspace sends after publishing' states a specific verb+resource and immediately distinguishes the three switches (auto_push, include_me, unread_remind). It also differentiates from the sibling push_to_wechat ('with auto_push off you can still send a specific page with push_to_wechat'). The only weakness is scope drift: the tool also issues/subscribes/revokes codes and edits subscriber lists, so 'set_publish_notify' as a single label understates what the agent is invoking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Guidance is unusually explicit: when to call push_to_wechat vs rely on auto_push, when to pass proposal_id vs folder_id, and hard exclusions ('include_me and unread_remind are workspace-wide and cannot be combined with proposal_id'; 'folder_id cannot be combined with proposal_id or the switches'). It even routes the agent to quieter siblings (publish_file / finalize_upload / publish_version with quiet: true) for a small edit, and instructs 'Confirm with the user which code or row' before destructive edits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_reader_viewReader-side settings (premium: hide the capsule)AIdempotentInspect
[Premium feature — the workspace owner must have a premium account] Remove the bottom-right reader capsule and its panel entirely (capsule:"hide"), or show it again ("show").
Omit proposal_id for the workspace default (owner only); pass it for one page, effective immediately with no new version; capsule:null on a page clears its setting so it follows the workspace.
Precedence: this page’s setting > this version’s manifest (chrome.default:"hidden") > workspace default > shown.
With it hidden, readers do not see follow updates, fill in, or the LivePage promotion (the desktop “send to WeChat” button is not part of the capsule and stays); buttons in the page body marked data-space="subscribe" (follow) or data-space="form" (fill in) still work.
On a free account hide is refused (pro_required) and nothing changes; show is always allowed.
Follow, position, style, colour and brand are fixed: passing those keys is not an error and has no effect. Without capsule it only returns the explanation. To control who can view, use set_visibility.
| Name | Required | Description | Default |
|---|---|---|---|
| capsule | No | hide = hide the reader capsule (premium) · show = show it · null = clear this page’s setting and follow the workspace | |
| proposal_id | No | Which page; omit for the workspace default | |
| reader_subscribe | No | The “Subscribe” bar at the end of this page: true shows it (default) · false turns it off. Only readers of passcode / public pages see it; free accounts can set it; requires proposal_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic mutation profile (not read-only, idempotent, non-destructive); the description goes well beyond that with a premium/ownership precondition, the exact reader-facing consequences of hiding (follow updates, fill in, LivePage promotion disappear while the WeChat button and data-space subscribe/form buttons keep working), and the fact that page-level changes take effect immediately without a new version. The only thin spot is that it doesn't say what a successful response contains beyond the capsule-less case, but the behavioral disclosure is otherwise unusually rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the premium prerequisite before anything else, then uses short bullets each carrying a distinct fact (scope, precedence, side effects, error behavior, ignored keys). It is dense but nearly every clause earns its place; the only redundancy is restating hide/show already given in the schema enum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a settings mutation with no output schema, it covers the prerequisites, the scope selector, the precedence model, the visible consequences, the error path, and even the return behavior when no capsule argument is supplied. An agent has everything needed to call it correctly and to explain the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a 3 is the baseline, but the description adds meaning the schema lacks: the full precedence chain (page setting > version manifest chrome.default:"hidden" > workspace default > shown), that capsule:null on a page clears it to follow the workspace, and that unrelated keys (follow, position, style, colour, brand) are silently ignored rather than erroring. It does not mention reader_subscribe at all, which the schema covers adequately but leaves the description silent on one of three params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — remove/show the bottom-right reader capsule and its panel — and names the exact enum values (capsule:"hide" / "show") that trigger each behavior. It also distinguishes itself from the nearest sibling by pointing at set_visibility for view-control, so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: omit proposal_id for the workspace default (owner only), pass it for a single page, and use set_visibility instead when the goal is controlling who can view. It also states the failure condition (free account + hide → pro_required, nothing changes) so the agent knows when the call is not applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_replaySet page recordingAInspect
Enable or disable HTML session recording through this page’s link and folder visits. Off by default — recording starts only after you turn it on (until then readers load no recorder); the choice survives updates and URL resets. The workspace-wide off switch takes precedence. Future visits only; inputs are masked, recording pauses in the background, each visit is capped at 8 MB, and each workspace has 1 GB with 30-day retention. Basic events and PDF/PPTX page replay are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| on | Yes | ||
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give readOnlyHint=false and idempotentHint=false; the description adds substantial value beyond that: default-off behavior, persistence across updates and URL resets, workspace-level precedence, future-visits-only scoping, input masking, background pausing, 8 MB/visit and 1 GB/workspace caps, and 30-day retention. This is exactly the operational context an agent needs for a mutation toggle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then layered with the constraints that matter. Dense and mostly waste-free, though the trailing list of limits and unaffected features packs a lot into long clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and thin annotations, the description covers behavior, limits, retention, and interactions thoroughly for a 2-param toggle. The remaining gap is authorization/permission requirements and an explicit statement of what proposal_id identifies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters (proposal_id, on), so the description carries the burden. 'Through this page's link' loosely maps proposal_id to a page and 'turn it on' implies the boolean, but neither parameter is named or explained, leaving the mapping to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (enable/disable) plus the exact resource (HTML session recording) and its scope (this page's link and folder visits). An agent can immediately tell it is the per-page replay toggle, distinct from get_replay_settings and set_replay_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Conveys the default state ('Off by default — recording starts only after you turn it on') and precedence ('workspace-wide off switch takes precedence'), which implies when toggling is meaningful, but it never explicitly routes the agent between this tool and the sibling get_replay_settings/set_replay_settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_replay_settingsSet workspace recordingAInspect
Owner only. Disable to stop recording across all pages and legacy links. Re-enabling preserves explicit per-page opt-outs. Existing recordings follow their 30-day retention schedule. Changes affect future collection only.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only say readOnly=false, destructive=false, idempotent=false). It discloses that re-enabling preserves per-page opt-outs, that existing recordings keep their 30-day retention, and that changes affect future collection only — exactly the edge behavior an agent needs before mutating recording state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the permission constraint, then consequences, then retention, then scope. Every sentence conveys a distinct operational fact with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter toggle with no output schema and existing annotations, the description covers permission, effect, reversibility of opt-outs, and retention behavior. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single boolean has 0% schema description coverage, so the description must carry the meaning. 'Disable to stop recording' and 'Re-enabling preserves...' implicitly define the two states of enabled, adding real semantic value, but the parameter is never explicitly named or mapped to true/false.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: disabling stops recording 'across all pages and legacy links', scoping the operation to workspace-wide recording. Clear enough to distinguish from the read sibling get_replay_settings, though it does not differentiate itself from the similarly named set_replay.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Owner only' supplies a real prerequisite, and 'Disable to stop recording' implies the triggering condition. However, it never names alternatives or states when to prefer this versus get_replay_settings or set_replay, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visibilitySet sharing permissionsAInspect
Set visibility for exactly one proposal_id or folder_id. private means only the publisher (and signed-in workspace members) can open it — everyone else sees a blocked page; passcode requires a passcode (generated or retained when omitted); public allows anyone with the URL. Confirm external sharing with the user first. Changes take effect immediately. A shared folder grants access to its included live pages even when an item’s link is private. Excluded items and legacy link permissions remain separate. One stable URL per page; reset_default_link replaces it. Reading records identify devices, not named people. For a page, allow_copy turns copying with copy_proposal on or off (omit it to leave it unchanged). Pass home: true (and no proposal_id / folder_id) to set the workspace home page at https://.hy.24haowan.com/ — every workspace has one, members-only by default, owner only. The home page lists only pages and folders that are themselves public or passcode-protected, so opening it never exposes a private page. When a folder is opened, the result names pages that are private on their own but will be seen through the folder; pass that on to the user.
| Name | Required | Description | Default |
|---|---|---|---|
| home | No | Set the visibility of the workspace home page. When true, do not pass proposal_id / folder_id | |
| passcode | No | Custom passcode: 4–16 letters or digits. Omit to generate or retain a passcode. | |
| folder_id | No | Change folder visibility, sharing all included pages through one link. Supply exactly one of folder_id or proposal_id. | |
| allow_copy | No | Pages only: whether people with the link may copy it into their own workspace with copy_proposal (omit to leave unchanged). | |
| visibility | Yes | ||
| proposal_id | No | Change one page’s visibility. Supply exactly one of proposal_id or folder_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only say readOnly=false, destructive=false, idempotent=false): it discloses that changes take effect immediately, that omitting a passcode generates or retains one, that private shows a blocked page to non-members, that a shared folder propagates access to included live pages while excluded items and legacy link permissions stay separate, and that read records identify devices not people. That is exactly the kind of consequence-of-invocation detail annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core rule is front-loaded, but the latter two-thirds sprawl across folder inheritance, excluded items, device-level read records, allow_copy, and a long home-page digression. Sentences like 'Reading records identify devices, not named people' and the home-page paragraph are relevant but dilute the operational core and could be tightened substantially.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by describing return-adjacent behavior — the folder result names pages that are private on their own but visible through the folder, and the agent is told to relay that to the user. It also covers the home page's members-only-by-default, owner-only rules. Only the unaddressed set_home overlap keeps this from full marks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the structured baseline is already strong, but the description still adds meaning: it defines what private/passcode/public actually do for viewers, clarifies that the passcode is generated or retained when omitted, and explains allow_copy's coupling to copy_proposal. Minor gap: it does not tie the enum values to any restriction, and it says nothing extra about passcode length/format beyond the schema's 4–16 constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a precise verb + resource + arity constraint: 'Set visibility for exactly one proposal_id or folder_id', and extends it to the workspace home page mode. An agent immediately knows this is a sharing/permission mutation scoped to one page, one folder, or the workspace home — distinguishable from siblings like set_indexable, set_internal, or set_home without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operational conditions: pass home:true with no proposal_id/folder_id for the home page, confirm external sharing with the user first, and note that reset_default_link replaces the URL. However, it never states when to use this tool's home:true path versus the sibling set_home tool, leaving a genuine routing ambiguity among 70+ siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_visitor_internalMark a visitor as internal (or undo)AInspect
Mark one visiting device as “one of us”, so its visits stop counting towards the outward-facing numbers: views, visitor counts and the funnel are all recomputed, history included, because the judgement is made at read time rather than stored per event. Use it for the user's own phone and laptop, for colleagues, and for the opens made while demoing the page to someone — otherwise “how many outside people actually read this” is inflated by the people who made it. The operations view prints how many were excluded, so the number stays auditable rather than silently shrinking. Get visitor_id from list_sessions. Pass internal=false to undo, which puts the visitor back into the outward-facing numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| internal | No | true marks the visitor as internal (the default); false undoes it and puts them back into the outward-facing numbers. | |
| visitor_id | Yes | The visitor id, from any row of list_sessions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is already carried. The description adds genuinely non-structured context: the filter is applied at read time, history is retroactively recomputed, and the operations view reports how many visitors were excluded so the change stays auditable. It stops short of describing failure modes or what happens to a visitor_id that no longer exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its consequence, and every sentence carries information, but the 'one of us' phrasing and the aside about inflated read numbers add rhetorical length that a tighter definition could drop.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is needed since the description explains the recomputation effect and where the exclusion count surfaces. For a two-parameter mutation whose annotations already cover safety, the description covers effect, scope, undo and id source completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in-schema, so baseline is 3; the description adds marginal value by restating the undo semantics of internal=false and pointing to list_sessions as the source of visitor_id, though both points largely duplicate the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('mark one visiting device as internal') plus its exact effect: excluded from views, visitor counts and the funnel, recomputed at read time. An agent can tell this apart from siblings like set_internal or set_visibility without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use cases (the user's own phone and laptop, colleagues, demo opens) and the undo path ('pass internal=false'). It also names the source for the required id: 'Get visitor_id from list_sessions'. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_workspace_profileSet workspace profileAIdempotentInspect
Record who this workspace is: company or organization name, industry, who the page is mainly shared with, and one sentence on what it is used for. The web form for this was retired; this is the only way to write it. company_name is the sole source of the company name on WeChat share cards — without it recipients see a generated workspace name. Fields passed are merged into the existing profile and omitted fields are left unchanged, so changing only the company name needs only company_name. A first-time profile must supply the required fields: with usage=work, company name and industry are required; customer_type and use_case are required in both modes. Validation matches the retired web form exactly: placeholder names such as “personal”, “test” or “my company” are rejected (pass usage="personal" for personal use, which does not ask for company or industry), phone numbers and messaging handles are not allowed in the name, and industry must be one of the listed values. The profile is used for compliance and support and is not shown to viewers, except that the company name appears on share cards. embed_origins (owner only) is the embed allowlist: the parent origins (https://domain) that may frame this workspace’s pages through an embed link (preview_version with embed_origin); it replaces the whole list, [] clears it, and empty (the default) means only the platform first-party origins (Tokenman web chat: https://claudefleet.24haowan.com, https://ccquota.24haowan.com) may embed — those are always allowed, need no setup and do not count towards the 5. It opens embed links only — page links are unaffected. Passing only embed_origins leaves the profile untouched. Read-only members cannot call it. icon_base64 sets the workspace icon (base64 PNG or JPEG, up to 2 MB, square works best; only use a logo or avatar the user provides): it becomes the avatar on the workspace home page and folder pages and the browser tab icon for every page on https://.hy.24haowan.com; an empty string removes it. Passing only it leaves the profile untouched. The company name is also what readers see as the workspace name on the home page and folder pages.
| Name | Required | Description | Default |
|---|---|---|---|
| usage | No | Usage: work (default) means work use, where company name and industry are required; personal allows both to be empty. | |
| industry | No | Industry (required when usage=work); must be one of the listed values. | |
| use_case | No | One sentence on what you will send and to whom, for example “send the weekly report to my team”. | |
| icon_base64 | No | Base64 of the workspace icon (a data:image/png;base64, prefix is fine), PNG or JPEG, up to 2 MB; an empty string removes the icon | |
| company_name | No | Company or organization name (required when usage=work). It appears on WeChat share cards. | |
| customer_type | No | Who your pages are mainly shared with: b2b = colleagues, clients or partners; b2c = friends, family and other individuals. | |
| embed_origins | No | Owner only: the embed allowlist, an array of https://domain origins (such as https://example.com); replaces the whole list, [] clears it. It adds to the platform first-party origins (claudefleet / ccquota.24haowan.com), which are allowed by default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behaviour the annotations cannot express: merge-not-replace semantics with omitted fields untouched, per-mode required fields, validation parity with the retired form (placeholder names, phone numbers and handles rejected, industry must match the enum), and permission scoping (embed_origins is owner-only). It also explains the surprising allowlist behaviour — [] clears, empty means first-party origins only, those are always allowed and do not count toward the 5 — plus icon size/format and that it affects the avatar and browser tab icon. Nothing here contradicts readOnlyHint=false, idempotentHint=true, destructiveHint=false; the clearing operations are field-scoped and idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and nearly every sentence carries operational detail that an agent would otherwise have to guess. It is still a dense single block with some redundancy: 'Passing only embed_origins leaves the profile untouched' is restated as 'Passing only it leaves the profile untouched' for the icon, and the company-name/shown-to-readers point is made twice (WeChat share cards, then home page and folder pages). Those could be consolidated without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry the full burden, and it does: prerequisites, required-field combinations, permissions, validation rules, side effects on share cards and the workspace icon, and what each optional block does in isolation. An agent could call this correctly on a first-time setup and on a single-field update from this text alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description earns more: it defines merge semantics across parameters, the usage-dependent requirement matrix, the concrete rejection rules for company_name, the replace-vs-clear semantics of embed_origins and its relationship to the always-allowed first-party origins, and the icon's format/size/removal contract. This is meaning the schema's per-field strings do not convey, especially the interaction between parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb ('Record') and resource (the workspace profile) and enumerates exactly which attributes it owns: company name, industry, audience, use case, embed allowlist, icon. That is far beyond a restatement of the name. It stops short of a 5 because it never routes the agent away from near-neighbours like set_share_card or set_nickname, which also touch identity-adjacent surface (the company name is even said to appear on share cards).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage conditions: partial-update semantics ('changing only the company name needs only company_name'), first-time required-field combinations per usage mode, and a caller restriction (read-only members cannot call it). It also explains the retired web form so the agent knows there is no alternative path. It lacks an explicit 'use X instead when…' routing statement, which keeps it at 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_workspace_slugChange the workspace addressAIdempotentInspect
Change the name in the workspace address https://.hy.24haowan.com (workspace owner only). 3–32 lowercase letters, digits or hyphens, at least one letter. The old address keeps working: every link on it redirects to the same path on the new address (links already sent and printed QR codes still open), and the old name stays reserved for this workspace forever. Once every 30 days (the first change is not limited). Confirm the name with the user before changing it.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The new name, such as acme |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false) by disclosing the non-obvious consequences: old links redirect to the same path, printed QR codes keep working, and the old name stays reserved forever. It also surfaces the 30-day throttle and owner permission requirement, which no structured field carries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short paragraphs, front-loaded with what changes and the permission gate, then consequences, then the throttle and confirmation requirement. Every sentence carries actionable information; nothing is restated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no output schema, the description covers permission, format validation, rate limiting, reversibility/redirect semantics, and the required user confirmation. There is no meaningful gap an agent would need to guess at before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented, yet the description still adds material meaning absent from the schema: the actual naming rule (3–32 chars, lowercase letters/digits/hyphens, at least one letter) is much narrower than the schema's minLength 1 / maxLength 64. An agent could submit a schema-valid but rejected value without this text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change the name in the workspace address https://<name>.hy.24haowan.com'), including the exact object being mutated. This is clearly distinguishable from sibling tools like set_page_path, bind_domain, or set_domain_route, which touch different addressing concepts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit eligibility ('workspace owner only'), a hard rate limit ('once every 30 days, first change not limited'), and an interaction rule ('Confirm the name with the user before changing it'). It does not name alternative tools or state when this should be preferred over, say, bind_domain for custom addresses, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_versionTag a versionAIdempotentInspect
Give one version of a page a tag (a date like 2026-10-28, or a short name like "v2 final"). Rules: (1) a page that has never been tagged shows readers its newest version (today's behaviour); (2) once a page has tags, readers see the newest tagged version (by version order, not by when the tag was added) and can browse every tagged version from the reading page ("past issues" for daily reports, "version history" otherwise), each tag at its own fixed address; (3) giving an existing tag name to another version moves it there.
Tagging a held version makes it live. Tagging an older version does not pull readers back to it.
On a tagged page subscribers are reminded only when a new tag lands on the version readers see; moving a tag, edits and held versions remind no one.
New versions can carry a tag directly: the tag parameter of publish_file / finalize_upload / publish_version. Daily reports use the day's date.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | The tag name, or {name, title, note}: title is this issue's title, note is one line about it | |
| version_id | Yes | Which version, from list_versions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say not-read-only, idempotent-ish and non-destructive; the description supplies the real behavioral payload — held versions go live, tag names are unique per page and move between versions, readers see the newest tagged version, and subscriber reminders fire only when a new tag lands on the version readers see. That is exactly the consequence-level detail an agent cannot infer from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then the rules. The three numbered rules are dense, multi-clause sentences that edge toward documentation prose, but each carries a distinct behavioral fact (visibility, tag movement, notification) and none is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation with full schema coverage, no output schema and non-destructive annotations, the description covers what changes for readers, what triggers notifications, and how tags compose with publishing tools. The remaining unknowns (return payload, error/no-op when re-tagging the same version) are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents version_id ("from list_versions") and the tag union type, so the baseline is 3. The description adds genuine semantic value beyond the schema: naming conventions (ISO-style dates, short names, daily reports use the day's date) and the effect of reusing an existing tag name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Give one version of a page a tag") and immediately grounds it with concrete tag examples (a date, "v2 final"). It is clearly distinguishable from siblings like delete_tag, publish_version and publish_file, and it even cross-references them as alternative routes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly covers the main usage nuance (tagging a held version makes it live; tagging an older version does not pull readers back) and names the alternative path — supplying the tag parameter on publish_file / finalize_upload / publish_version instead of calling this tool. It stops short of stating when not to use it (e.g., removing a tag belongs to delete_tag).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unbind_domainUnbind your domainADestructiveIdempotentInspect
Unbind a custom domain: it no longer opens LivePage pages, its paths are cleared and its slot is freed. Workspace owner only. confirm must be the domain typed exactly (guards against unbinding the wrong one). Afterwards the user may delete the two records at the DNS provider. Confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Type the domain to unbind exactly, such as go.acme.com | |
| hostname | No | The domain itself, such as go.acme.com; pass this or domain_id | |
| domain_id | No | The domain_id returned by bind_domain / list_domains; pass this or hostname |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint and idempotentHint annotations, the description explains what is actually affected: LivePage pages stop opening, paths are cleared, the slot is freed, and DNS records may subsequently be deleted. It also discloses the permission boundary and the exact-confirmation guard, which is precisely the behavioral context an agent needs before invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and its consequences, followed by permission, confirmation, and cleanup notes. Every sentence contributes operational information, with no wasted framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive domain-unbinding tool with complete schema coverage and annotations carrying the safety profile, the description supplies the remaining operational context: exact effects, owner restriction, exact-match confirmation, user confirmation before calling, and DNS cleanup. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries the baseline parameter documentation. The description adds meaningful semantics for confirm by explaining that it must be the domain typed exactly and that this guards against unbinding the wrong one; hostname and domain_id are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource, 'Unbind a custom domain', and immediately states the concrete effects: the domain stops opening LivePage pages, paths are cleared, and the slot is freed. This makes it unmistakably distinct from bind_domain and the related domain setters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives important usage context: workspace-owner-only permission, the exact-match confirm requirement, and the instruction to confirm with the user before calling. It does not explicitly route to siblings such as list_domains for finding a domain_id or bind_domain for the reverse operation, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_domainCheck your domain’s progress (and move it forward)AIdempotentInspect
Check how far a custom domain has got, and move it forward one step right away (no waiting for the background pass). Returns state, step / of, done, what it is waiting for (waiting), why it is stuck (reason), retry_after_s (when to check again; null = no need to poll), the records to add, what we see on public DNS when records are not live yet (seen), plus next, can_do (what you can do now) and say (one sentence to relay to the user as it is). Poll after retry_after_s until state=active; when next=user_action, tell the user can_do and check again once they are done; when next=contact_us, ask the user to contact us. Also call it when the user asks “is it ready” or “why does it not open”. Read-only workspace members can check too.
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | No | The domain itself, such as go.acme.com; pass this or domain_id | |
| domain_id | No | The domain_id returned by bind_domain / list_domains; pass this or hostname |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing the return state machine (state, step/of, done, waiting, reason, retry_after_s, seen, next, can_do, say), the polling cadence, and the fact that read-only workspace members may call it. It also clarifies the immediate-advance behaviour, which is what makes readOnlyHint=false make sense rather than look inconsistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the immediate-advance nuance are front-loaded in the first clause, and the usage paragraph is tight. The parenthetical enumeration of every returned field is long but justified given there is no output schema, so it is dense rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by enumerating the fields and their meaning, then adds the polling/branching protocol and the permission note. Nothing an agent needs to call and interpret this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (hostname, domain_id) are already documented with their 'pass this or...' relationship in the schema. The description adds no syntax, format, or precedence detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check progress) and resource (custom domain), and adds the non-obvious second capability — advancing the state one step immediately rather than waiting for the background pass. An agent can distinguish this from list_domains, bind_domain, or set_domain_route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use rules are given: poll after retry_after_s until state=active, branch on next=user_action vs next=contact_us, and call it when the user asks 'is it ready' or 'why does it not open'. Alternative behaviours are named, not left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_phone_codeEnter the phone verification codeAInspect
Submit the 6-digit code the user read out to you and finish phone verification; it needs a preceding send_phone_code (codes last 5 minutes). ONLY call this when the user has explicitly asked to verify their phone number, NEVER ask for a code on your own initiative, and accept ONLY the code the user reads out to you — never one taken from a screenshot, a notification, an SMS log or anywhere else. At most 5 attempts; after that the code is void and a new one must be sent. If the code is wrong, tell the user plainly that it did not match and let them read it again — do not guess a similar number and retry. Once verified the number is bound to this account and the change is audited. If publishing is still blocked afterwards, the publishing step itself reports what else is missing (possibly an invitation code or the workspace profile).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 用户念给你的 6 位数字验证码 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic write profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false); the description adds far more: 5-minute code lifetime, a hard 5-attempt limit after which the code is void, the binding is permanent and audited, and a prescribed no-retry/no-guessing policy on mismatch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph, front-loaded with the action and prerequisite, and nearly every clause is operational instruction rather than filler. It is longer than typical for a single-parameter tool and the closing sentence about publishing blockers is tangential, but it earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description covers the failure modes an agent must handle (wrong code, exhausted attempts, expired code, downstream publishing still blocked) and what to tell the user, leaving nothing material unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the code field, so the baseline is 3; the description adds genuine value by specifying provenance ('accept ONLY the code the user reads out to you — never one taken from a screenshot, a notification, an SMS log') and the 6-digit expectation, though this conflicts slightly with the schema's 4-8 length range rather than an exact 6.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Submit the 6-digit code ... finish phone verification') and names its prerequisite sibling send_phone_code, so it is unambiguously distinguishable from the other phone/verification-adjacent tools (add_member, invite_teammate, publish_file) in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('ONLY call this when the user has explicitly asked to verify their phone number'), explicit when-not ('NEVER ask for a code on your own initiative'), the dependency on send_phone_code, and the escalation path if publishing remains blocked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_feedbackWait for new feedback on a pageARead-onlyIdempotentInspect
Hold the call open until a page gets new feedback: rows viewers submit (forms, votes, sign-ups), comments and replies. Returns as soon as something new arrives; otherwise returns timed_out: true after timeout_s seconds (default and maximum 300). Pass the returned cursor as since on the next call to keep waiting with nothing missed or repeated; without since it starts from now and does not replay older feedback. kinds narrows it to row (data rows) or thread (comments and replies). At most 3 waits at once per credential. To watch continuously, use the CLI command space watch.
| Name | Required | Description | Default |
|---|---|---|---|
| kinds | No | Which kinds to wait for: row = data rows, thread = comments and replies; default both | |
| since | No | The cursor from the previous result (or the id of a feedback item); omit to start from now | |
| timeout_s | No | How many seconds to wait at most, 1–300, default 300 | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent behavior; the description adds substantial context beyond that: timeout behavior with default and max 300 seconds, cursor continuity semantics, no replay without since, and the per-credential concurrency limit. This is exactly the behavioral detail an agent needs for a long-poll.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The paragraph is dense but front-loaded with purpose, then moves through return behavior, cursor usage, filtering, rate limit, and alternative. Every sentence carries operational information without filler, and the information is ordered by importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a long-poll tool with no output schema, the description covers the key behavioral contract: when it returns, timed_out, cursor continuity, and concurrency limits. It stops short of describing the full return payload (e.g., the shape of new feedback items) and omits proposal_id semantics, but is otherwise sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents kinds, since, and timeout_s with 75% coverage, and the description reinforces their meaning (cursor pass-through, default both, 300s max). However, the required proposal_id parameter has no description in the schema and is not mentioned in the description, leaving a clear gap for the one required argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: hold the call open until a page gets new feedback, enumerating rows, comments, and replies. It clearly describes a long-poll wait rather than a list operation, though it does not explicitly name sibling list_feedback as the alternative for reading existing feedback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains exactly when to use the tool (waiting for new items), how to continue waiting via the returned cursor, and what happens without since (starts from now, no replay). It also names the CLI watch command as the alternative for continuous watching and states the 3-wait per-credential limit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- Changed
create_upload_link1 field changed- changed
Input schema / properties / hold / descriptionPrevious value: -"默认 true:传完过审后先不切给客户看,确认后调 publish_version。false = 过审即自动发布"New value: +"默认 true:传完过审后先不切给客户看,确认后调 publish_version。false = 过审即自动发布 Only takes effect once the page has readers outside the workspace (passcode, public, a folder link or a named link); on a page only workspace members can open it is ignored, and the approved version becomes current directly without notifying anyone."
- Changed
finalize_upload2 fields changed- changed
Input schema / properties / hold / descriptionPrevious value: -"True keeps the approved version waiting to publish until the user confirms; then call publish_version. Default false: approval automatically makes this version live."New value: +"True keeps the approved version waiting to publish until the user confirms; then call publish_version. Default false: approval automatically makes this version live. Only takes effect once the page has readers outside the workspace (passcode, public, a folder link or a named link); on a page only workspace members can open it is ignored, and the approved version becomes current directly without notifying anyone." - changed
Input schema / properties / manifest / properties / forms / additionalProperties / properties / fields / items / properties / type / enumPrevious value: -[ - "text", - "textarea", - "select", - "multiselect", - "number", - "phone", - "email", - "image" -]New value: +[ + "text", + "textarea", + "select", + "multiselect", + "number", + "phone", + "email", + "image", + "location" +]
- Changed
preview_downloads1 field changed- changed
Input schema / properties / manifest / properties / forms / additionalProperties / properties / fields / items / properties / type / enumPrevious value: -[ - "text", - "textarea", - "select", - "multiselect", - "number", - "phone", - "email", - "image" -]New value: +[ + "text", + "textarea", + "select", + "multiselect", + "number", + "phone", + "email", + "image", + "location" +]
- Changed
publish_file1 field changed- changed
Input schema / properties / hold / descriptionPrevious value: -"True keeps the approved version waiting to publish until the user confirms; then call publish_version. Default false: approval automatically makes this version live."New value: +"True keeps the approved version waiting to publish until the user confirms; then call publish_version. Default false: approval automatically makes this version live. Only takes effect once the page has readers outside the workspace (passcode, public, a folder link or a named link); on a page only workspace members can open it is ignored, and the approved version becomes current directly without notifying anyone."
- Changed
set_form8 fields changed- added
Input schema / properties / fields / items / properties / fenceAdded value: +{ + "description": "location:打卡点(GCJ-02 坐标)与半径(米,20–5000)", + "properties": { + "lat": { + "type": "number" + }, + "lng": { + "type": "number" + }, + "name": { + "maxLength": 40, + "type": "string" + }, + "radius_m": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "lat", + "lng", + "radius_m" + ], + "type": "object" +} - added
Input schema / properties / fields / items / properties / keep_coordsAdded value: +{ + "description": "location:是否保存读者的打卡坐标(缺省 false 只存距离);true 时坐标只在 list_data_rows 的 location 里给你看,打卡 30 天后自动清除", + "type": "boolean" +} - added
Input schema / properties / fields / items / properties / max_accuracy_mAdded value: +{ + "description": "location:定位精度要求(米,10–1000,缺省 100)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / fields / items / properties / out_of_rangeAdded value: +{ + "description": "location:超出范围 reject 不收(缺省)/ hold 先收下待你确认", + "enum": [ + "reject", + "hold" + ], + "type": "string" +} - added
Input schema / properties / fields / items / properties / require_identityAdded value: +{ + "description": "location:是否要求读者用微信身份(缺省 true)", + "type": "boolean" +} - changed
Input schema / properties / fields / items / properties / type / descriptionPrevious value: -"text / textarea / select / multiselect / number / phone / email / image"New value: +"text / textarea / select / multiselect / number / phone / email / image / location" - changed
Input schema / properties / fields / items / properties / type / enumPrevious value: -[ - "text", - "textarea", - "select", - "multiselect", - "number", - "phone", - "email", - "image" -]New value: +[ + "text", + "textarea", + "select", + "multiselect", + "number", + "phone", + "email", + "image", + "location" +] - added
Input schema / properties / fields / items / properties / windowAdded value: +{ + "description": "location:打卡时间段,带时区的 ISO 时刻", + "properties": { + "end": { + "type": "string" + }, + "start": { + "type": "string" + } + }, + "required": [ + "start", + "end" + ], + "type": "object" +}
3 tool updates
- Added
delete_folder - Added
list_deleted - Added
restore_folder
1 tool update
- Removed
report_task
2 tool updates
- Changed
finalize_upload1 field changed- added
Input schema / properties / manifest / properties / share / properties / auto_excerptAdded value: +{ + "maxLength": 600, + "type": "string" +}
- Changed
preview_downloads1 field changed- added
Input schema / properties / manifest / properties / share / properties / auto_excerptAdded value: +{ + "maxLength": 600, + "type": "string" +}
3 tool updates
- Changed
finalize_upload1 field changed- changed
Input schema / properties / manifest / properties / forms / additionalProperties / properties / fields / items / properties / type / enumPrevious value: -[ - "text", - "textarea", - "select", - "multiselect", - "number", - "phone", - "email" -]New value: +[ + "text", + "textarea", + "select", + "multiselect", + "number", + "phone", + "email", + "image" +]
- Changed
preview_downloads1 field changed- changed
Input schema / properties / manifest / properties / forms / additionalProperties / properties / fields / items / properties / type / enumPrevious value: -[ - "text", - "textarea", - "select", - "multiselect", - "number", - "phone", - "email" -]New value: +[ + "text", + "textarea", + "select", + "multiselect", + "number", + "phone", + "email", + "image" +]
- Changed
set_form4 fields changed- changed
Input schema / properties / fields / items / properties / max / descriptionPrevious value: -"text / textarea:字数上限(≤ 500);number:上限"New value: +"text / textarea:字数上限(≤ 500);number:上限;image:最多几张(1–9,缺省 1)" - changed
Input schema / properties / fields / items / properties / type / descriptionPrevious value: -"text / textarea / select / multiselect / number / phone / email"New value: +"text / textarea / select / multiselect / number / phone / email / image" - changed
Input schema / properties / fields / items / properties / type / enumPrevious value: -[ - "text", - "textarea", - "select", - "multiselect", - "number", - "phone", - "email" -]New value: +[ + "text", + "textarea", + "select", + "multiselect", + "number", + "phone", + "email", + "image" +] - added
Input schema / properties / fields / items / properties / visibilityAdded value: +{ + "description": "image:图给谁看 —— author 只有你和提交者本人(缺省);all 跟着这一行给所有读者看(打卡墙)", + "enum": [ + "author", + "all" + ], + "type": "string" +}
1 tool update
- Changed
set_data3 fields changed- changed
Input schema / properties / per_reader / descriptionPrevious value: -"One row per identity: off (default) allows repeats; one rejects repeats with 409; latest shows only the latest row per person on the page and keeps history in list_data_rows. Requires identity=wechat or wechat_optional. Anonymous rows are unrestricted; members use their user id. Withdrawal does not free a one slot. Can be set alone with `revision`."New value: +"One row per identity: off (default) allows repeats; one rejects repeats with 409; latest shows only the latest row per person on the page and keeps history in list_data_rows; vote allows one vote per reader per value (also pass vote_key=<column>; a repeat vote for the same value gets 409 reader_already_voted; withdrawing your own row frees it, with no 24-hour limit). Requires identity=wechat or wechat_optional. Anonymous rows are unrestricted; members use their user id. Withdrawal does not free a one slot. Can be set alone with `revision`." - changed
Input schema / properties / per_reader / enumPrevious value: -[ - "off", - "one", - "latest" -]New value: +[ + "off", + "one", + "latest", + "vote" +] - added
Input schema / properties / vote_keyAdded value: +{ + "anyOf": [ + { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Which column per_reader=vote counts one vote per reader per value on (must be a table column, e.g. item). Can be passed with per_reader or alone, with `revision`." +}
1 tool update
- Changed
set_data1 field changed- added
Input schema / properties / per_readerAdded value: +{ + "description": "One row per identity: off (default) allows repeats; one rejects repeats with 409; latest shows only the latest row per person on the page and keeps history in list_data_rows. Requires identity=wechat or wechat_optional. Anonymous rows are unrestricted; members use their user id. Withdrawal does not free a one slot. Can be set alone with `revision`.", + "enum": [ + "off", + "one", + "latest" + ], + "type": "string" +}
3 tool updates
- Changed
finalize_upload7 fields changed- added
Input schema / properties / manifest / properties / analyticsAdded value: +{ + "additionalProperties": false, + "properties": { + "replay": { + "type": "boolean" + } + }, + "type": "object" +} - added
Input schema / properties / manifest / properties / folderAdded value: +{ + "anyOf": [ + { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / manifest / properties / folder_linkAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / manifest / properties / formsAdded value: +{ + "additionalProperties": { + "additionalProperties": false, + "properties": { + "append_open": { + "type": "boolean" + }, + "fields": { + "items": { + "additionalProperties": {}, + "properties": { + "key": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "label": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "max": { + "type": "number" + }, + "min": { + "type": "number" + }, + "options": { + "items": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "required": { + "type": "boolean" + }, + "type": { + "enum": [ + "text", + "textarea", + "select", + "multiselect", + "number", + "phone", + "email" + ], + "type": "string" + } + }, + "required": [ + "key", + "label", + "type" + ], + "type": "object" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "members_only": { + "type": "boolean" + }, + "title": { + "maxLength": 40, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "fields" + ], + "type": "object" + }, + "propertyNames": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "type": "object" +} - added
Input schema / properties / manifest / properties / nameAdded value: +{ + "maxLength": 256, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / manifest / properties / pathAdded value: +{ + "maxLength": 80, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / manifest / properties / tagAdded value: +{ + "anyOf": [ + { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + { + "properties": { + "name": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "note": { + "maxLength": 2000, + "type": "string" + }, + "title": { + "maxLength": 200, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + } + ] +}
- Changed
preview_downloads7 fields changed- added
Input schema / properties / manifest / properties / analyticsAdded value: +{ + "additionalProperties": false, + "properties": { + "replay": { + "type": "boolean" + } + }, + "type": "object" +} - added
Input schema / properties / manifest / properties / folderAdded value: +{ + "anyOf": [ + { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Input schema / properties / manifest / properties / folder_linkAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / manifest / properties / formsAdded value: +{ + "additionalProperties": { + "additionalProperties": false, + "properties": { + "append_open": { + "type": "boolean" + }, + "fields": { + "items": { + "additionalProperties": {}, + "properties": { + "key": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "label": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "max": { + "type": "number" + }, + "min": { + "type": "number" + }, + "options": { + "items": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "required": { + "type": "boolean" + }, + "type": { + "enum": [ + "text", + "textarea", + "select", + "multiselect", + "number", + "phone", + "email" + ], + "type": "string" + } + }, + "required": [ + "key", + "label", + "type" + ], + "type": "object" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" + }, + "members_only": { + "type": "boolean" + }, + "title": { + "maxLength": 40, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "fields" + ], + "type": "object" + }, + "propertyNames": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "type": "object" +} - added
Input schema / properties / manifest / properties / nameAdded value: +{ + "maxLength": 256, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / manifest / properties / pathAdded value: +{ + "maxLength": 80, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / manifest / properties / tagAdded value: +{ + "anyOf": [ + { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + { + "properties": { + "name": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "note": { + "maxLength": 2000, + "type": "string" + }, + "title": { + "maxLength": 200, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + } + ] +}
- Changed
publish_file1 field changed- changed
Input schema / properties / manifest / descriptionPrevious value: -"Optional manifest fields, the same as finalize_upload (theme / theme_switch / chrome / scene / share / sections / actions …). For one file the entry comes from filename; with files you may set entry to choose the entry page. title defaults to the title above."New value: +"Optional manifest fields, the same as finalize_upload (theme / theme_switch / chrome / scene / share / sections / actions …). For one file the entry comes from filename; with files you may set entry to choose the entry page. title defaults to the title above. Page settings can ride along here too (page contract): name (page name) · folder (null = out of any folder) · folder_link (shared through the folder link) · path (workspace address) · forms (same fields as set_form, no amount) · analytics.replay (session recording) · tag; anything left out is untouched, and page_settings in the result reports each item."
1 tool update
- Changed
set_data1 field changed- changed
Input schema / properties / identity / descriptionPrevious value: -"Reader WeChat profile (pilot workspaces only): off = anonymous (default) · wechat = only readers who tapped “Join with WeChat”, each row carries _by (nickname, avatar) · wechat_optional = rows carry the profile when the reader authorised, anonymous otherwise. The page reads the current reader with space.me() and asks for authorisation with space.me.request(). Passing it alone only flips the switch"New value: +"Reader WeChat profile: off = anonymous (default) · wechat = only readers who tapped “Join with WeChat”, each row carries _by (nickname, avatar) · wechat_optional = rows carry the profile when the reader authorised, anonymous otherwise. The page reads the current reader with space.me() and asks for authorisation with space.me.request(). Passing it alone only flips the switch"
1 tool update
- Changed
set_data2 fields changed- added
Input schema / properties / identityAdded value: +{ + "description": "Reader WeChat profile (pilot workspaces only): off = anonymous (default) · wechat = only readers who tapped “Join with WeChat”, each row carries _by (nickname, avatar) · wechat_optional = rows carry the profile when the reader authorised, anonymous otherwise. The page reads the current reader with space.me() and asks for authorisation with space.me.request(). Passing it alone only flips the switch", + "enum": [ + "off", + "wechat", + "wechat_optional" + ], + "type": "string" +} - added
Input schema / properties / identity_visibilityAdded value: +{ + "description": "Who sees participants' nicknames and avatars: all = every reader (default) · author = only the author and workspace members. Passing it alone only flips the switch", + "enum": [ + "all", + "author" + ], + "type": "string" +}
1 tool update
- Changed
set_reader_view1 field changed- added
Input schema / properties / reader_subscribeAdded value: +{ + "description": "The “Subscribe” bar at the end of this page: true shows it (default) · false turns it off. Only readers of passcode / public pages see it; free accounts can set it; requires proposal_id", + "type": "boolean" +}
2 tool updates
- Changed
set_folder7 fields changed- added
Input schema / properties / hideAdded value: +{ + "description": "在合集目录里隐藏(不改它的可见性,合集链接照样能进)", + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" +} - added
Input schema / properties / layoutAdded value: +{ + "anyOf": [ + { + "properties": { + "hidden": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 500, + "type": "array" + }, + "pinned": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "rest": { + "enum": [ + "auto", + "none" + ], + "type": "string" + }, + "sections": { + "items": { + "properties": { + "items": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "title": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "title", + "items" + ], + "type": "object" + }, + "maxItems": 12, + "type": "array" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "合集门户的整份排版(替换);null = 回到「最新在前」" +} - added
Input schema / properties / pinAdded value: +{ + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" +} - added
Input schema / properties / restAdded value: +{ + "description": "auto = 没排进去的页面按时间接在最后;none = 只出排进去的", + "enum": [ + "auto", + "none" + ], + "type": "string" +} - added
Input schema / properties / sectionsAdded value: +{ + "items": { + "properties": { + "items": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "title": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "title", + "items" + ], + "type": "object" + }, + "maxItems": 12, + "type": "array" +} - added
Input schema / properties / showAdded value: +{ + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" +} - added
Input schema / properties / unpinAdded value: +{ + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" +}
- Added
set_home
1 tool update
- Added
rename_workspace
Related MCP Connectors
Publish a temporary HTML page from your agent with no account or token; public link, 7 days.
Publish HTML or markdown from your agent as a shareable link, with password or work-email walls.
Publish HTML pages and live dashboards from your agent to a link that stays up to date.
Publish pages your agent writes to a private, shareable URL, then read, comment on and update them.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables users to upload, share, preview, and publish a generated HTML page from an agent, returning a stable link and version link after browser-authorized access.12 npmMIT No Attribution
- AlicenseAqualityCmaintenanceEnables agents to retrieve public WeChat Official Account articles as clean Markdown or JSON and parse saved WeChat HTML through MCP tools.22MIT
- AlicenseAqualityBmaintenanceEnables agents to fetch a public web page or WeChat article in one call and receive complete Markdown, locally saved images, JSON metadata, offline HTML, and optional PDF, with paginated continuation when output is truncated.2MIT
- AlicenseAqualityCmaintenanceEnables agents to manage WeChat Official Account backends by creating and editing drafts, uploading and localizing article images, managing permanent materials, and publishing articles with status checks.14MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.