Skip to main content
Glama

Server Details

Turn finished agent work into a shareable, updatable web page that opens in WeChat. OAuth required.

Ownership verified
Status
Healthy
Uptime
21.1% over 46 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 67 tools

Disambiguation3/5

Every tool targets a distinct action, but several clusters overlap heavily and require careful reading to separate: the upload-route tools (publish_file, create_upload_link, create_upload_session, finalize_upload, create_cli_token), the version-reading tools (get_version vs read_version vs list_versions vs preview_version), and the feedback tools (add_external_feedback, list_feedback, list_my_feedback, send_feedback_to_livepage, reply_feedback). The descriptions do include explicit routing guidance ('Which upload route…'), which rescues an otherwise ambiguous set, but an agent can still easily misselect.

Naming Consistency5/5

All 67 tools follow a strict verb_noun snake_case pattern (create_proposal, list_versions, set_visibility, revoke_share_link, remove_member). No camelCase, no mixed verb styles, and the verbs are used consistently across resource families (get_/list_/set_/create_/remove_/revoke_/publish_). Names are predictable and readable throughout.

Tool Count2/5

67 tools is very heavy and well past the range where an agent can hold the surface in mind, with multiple near-sibling tools per feature area (five upload-route tools, six feedback tools, seven member/invite tools). The domain is genuinely broad, so the count is not arbitrary, but it is still an unwieldy surface for reliable tool selection.

Completeness5/5

The surface covers the full publishing lifecycle (create, upload, publish, version/rollback, delete/restore, revoke), folders, data tables and forms, feedback in and out, membership and invitations, analytics/sessions/replay, payments, and phone verification. Deliberate gaps (creating long-lived tokens only in the web console) are explicitly documented rather than silent dead ends.

Available Tools

67 tools
add_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
anchorNo
sourceNoother
version_idNo
visibilityNoDefault all (client-visible); internal means an internal note.
proposal_idYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoeditor
user_idYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
row_idYes用 list_data_rows 拿到的 row_id
proposal_idYes

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
linkYes用户贴来的方案空间链接,原样传(带参数也行)
titleNoTitle of the copy; omitted = the original title plus “(copy)”.
folder_idNoWhich of your folders to put it in; omitted = not in any folder.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond annotations: discloses the copy is an unpublished draft, that it is independent from the source thereafter, that it counts toward storage quota, and that copying requires allow_copy and an unlocked link. These are behavioral traits the structured fields do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the primary trigger and followed by bulleted consequences, so structure is strong; however the description is fairly long and some quota/moderation detail is secondary for the immediate call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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, the description covers what is created, its visibility, error outcomes and the entire downstream workflow, so an agent has everything needed to call it and proceed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline applies: the schema already documents link, title (with '(copy)' default) and folder_id. The description mentions link only implicitly ('the user pastes a LivePage link') and adds no format or syntax detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('copies the version readers currently see into a new page in your own workspace') and names the trigger context, distinguishing it from create_proposal and 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it (user pastes a LivePage link and asks to copy/edit/rewrite), enumerates exact error conditions (403 copy_not_allowed, 410 revoked/expired) and instructs not to work around them, and routes the agent to read_version/publish_file/finalize_upload as follow-ups.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
introNoIntroduction shown at the top of the folder page when no cover is selected.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
internalNoWhen true, this page is not shared through the folder link.
folder_idNoDestination folder; omit to keep it out of any folder. Use list_folders first to find an existing folder.
allow_copyNoAllow anyone with the link to copy it into their own workspace with copy_proposal (not allowed by default).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoWhat 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.
filesYes
proposal_idYes

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_proposalDelete pageA
Destructive
Inspect

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 for good (content, versions, page images, reading records and viewer-appended rows all cease to exist; not reversible). To erase it immediately, use the web console, where the consequences are spelled out. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYes原样传这个页面的标题 —— 删错了 30 天内能恢复,但链接会立刻失效
proposal_idYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although annotations already flag destructiveHint=true and idempotentHint=false, the description goes well beyond them: it names what ceases to exist (content, versions, page images, reading records, viewer-appended rows), the 30-day reversibility window, the point of no return, and the report-blocking constraint. This is exactly the extra context a destructive 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Consequences are front-loaded and nearly every clause carries information. It is a single dense paragraph, and the web-console digression is slightly tangential, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no output schema, the definition covers consequences, reversibility window, irreversibility, blocking preconditions, the confirmation guard, and the alternative recovery tool. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, so the description must carry meaning for the undocumented parameter — and it does for confirm, explaining the exact-title-repeat guard and its purpose (avoid deleting the wrong page), plus routing to list_proposals. proposal_id itself is still left to inference from its name and the referenced lookup tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Delete a page") and immediately enumerates the exact effects: link breaks, removal from page list/analytics/folders, reader-facing 404. This clearly separates it from siblings like restore_proposal (the inverse) and list_proposals (the lookup step).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names alternatives and conditions: use restore_proposal within 30 days, use the web console for immediate erasure, and check with list_proposals before calling. It also states a hard prerequisite — pages with unresolved reports cannot be deleted until the report is resolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

finalize_uploadCheck uploaded filesInspect

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. Set hold=true whenever the user has not explicitly approved releasing this version, then provide its preview URL for review. Keywords: publish · web page · webpage · link · share · share to WeChat · WeChat link · html · pdf · markdown · upload · LivePage · proposal.

ParametersJSON Schema
NameRequiredDescriptionDefault
holdNoTrue keeps the approved version waiting to publish until the user confirms; then call publish_version. Default false: approval automatically makes this version live.
quietNotrue = 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
manifestYes
version_idYes
download_basisNoThe basis returned by preview_downloads, used to detect later configuration changes.
get_dataRead data tablesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNoTable name; omit to list every table
formatNoWith table only: csv also returns CSV text (default json)
proposal_idYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 settingsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 activityB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDefault: 30
proposal_idYes

TDQS

B3.4/5.0
Behavior5/5

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.

Conciseness2/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 activityB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
folder_idYes
include_internalNo

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_replay_settingsRead recording settingsA
Read-onlyIdempotent
Inspect

Read the workspace recording switch, used storage, separate capacity, per-visit limit and retention. Basic reading activity is independent of this switch.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 timelineA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 statusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
version_idYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoValidity in days
roleNoeditor creates, publishes and shares pages; viewer is read-only.editor

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 credentialsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_revokedNo连已撤销 / 已过期的一起列(默认 false,只列还能用的)

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 viewers
Read-onlyIdempotent
Inspect

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. Act on a held row with set_data_row_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo默认 100
sinceNoOnly rows after this point (oldest first): the next_since from the last reply, a row_id, or an ISO time
tableNo只看这张表;不传 = 全部表
statusNoapproved = 过审、读者可见;held = 审核命中、只有你看得到
proposal_idYes
list_examplesBrowse built-in examplesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoWhich example to read (its key from the catalogue). Omit it to get the whole catalogue.
fileNoWhich file in the package to read (relative path). Use together with key; omitted means the entry file.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 feedbackB
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
version_idNo
proposal_idYes

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 foldersA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 membersA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 teamA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to return at most; default 20.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 pagesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch page titles; can be combined with folder_id.
folder_idNoOmit for all pages; a folder ID lists that folder; null lists only pages not in any folder.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 visitsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDefault: 30
link_idNo
proposal_idYes
include_internalNo

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 pageA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYes哪一个页面,来自 list_proposals

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYesnull = not in any folder
proposal_idYes

TDQS

A3.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 materials
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
manifestYes
version_idYes
preview_versionCheck published appearanceA
Read-onlyIdempotent
Inspect

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 switches between desktop, mobile, in-WeChat and small-screen sizes, or compares desktop and mobile side by side. 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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
panelNodocument
themeNodefault
wait_msNo
audienceNovisitor
viewportsNo
version_idYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Well beyond the read-only/idempotent annotations: it discloses the 60-minute link lifetime, that screenshots are disabled (screenshot_status is disabled), no-login access, temporary single-version access scope, and that default visitor audience omits speaker notes. It also caps expectations honestly by stating device emulation does not verify real phones, WeChat, or cross-device control.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the returned artifact, and nearly every sentence earns its place by adding behavioral constraints. The trailing keyword block is somewhat boilerplate filler, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 describe the return value, and it does (interactive_url, 60-minute validity, no images returned). Combined with the lifetime, access, and audience caveats, an agent has everything needed to call it and hand off the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters, so the description carries the load. It does add real meaning for audience ('Default visitor audience never includes speaker notes') and viewports (switching and side-by-side comparison), but page, panel, theme, and wait_ms are never explained, leaving most of the parameter surface undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns an interactive preview link (interactive_url) into the real SPACE viewer for a given version. The negative list (does not publish, record visits, submit feedback, edit access, join live rooms) cleanly separates it from publish_version and the set_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear directive on what to do with the result ('hand interactive_url to the requesting user') and a caution ('share only with the requesting user'). It stops short of naming a specific alternative sibling (e.g., preview_downloads or read_version) and the condition that would select it, so it is strong context rather than full when/when-not routing.

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)Inspect

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. 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: set hold=true whenever the user has not explicitly approved releasing this version, then give them the preview URL before publish_version. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
holdNoTrue keeps the approved version waiting to publish until the user confirms; then call publish_version. Default false: approval automatically makes this version live.
noteNoWhat 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.
filesNoA web page made of several files (page, styles, scripts and so on), or files at public URLs; use this or filename / content.
quietNotrue = 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
titleNoTitle for a new page; with proposal_id it becomes this version’s title.
contentNoFor one file: its complete text content (UTF-8).
filenameNoFor one file: its name, such as index.html or report.md, without a directory; use this or files.
manifestNoOptional 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.
folder_idNoOnly when creating a new page: destination folder; omit to keep it out of any folder.
proposal_idNoExisting page to add a version to; supply this or title.
publish_versionSwitch live versionA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoWhat 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.
quietNotrue = 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_idYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag destructiveHint=true and idempotentHint=false; the description adds substantial non-obvious behavior: existing versions and comments are preserved, quiet=true suppresses notification to both workspace people and subscribers, and releasing a held version inherits the upload-time quiet choice unless overridden. That is exactly the kind of side-effect and notification context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is front-loaded and every sentence carries behavioral information, but the trailing keyword list ('publish · web page · webpage · link · share ...') is search-engine stuffing that adds length without helping an agent decide or invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 state transition, approval gate, preservation guarantees and notification semantics. The main remaining gap is that it never states what the tool returns or how to detect success/failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and the description meaningfully extends it: it explains the audience affected by quiet ('workspace people or subscribers'), the inheritance rule for held versions, and the notification consequence. version_id itself is undocumented, so it is not a complete semantic picture.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Make an approved version ... publish live, or roll back to an earlier approved version'), with a clear scope that separates it from preview_version, read_version, list_versions and revoke_versions. An agent can tell what state transition this performs 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition: 'Call only after the user explicitly approves publishing or rolling back,' plus a caveat that approved uploads without hold may already be live. It does not name alternative siblings (e.g., publish_file) or say when to prefer rollback vs. publish, so it stops short of full when/when-not routing.

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 WeChatInspect

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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoWho receives it: self (default) = only you; members = the people in this workspace (the creator plus every member)
proposal_idYes要推哪一份,`list_proposals` 里的 proposal_id
include_subscribersNotrue = 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
read_versionRead this version’s bodyA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNo包内相对路径;不传就读入口文件(get_version 的 artifacts 里 role=main 那个)
version_idYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 memberA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes要移除谁,26 位 user_id(`list_members` 里那个)

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 codeA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 pageA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe new name of the page
proposal_idYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe reply itself. Write it for the reader: it appears verbatim on the page they are looking at.
thread_idYesThe id of the thread to reply to, from list_feedback.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

report_taskReport task: keep a page updated on scheduleAInspect

Report task: keep one page updated on a schedule (daily, weekdays or weekly) at the same link, with the new version pushed to WeChat. When the author says what to cover, what time, who can view and who to notify, call action=create (add trial=true to run one trial right away; without proposal_id a new page is created, so pass title). A trial usually takes 5–15 minutes; the author is notified in WeChat and only the author can see the result. When the author has looked and says to switch it on, call action=enable — a successful trial is required first, and by default that trial becomes the page’s first version. Afterwards use update for the time, the request, an extra line (request_append), who can view or who is notified — pass only what changes; pause (optionally until=a date, resuming that day), resume, delete, list, trial to run another trial, and runs when the author asks whether it went out on time or why one did not. Every action returns say: a sentence to relay to the author as-is; do not invent facts. Ask the author before switching to passcode or public. Speak times in the author’s local clock.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNocreate 且新建一页时:这一页的名字,例如「24好玩 · 行业日报」
trialNocreate:建好立刻试跑一次
untilNopause:暂停到哪天(YYYY-MM-DD,作者当地日期),那天的钟点自动恢复;不给就一直暂停到说「恢复」
actionYescreate 建 · trial 试跑 · enable 开启 · update 改设置 · pause 暂停 · resume 恢复 · delete 删除 · list 看有哪些 · runs 看每一次发了没有
notifyNo新版本发出后提醒谁;缺省三项都提醒
requestNo作者的要求,一段大白话:要看什么、多少条、什么不要。最多 800 字。update 时整段替换
task_idNo要操作的报告任务(create / list 不用;不知道就先 list)
scheduleNo时间表;update 时只传要改的那几项
templateNo用法模板,缺省 daily-brief(行业日报)
visibilityNo谁能看:private 仅工作区成员(缺省)· passcode 凭口令 · public 所有人。改成后两种之前先问作者
proposal_idNocreate:更新哪一页;不给就新建一页
request_appendNoupdate:在原要求后面补一句,不替换原文
publish_trial_as_first_versionNoenable:把最近一次整理成了的试跑发成这一页的新版本(缺省 true)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply the generic safety profile (non-readonly, non-destructive, non-idempotent), but the description adds real behavioral context: a trial takes 5-15 minutes, only the author sees the trial result, every action returns a 'say' sentence to relay verbatim, and the author must be consulted before passcode/public. The local-clock instruction and 'do not invent facts' rule further constrain behavior beyond 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and covers nine actions plus lifecycle in a single dense paragraph with no filler sentence. It would read more clearly as a short bulleted lifecycle, but every clause carries information useful for correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-action, thirteen-parameter tool with no output schema, it covers the create→trial→enable→manage lifecycle, prerequisites, and the 'say' return contract. The only residual gap is that the full task_id workflow (list-then-operate) is implied rather than spelled out, though the schema notes it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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: proposal_id absent means a new page (so title is needed), update takes only what changes, request_append adds rather than replaces, and until resumes on the given date. These clarify usage of key parameters beyond their schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (keep one page updated on a schedule at the same link, pushed to WeChat) and enumerates the full action set. An agent can distinguish this from siblings like push_to_wechat or publish_version 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use mapping for essentially every action: create when the author specifies coverage/time/visibility/notify, enable only after a successful trial, update for later changes, runs when the author asks whether it went out. Prerequisites (a successful trial is required first) and the passcode/public confirmation rule are stated outright.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 credentialA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
token_idYes要撤的那一枚的 token_id(从 list_api_tokens 来 —— 别处给不出)

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 linkA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
invite_idYes要撤销哪一条,`list_members` 的 invites 里那个 invite_id

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 storageA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYes原样传这个页面的标题 —— 撤回的旧版本不能再切回
up_to_seqNo撤回第 1 版到这一版(含);必须小于当前版本号。不传 = 当前版之前的全部
proposal_idYes

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text the user agreed to send (up to 2000 characters).
aboutNoThe proposal_id or version_id of the related page (optional).
sourceNohint = the user is sending this after seeing the “you can send feedback” line (feedback_hint) at the end of a publish result; omit otherwise.
categoryNobug = something broke or is hard to use; idea = a feature they want; other = anything else (default).
attachmentNoAttach one screenshot (optional): the result carries attachment_upload; PUT the image there as it says.
contact_okNo用户明确同意方案空间团队联系他(用账号已绑定的手机号 / 邮箱)才传 true;没说就不传
version_idNoThe version_id of the version where the problem shows (optional, from list_versions); the team will open that exact version.
user_confirmedYesThe user has seen the draft and agreed to send it. Pass true only when they really did.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover safety hints (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false). The description goes far beyond: it explains a two-step confirmation dance, what the platform auto-attaches, the upload flow with a 15-minute URL, the 5 MB limit, the no-terminal limitation, that the team reaches out via account-bound contacts, and what the return value contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, but the paragraph is long and packs many procedural rules into dense prose, which can be hard to parse quickly. Every sentence carries useful information, but the structure could be tightened without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the full lifecycle: draft‑show‑agree step, prerequisites for each optional field, the attachment PUT flow with validity window, what the platform attaches automatically, what the return value includes, how to check status later, and when to redirect to support. No output schema exists, and the description adequately describes the return (id and status).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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. The description adds procedural meaning beyond the schema: the meaning of user_confirmed (must reflect real agreement), contact_ok (only pass when explicit consent given), version_id (to pinpoint a display problem), and how attachment works. It enriches rather than repeats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (send), resource (user's feedback about LivePage itself), and recipient (the LivePage team). It explicitly distinguishes itself from the sibling add_external_feedback by clarifying that this is not a comment on a page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (after the user sees a draft and agrees), when-not-to-use (if they were venting, or want a person instead of leaving a suggestion, use the support link), and names the sibling alternative add_external_feedback. Conditions for user_confirmed, contact_ok, and attachment feasibility are all spelled out.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneYes用户自己的手机号:大陆 11 位,或带国家区号的国际号(如 +85261234567)

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 table
Destructive
Inspect

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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvNoCSV text, first line is the header; either this or rows
rowsNoArray of objects, one per row, keys are column names; either this or csv
tableYesTable name, e.g. items or sales_2026
deleteNotrue = delete this table (no rows or csv needed)
columnsNoOptional: column order and selection (rows only)
revisionYes0 to create; the current value from get_data to replace or delete
append_openNo读者写回开关:true 开、false 关。单独传 = 只翻开关(底表不动,仍要带 revision)
proposal_idYes
members_onlyNoAccept write-back from workspace members only: when true, visitor submissions get 403. Passed alone = only flips the switch (`revision` still required)
set_data_row_statusDecide on a viewer-appended rowA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesapprove = 放行给读者看 · hold = 收回只有你看 · delete = 真删,不可撤销
row_idYes用 list_data_rows 拿到的 row_id
proposal_idYes

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
configYes
revisionYes
version_idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) cover the safety profile, and the description adds substantive behavior: revision-based conflict detection, immediate application to live versions, and that enabled=false disables all download URLs while preserving the list. It omits permissions/auth requirements and returns, but the concurrency semantics are a meaningful addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and then packs constraint details densely; each sentence carries operational information. It is a bit clause-heavy in the middle (label/description/downloadName/showFilename), but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a nested config object, the description covers the mutation semantics, concurrency, and disable behavior adequately. Minor gaps remain around permissions and exactly what the caller should do after a successful write.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 load, and it does: it explains source (or null), ordered attachments, required labels, optional description/downloadName, showFilename defaulting to false, keeping filename extensions, and the enabled toggle. Only revision/version_id semantics are left to inference (partially hinted by the 'read get_downloads first' instruction).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Replace an approved version's download settings without reuploading its content.' This clearly distinguishes a write/config operation from read siblings like get_downloads and preview_downloads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'Read get_downloads first for its revision and candidates' and gives a conflict-handling rule ('read and review again; do not overwrite blindly'), which is real when-to-use guidance. It does not, however, contrast with preview_downloads or state prerequisites such as the version needing to be approved/published.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
thread_idYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
introNo
folder_idYes
cover_proposal_idNoUse null to remove the cover and restore the generated folder page.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), and the description adds real behavioral context beyond them: the cover/page linkage requirement, the null-to-restore semantics, and that the cover renders the page's live version. It omits partial-update semantics (whether unspecified fields are left untouched) and any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the primary action and followed by the cover-specific rules in priority order. The null-reset sentence partially duplicates the schema's own cover_proposal_id description, which is a minor redundancy but not wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter mutation tool with no output schema and reasonable annotation coverage, the description supplies the field list, the cover constraint, and the reset behavior. It stops short of stating permission requirements or whether untouched fields are preserved, which are the only notable gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, with just cover_proposal_id documented inline, so the description does meaningful compensating work by naming the three mutable fields (name, introduction, cover) and reiterating the null-reset behavior for the cover. Only folder_id and the fine-grained format limits remain unexplained by both sources.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Change a folder's name, introduction or cover') and enumerates the mutable fields, so the agent immediately knows this is a partial-update tool for folders. It does not explicitly distinguish itself from siblings like create_folder or list_folders, but the mutation scope is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives conditional rules rather than usage routing: the cover must be a page inside this folder shared through the folder link, and setting cover_proposal_id to null restores the generated index. There is no explicit statement of when to prefer this tool over alternatives, but the constraints imply the intended usage context.

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 block
Idempotent
Inspect

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? }; six types: text (single line), textarea, select (options), multiselect (options, stored joined with 、), number (min / max), phone (11-digit mobile). 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. Share the page after defining the form; the page does not need republishing.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYes表名,例如 signup、orders;提交的行落在这张表
titleNo表单标题,也是查看页里那枚按钮的字,例如「报名」「下单」;缺省「填写」
amountNo显示金额;不传 = 不显示金额
fieldsYes字段定义,按顺序渲染
revisionNo可选:get_data 返回的当前 revision,传了就防并发(不一致 409);不传按当前修订写
append_openNo读者写回开关,缺省 true;false = 表单不显示、提交被拒
proposal_idYes
members_onlyNoAccept submissions from workspace members only (visitors do not see the form and get 403); omitted = keep the current value, false for a new table
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexableYes
proposal_idYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
internalYes
proposal_idYes

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 roleA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYeseditor 建页面 / 发版 / 发链接 · viewer 只读。**不能改成 owner**
user_idYes要改谁,26 位 user_id(`list_members` 里那个)

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 nameA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nicknameYesThe new display name: up to 24 characters, and not empty.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_payment_qrSet the business collection QR codeA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo原文件名,只进审计留个线索;**认图不看它**(叫 .png 的 PDF 照样被拒)
image_base64Yes收款码图片的 base64(可带 data:image/png;base64, 前缀)。PNG 或 JPEG,2 MB 以内

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 notifications
Idempotent
Inspect

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. 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. “WHAT’S NEW” BANNER (per page, off by default): readers who open a page from an update reminder go straight to the latest version with no banner. When the author wants one, pass proposal_id + show_update_note: true — opening the page from a reminder then shows a “What’s new (version N): ” banner at the top with “See what changed”; false turns it back off. Do not turn it on for daily reports rewritten in full every day (“see what changed” means nothing there). Passing only proposal_id + show_update_note (without auto_push / subscribe_code_label) changes just this and issues no code, and needs editor rather than owner; every result with proposal_id says whether it is on or off. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
auto_pushNoPush 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_idNo拿某个文件夹的订阅码时传(`list_folders` 里的 folder_id):扫了订上整个文件夹,夹里有新版本或新的一页都提醒。不能和 proposal_id / 开关一起传
include_meNo自动推送也发给触发发布的那个人本人
proposal_idNo只管这一页时传(`list_proposals` 里的 proposal_id):看 / 改这一页的提醒,并附上这一页的订阅码;不传 = 改整个工作区
unread_remindNo发布七天没人打开时提醒作者一次
show_update_noteNo从更新提醒点进这一页时,顶部出不出「本次更新」横条(+「看改了哪」)。默认关 = 直接看最新版;true = 打开,false = 关回去。需要同时传 proposal_id
remove_subscriberNoRemove 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_labelNo订阅码的备注(≤ 20 字,如「给王总」),只有作者自己看得到;不传 = 这一页的默认码。需要同时传 proposal_id
revoke_subscribe_codeNoRevoke 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
set_replaySet page recordingAInspect

Enable or disable HTML session recording through this page’s link and folder visits. Enabled by default; explicit opt-outs survive 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
onYes
proposal_idYes

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag it as a non-read-only, non-idempotent, non-destructive write. The description goes well beyond that with masking, background pause, 8 MB per-visit cap, 1 GB per-workspace quota, 30-day retention, future-visits-only scope, and precedence rules – exactly the operational context an agent needs before mutating this setting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then packs the behavioral constraints into a dense but purposeful block. Nearly every clause carries a concrete limit or precedence rule, though the middle sentence is heavy enough to require careful parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no return-value expectations needed for a boolean toggle, and the behavioral picture is thorough. The gap is parameter identification, but otherwise an agent has enough to invoke and reason about the effect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and neither parameter is named or explained. The description never clarifies that 'on' is the boolean toggle and 'proposal_id' identifies the target page/link, so an agent must reverse-engineer both from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (enable/disable) and resource (HTML session recording for this page's link and folder visits). The clause about the workspace-wide off switch implicitly distinguishes it from the sibling set_replay_settings, but it never names that alternative, so the differentiation is inferential rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Conveys context (default on, opt-outs persist, workspace switch overrides), which helps an agent understand the setting's behavior, but gives no explicit when-to-use vs set_replay_settings or get_replay_settings, and no prerequisites for calling it.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes

TDQS

A4.1/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 restricts the link to authorized workspace members or approved devices; 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
passcodeNoCustom passcode: 4–16 letters or digits. Omit to generate or retain a passcode.
folder_idNoChange folder visibility, sharing all included pages through one link. Supply exactly one of folder_id or proposal_id.
visibilityYes
proposal_idNoChange one page’s visibility. Supply exactly one of proposal_id or folder_id.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly=false, idempotent=false, destructive=false); the description adds material behavior the annotations cannot: immediate effect, folder-level inheritance overriding private links, separation of excluded items and legacy permissions, and stable-URL semantics. Return/pagination context is absent but not critical for a mutation here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the one-of constraint and the three modes, then layers behavioral notes. Dense and mostly justified, though the trailing sentences on link semantics and 'reading records' are somewhat clipped and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, the description covers effects, inheritance, and cross-tool interactions well. It omits return/confirmation behavior, but 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and the enum for visibility has no inline description in the schema, yet the description defines private/passcode/public precisely and clarifies passcode 'generated or retained when omitted'. It adds real meaning beyond the schema, though the exact passcode format is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Set) and resource (visibility) and immediately scopes it to 'exactly one proposal_id or folder_id'. It also names the sibling reset_default_link and its distinct role, letting an agent separate the two 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear directive ('Confirm external sharing with the user first') and routes URL-reset needs to reset_default_link. It lacks explicit when-not conditions, but the context for use is unambiguous.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
internalNotrue marks the visitor as internal (the default); false undoes it and puts them back into the outward-facing numbers.
visitor_idYesThe visitor id, from any row of list_sessions.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 profileA
Idempotent
Inspect

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. Read-only members cannot call it.

ParametersJSON Schema
NameRequiredDescriptionDefault
usageNoUsage: work (default) means work use, where company name and industry are required; personal allows both to be empty.
industryNoIndustry (required when usage=work); must be one of the listed values.
use_caseNoOne sentence on what you will send and to whom, for example “send the weekly report to my team”.
company_nameNoCompany or organization name (required when usage=work). It appears on WeChat share cards.
customer_typeNoWho your pages are mainly shared with: b2b = colleagues, clients or partners; b2c = friends, family and other individuals.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds substantial context beyond them: merge semantics ('fields passed are merged... omitted fields are left unchanged'), a permission restriction (read-only members cannot call), validation rules mirroring the retired form, and a visible side effect (company name on WeChat share cards).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then conditions, then validation. It is dense rather than bloated, but the required-field rules and mode semantics are repeated between description and schema, costing a little efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param mutation tool with no output schema and no nested objects, the description covers everything an agent needs: merge vs. create behavior, per-mode required fields, validation constraints, permission gate, and the user-visible consequence. 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.

Parameters4/5

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 earns extra credit by explaining non-obvious parameter behavior: company_name is the sole source of the share-card name, placeholder values like 'personal'/'test' are rejected, phone numbers and handles are disallowed, and industry must be from the listed enum. It clarifies conditional requirements without merely restating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Record who this workspace is') and enumerates the exact content domain: company/org name, industry, share audience, and use case. No sibling tool competes with this purpose, and an agent can immediately tell this writes the workspace profile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use conditions: the retired web form makes this the only write path, and it spells out required fields per mode ('with usage=work, company name and industry are required; customer_type and use_case are required in both modes'). It also states the exclusion — read-only members cannot call it — and routes the personal case to usage="personal".

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes用户念给你的 6 位数字验证码

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Addedreport_task
  2. 1 tool update
    • Changedpush_to_wechat1 field changed
      • addedInput schema / properties / to
        Added value: +{
        +  "description": "Who receives it: self (default) = only you; members = the people in this workspace (the creator plus every member)",
        +  "enum": [
        +    "self",
        +    "members"
        +  ],
        +  "type": "string"
        +}
  3. 3 tool updates
    • Changedlist_data_rows1 field changed
      • addedInput schema / properties / since
        Added value: +{
        +  "description": "Only rows after this point (oldest first): the next_since from the last reply, a row_id, or an ISO time",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedset_data1 field changed
      • addedInput schema / properties / members_only
        Added value: +{
        +  "description": "Accept write-back from workspace members only: when true, visitor submissions get 403. Passed alone = only flips the switch (`revision` still required)",
        +  "type": "boolean"
        +}
    • Changedset_form1 field changed
      • addedInput schema / properties / members_only
        Added value: +{
        +  "description": "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",
        +  "type": "boolean"
        +}
  4. 3 tool updates
    • Changedfinalize_upload1 field changed
      • addedInput schema / properties / manifest / properties / chrome
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "default": {
        +      "enum": [
        +        "open",
        +        "collapsed"
        +      ],
        +      "type": "string"
        +    },
        +    "handle": {
        +      "enum": [
        +        "top-right",
        +        "top-left",
        +        "bottom-right",
        +        "bottom-left"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpreview_downloads1 field changed
      • addedInput schema / properties / manifest / properties / chrome
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "default": {
        +      "enum": [
        +        "open",
        +        "collapsed"
        +      ],
        +      "type": "string"
        +    },
        +    "handle": {
        +      "enum": [
        +        "top-right",
        +        "top-left",
        +        "bottom-right",
        +        "bottom-left"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedpublish_file1 field changed
      • changedInput schema / properties / manifest / description
        Previous value: -"Optional manifest fields, the same as finalize_upload (theme / theme_switch / 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."
  5. 1 tool update
    • Changedset_publish_notify1 field changed
      • addedInput schema / properties / show_update_note
        Added value: +{
        +  "description": "从更新提醒点进这一页时,顶部出不出「本次更新」横条(+「看改了哪」)。默认关 = 直接看最新版;true = 打开,false = 关回去。需要同时传 proposal_id",
        +  "type": "boolean"
        +}
  6. 7 tool updates
    • Changedcreate_upload_link1 field changed
      • changedInput schema / properties / note / description
        Previous value: -"Version note, for example: V2, revised pricing after client feedback."New value: +"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."
    • Changedcreate_upload_session1 field changed
      • changedInput schema / properties / note / description
        Previous value: -"Version note, for example: V2, revised pricing after client feedback."New value: +"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."
    • Changedfinalize_upload1 field changed
      • addedInput schema / properties / quiet
        Added value: +{
        +  "description": "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",
        +  "type": "boolean"
        +}
    • Changedpublish_file2 fields changed
      • changedInput schema / properties / note / description
        Previous value: -"Version note, for example: V2, revised pricing after client feedback."New value: +"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."
      • addedInput schema / properties / quiet
        Added value: +{
        +  "description": "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",
        +  "type": "boolean"
        +}
    • Changedpublish_version2 fields changed
      • addedInput schema / properties / note / description
        Added value: +"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."
      • addedInput schema / properties / quiet
        Added value: +{
        +  "description": "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",
        +  "type": "boolean"
        +}
    • Changedpush_to_wechat1 field changed
      • addedInput schema / properties / include_subscribers
        Added value: +{
        +  "description": "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",
        +  "type": "boolean"
        +}
    • Changedset_publish_notify8 fields changed
      • addedInput schema / properties / auto_push / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / auto_push / description
        Previous value: -"有新版本发布时自动推到微信"New value: +"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"
      • removedInput schema / properties / auto_push / type
        Removed value: -"boolean"
      • addedInput schema / properties / folder_id
        Added value: +{
        +  "description": "拿某个文件夹的订阅码时传(`list_folders` 里的 folder_id):扫了订上整个文件夹,夹里有新版本或新的一页都提醒。不能和 proposal_id / 开关一起传",
        +  "maxLength": 26,
        +  "minLength": 26,
        +  "type": "string"
        +}
      • addedInput schema / properties / proposal_id
        Added value: +{
        +  "description": "只管这一页时传(`list_proposals` 里的 proposal_id):看 / 改这一页的提醒,并附上这一页的订阅码;不传 = 改整个工作区",
        +  "maxLength": 26,
        +  "minLength": 26,
        +  "type": "string"
        +}
      • addedInput schema / properties / remove_subscriber
        Added value: +{
        +  "description": "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",
        +  "maxLength": 16,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / revoke_subscribe_code
        Added value: +{
        +  "description": "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",
        +  "maxLength": 40,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / subscribe_code_label
        Added value: +{
        +  "description": "订阅码的备注(≤ 20 字,如「给王总」),只有作者自己看得到;不传 = 这一页的默认码。需要同时传 proposal_id",
        +  "maxLength": 40,
        +  "type": "string"
        +}
  7. 66 tool updates
    • First observedadd_external_feedback
    • First observedadd_member
    • First observedconfirm_payment
    • First observedcopy_proposal
    • First observedcreate_cli_token
    • First observedcreate_folder
    • First observedcreate_proposal
    • First observedcreate_upload_link
    • First observedcreate_upload_session
    • First observeddelete_proposal
    • First observedfinalize_upload
    • First observedget_data
    • First observedget_downloads
    • First observedget_engagement_summary
    • First observedget_folder_analytics
    • First observedget_replay_settings
    • First observedget_session_timeline
    • First observedget_version
    • First observedinvite_teammate
    • First observedlist_api_tokens
    • First observedlist_data_rows
    • First observedlist_examples
    • First observedlist_feedback
    • First observedlist_folders
    • First observedlist_members
    • First observedlist_my_feedback
    • First observedlist_proposals
    • First observedlist_sessions
    • First observedlist_versions
    • First observedmove_proposal
    • First observedpreview_downloads
    • First observedpreview_version
    • First observedpublish_file
    • First observedpublish_version
    • First observedpush_to_wechat
    • First observedread_version
    • First observedremove_member
    • First observedremove_payment_qr
    • First observedrename_proposal
    • First observedreply_feedback
    • First observedreset_default_link
    • First observedrestore_proposal
    • First observedrevoke_api_token
    • First observedrevoke_invite
    • First observedrevoke_share_link
    • First observedrevoke_versions
    • First observedsend_feedback_to_livepage
    • First observedsend_phone_code
    • First observedset_data
    • First observedset_data_row_status
    • First observedset_downloads
    • First observedset_feedback_status
    • First observedset_folder
    • First observedset_form
    • First observedset_indexable
    • First observedset_internal
    • First observedset_member_role
    • First observedset_nickname
    • First observedset_payment_qr
    • First observedset_publish_notify
    • First observedset_replay
    • First observedset_replay_settings
    • First observedset_visibility
    • First observedset_visitor_internal
    • First observedset_workspace_profile
    • First observedverify_phone_code

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources