Skip to main content
Glama

独行录 / opcmenu

提交报名

submit_signup
Idempotent

【需要登录】【何时用】用户说「帮我报这场」时调它。只传这次要新填/要改的答案:handler 先读一遍全部现值(上一版提交 + 跨表单复用层 + 主页/公司/产品推导),打上补丁后提交全集。

【组合链】get_signup_activity(slug) 看 viewer.missingRequired → 问用户 → 本工具 answers=[{key,value}] 提交 → 之后用 list_my_signups 跟进 reviewStatus。撞「已截止」时返回体自带替代场次(exits[].detail.alternatives)。

【口径/坑】① 省略 ≠ 清空(客户端有确认页、agent 没有,所以不继承服务层「传了 answers 就以它为全集」那条语义)。真要清空某题,把 key 放进 clearKeys——它会连跨表单复用层那一行一起删(否则下次报别的表又被解析回来;文件行不删)。② type=file 的附件题(BP/营业执照)agent 传不了,会整键省略以保住已传文件,绝不许拿文件名或链接当答案。③ 合并后仍缺必填项时不提交,返回 missing_required_fields + 逐条要问什么,问完再调一次。④ 返回 delivery.kind='webview' 时报名还没投到主办方源站,站内只存了留资和代填答案——此时逐字禁止对用户说「已报名成功」,必须说「站内已留档,还要在主办方表单上完成提交」,并把 delivery.url 给他。⑤ 重提会以合并全集覆盖上一版。证件号这类敏感题明文是加密存的、读不回来:上版填过而这次没给值会直接拒(sensitive_answer_would_be_wiped,提交上去就抹成空且不可恢复)——按 exits 让用户重说一遍,或放进 clearKeys。⑥ channel 恒为 'agent',主办方看得见这笔是代提的。⑦ 挂了报名协议的场必须先 get_activity_agreement 念全文、拿到明确同意,再带 agreement={versionId,accept:true};这会落签署记录与审计日志,绝不许你替用户勾。不带就撞 activity_agreement_required(自带出口)。⑧ requiresAppActivation=true 的场只拿得到 App 激活预留位、不落报名单,返回 signup_reserved_pending_app_activation 而不是「已提交」。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugYes活动 slug
answersNo这次要新填/要改的答案。没传的题**不会被清空**(自动沿用现值)
agreementNo报名协议确认,可选。versionId 取自 get_activity_agreement;**只有把协议全文念给用户、他明确说同意之后才许带**(这是会留签署记录与审计日志的法律行为)
clearKeysNo要显式清空的题目 key(用户明说「把微信号删掉」才用;不传就一个都不清)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / agreement
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "报名协议确认,可选。versionId 取自 get_activity_agreement;**只有把协议全文念给用户、他明确说同意之后才许带**(这是会留签署记录与审计日志的法律行为)",
      +  "properties": {
      +    "accept": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "versionId": {
      +      "maxLength": 100,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "versionId",
      +    "accept"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Extremely rich disclosure far beyond the sparse annotations: omission-never-means-clear semantics, clearKeys cross-form row deletion, forbidden '已报名成功' phrasing when delivery.kind='webview', irrecoverable sensitive-answer wiping (sensitive_answer_would_be_wiped), channel always 'agent', requiresAppActivation returning a reservation instead of a submission, and the legal prohibition on checking the agreement box for the user. The description surfaces destructive edge cases (permanent wipe, row deletion) that destructiveHint=false under-reports, and idempotent re-submit semantics are explained consistently — no contradiction.

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 long, but it is sectioned (需要登录/何时用/组合链/口径/坑), numbered, and front-loaded with the trigger condition. The length is earned by the tool's complexity and the severe failure modes it prevents. Minor redundancy: the agreement requirement appears both in the chain and in point ⑦.

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, the description compensates by documenting every noteworthy return signal: missing_required_fields, delivery.kind='webview', activity_agreement_required, sensitive_answer_would_be_wiped, and signup_reserved_pending_app_activation. It also names the follow-up tool (list_my_signups) and the prerequisite reader (get_signup_activity). An agent has everything needed to call this safely end-to-end.

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

Parameters5/5

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

Even with 100% schema coverage, the description adds critical semantics the schema cannot: answers is a patch (only new/changed fields), omitted answers are preserved server-side, clearKeys additionally removes the cross-form reuse row and is reserved for explicit user requests, file-type answers must be omitted entirely, and sensitive answers cannot be read back so omitting them triggers rejection. This materially changes how an agent fills every parameter.

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 and resource ('提交报名' via answers patch on a signup activity) plus the exact trigger phrase 「帮我报这场」. It distinguishes itself from read-only siblings like get_signup_activity and list_my_signups by framing it as the submission step in a chain.

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 and 【组合链】lays out the full orchestration: get_signup_activity(slug) → check viewer.missingRequired → ask user → submit → follow up with list_my_signups. It also names mandatory preconditions for agreement-bound events (get_activity_agreement first) and exclusions (file-upload questions agent cannot answer). 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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources