LUNO — AI Backend Platform
OfficialLUNO MCP server gives AI agents a hosted backend platform to build content schemas, operate entries and media, and propose governed changes via MCP tools.
Explore project overview, tenant schema, form sets, entries, revisions, master entities, media, contact forms, locales, and login branding.
Create/update entries, bulk-create entry shells, save revisions, preview drafts, submit for review, and publish with idempotency keys and optional human-approval gates.
Apply form blueprints and builtin form templates (with dry-run previews), and archive form sets as soft-delete.
Validate/apply master blueprints, create master records, migrate enum fields to master references, and rename master record slugs via preview + change plans.
Create/update contact forms with localized fields, required rules, and autoreply settings.
Upload media via filePath/sourceUrl/base64 and use returned asset UUIDs in content snapshots.
Propose multi-step change plans for human approval and track their status.
Start/end/get agent runs for activity/metrics correlation.
Search/read/ask the admin help knowledge base.
Manage login appearance, login IP allowlists, and content locale settings where permissions allow.
Get local MCP runtime info (package version, tool count, API contract) without calling LUNO.
Enforced guardrails: dry-run previews for mutation tools, idempotent retries, scoped agent keys, and no hard-delete for agents.
LUNO — AI-era Backend Platform
Agents BUILD / OPERATE. Humans REGISTER / GOVERN. Applications CONSUME.
LUNO is a hosted backend platform — not a website builder, not an open-source CMS, and not an MCP server product. MCP is how your agent connects to LUNO. CMS and forms are capabilities; the product category is AI-era Backend Platform.
BUILD | AI agents define schemas, forms, and backend structure via blueprints and templates. |
OPERATE | Agents read and change content, media, auth settings, and other backend resources. |
GOVERN | Humans control production through scoped agent keys, approval workflows, publish gates, and safety controls. |
Quick start
npx -y @luno-cms/mcp setupWorks with Claude Code, Cursor, and Codex. Issue an agent key in the LUNO Console → MCP / API / Hook → API / MCP.
Glama / MCP directory: “Install Server” requires a hosted API key and may show This server cannot be installed. Use
npx -y @luno-cms/mcp setupinstead — see Quick start (recommended) below.
Production safety by design
Scoped agent keys — restrict to content-only or full backend access
Human approval — keys without publish permission stop at review (
pendingHumanApproval)Destructive-action protection — agents cannot hard-delete; archive requires confirmation
Dry runs & confirmation tokens — preview schema changes before applying
Idempotent operations — safe retries after timeouts
Audit trail — agent activity and audit logs in Console
Agent-readable by design
MCP schemas and tool descriptions were redesigned for agent readability. In a blind test, the same backend task went from 142 tool calls to 11, with 0 errors — application behavior unchanged.
MCP Resources (#90)
Static Resources (resources/list, resources/read) ship agent-readable guides without Admin API calls:
URI | Topic |
| Field types + snapshot shapes |
| Form Set / entry / revision hierarchy |
| Draft → publish, |
| Scopes, blocked actions, archive token |
| Tool cheat sheet (not full OpenAPI) |
Inventory: docs/RESOURCES.md. Live per-tenant schema: get_form_set_schema tool.
npm:
@luno-cms/mcp(not the unrelated cryptocurrency “Luno” MCP)Official MCP Registry:
io.github.luno-cms/mcpGlama:
luno-cms/mcpmcpservers.org:
luno-rest·Source:
github.com/luno-cms/mcpSite: luno.rest · Docs: doc.luno.rest
Directory checklist: docs/DISCOVERY.md
Product docs (EN): AI Agents · doc.luno.rest
Product docs (JA): AI Agents
Quick start (recommended)
From your site repository root, pick one AI agent and run setup (Claude Code / Cursor / Codex). The CLI opens the browser to confirm. Do not paste a key into the agent chat. Use --key or --no-browser only when you cannot use the browser.
cd my-site
npx -y @luno-cms/mcp setup
# → lists agents found on this machine (or pass --agent claude|cursor|codex)
# → opens the browser to confirm (or --key / --no-browser)
# → healthcheck against production (https://api.luno.rest/admin)Choice | What gets written |
Claude Code |
|
Cursor |
|
Codex |
|
Shared: .agents/luno/{dev,stg,prod}.env (keys; gitignored). Public default is prod (luno-prod). dev / stg stay on disk for explicit setup --env stg / run stg / env switch stg.
Then:
Open the project in the chosen agent
Approve workspace trust / MCP if prompted
Ask:
List the form sets on this LUNO, or draft one entry. Don't publish or change the schema.
Later: teammates run npx @luno-cms/mcp login. Use --env stg only if you have access.
Verified clients: Claude Code / Cursor / Codex (Golden Path E2E).
Post-setup notes by client
Client | Notes |
Claude Code | If tools are missing, reconnect ( |
Cursor | Settings → MCP: enable |
Codex | Project |
/luno is an optional shortcut after setup. It is not required, and it must not ask for a key.
After a teammate clones (.mcp.json is there, keys are not):
npx @luno-cms/mcp login
# or: npx @luno-cms/mcp login --key 'sk-agent-…'login refreshes .agents/luno/<env>.env only. It does not rewrite MCP config. Use the same command for expired keys or 401. First-time machines still run setup.
Non-interactive:
npx @luno-cms/mcp setup --agent claude --yes --key 'sk-agent-…'
npx @luno-cms/mcp login --key 'sk-agent-…'
npx @luno-cms/mcp env statusExplicit staging (internal / Benchmark / Partner only):
npx @luno-cms/mcp setup --env stg --key 'sk-agent-…'
npx @luno-cms/mcp run stgIssue keys in Console → Settings → Agent API keys (per env / per site). Default scope full (content + form definitions). Use content to restrict to articles only.
Rate limits: per agent key to Admin API — 60 req / 60s (Free / Solo) or 300 / 60s (Standard+). Over limit → HTTP 429 + RATE_LIMITED + Retry-After. Console JWT traffic is not limited this way. Details: AI Agents rate limits.
Scope | When to use |
full (recommended) | Articles + Form Set / Contact / Blueprint |
content | Create / update / publish articles only |
schema | Same privileges as |
Related MCP server: clawshow
Environment / CLI
Variable | Example | Description |
|
| Admin API base (include |
|
| Agent API key |
npx @luno-cms/mcp --version # print package version (no MCP start)
npx @luno-cms/mcp # start MCP from env vars
npx @luno-cms/mcp run prod # load .agents/luno/prod.env then start
npx @luno-cms/mcp setup
npx @luno-cms/mcp env …Generated MCP configs use npx -y @luno-cms/mcp@latest run <env> so reconnect fetches the newest publish (avoids a stale unpinned npx cache). Re-run npx @luno-cms/mcp setup (or edit mcp.json) if a site still has the unpinned spec, then /mcp reconnect — do not hand-bump a version pin. Confirm the running package with --version or get_mcp_runtime.
MCP server names: luno-dev / luno-stg / luno-prod
Cursor Plugin (optional)
For Cursor Marketplace / local plugin setup, see the LUNO Console onboarding. For normal site work, prefer npx @luno-cms/mcp setup above.
Multiple keys at once
One MCP entry = one key. Split by site or scope with different MCP server names. Active key limits depend on plan.
Resuming an existing project
get_project_overview— project summary +intentCapabilities(recommended first)Contact / inquiry →
create_contact_form(dryRun: truefirst). Content → matchpurposeLabelsthen a templateThen
get_form_set_schema/list_entriesas neededSeparate from greenfield Golden Path (builtin template → entry → publish)
Tools
Content (content scope and above)
Tool | Description |
| Project summary + |
| Full project schema |
| Form Set list / definition ( |
| Agent key |
| Entry list / detail |
| Create entry / bulk create (≤50 slugs) / update slug |
| Revisions / preview URL for human review / publish ( |
| Submit for approval |
| Media list |
| Upload ( |
| Master entities |
| List / create records ( |
| Update records / tree (not available with agent keys — see below) |
| Content locale settings (includes |
| Update locales (tenant_admin JWT only) |
| Search Console help KB |
| One help article (Markdown) |
| Help RAG Q&A (related articles if LLM unset) |
| AI locale batch translate (Standard+, 1 ticket / run) |
| Login branding (no auth; includes |
| Login appearance settings (auth required) |
| Update login appearance (background=Standard+, WL=Business+) |
| Login IP allowlist (Business+) |
| Add IP rule (tenant scope) |
| Delete IP rule |
Master update limits: agent keys have no userId; update_master_record / update_master_tree need a user JWT with master_record_edit_allowed or tenant_admin. List / create (create_master_record) work with content scope. Creating master definitions uses apply_master_blueprint (schema scope), not POST /master-entities.
Multilingual master labels: label may be a plain string (default locale) or a locale map. When site multilingual is OFF, only default is stored. Blueprint record.label stays a plain string (normalized internally).
Master record color: optional #RRGGBB on create_master_record, update_master_record (user JWT), and apply_master_blueprint records. Omit keeps an existing color (create = none). null clears. #fff / named colors are rejected.
Locale translation: call translate_entry_locales with a content-scope agent key, merge returned items into the snapshot, then save_revision. Returns 400 if site multilingual is OFF.
Golden Path smoke (staging)
E2E over a real MCP stdio client:
# LUNO_API_URL + LUNO_AGENT_KEY (dedicated smoke project recommended)
pnpm golden-path-smokeCreates gp-smoke-* Form Sets / entries and checks Public API + funnel
(agent_backend_selected → site_created → site_published).
Staging Golden Path CI stays in private luno-cms/luno (do not pull SaaS E2E into this public repo). CI here is unit test / typecheck / pnpm public-audit.
Troubleshooting for agents
Symptom | Next step | Retry same input? |
Missing required args (Zod) | Fill required fields from the tool schema | No |
Slug already exists (+ hint) |
| No |
REVISION_CONFLICT |
| No |
401 Invalid agent key |
| No |
429 | Wait | Yes (after wait) |
Resend create after timeout | Same | Yes (keyed creates) |
Wrong Form Set / Contact created | No delete tools (by design). Site admin deletes in Console, or leave orphan. | No |
Published wrong article |
| Yes |
APIs may return error.hint / error.retryable. See AI Agents docs.
Verify changes: Console → Settings → Agent activity (Free/Solo: last 7 days). Standard+ also has Audit logs → Agents only.
Idempotency (retries)
The Console does not send keys. Without a key, behavior is unchanged. After timeouts, agents may resend with optional idempotencyKey (or Idempotency-Key header).
MCP tool | No key | Same key replay |
| Apply each time / slug clash → 409 | Replay same 201 body |
| Same | Same |
| New / slug clash → 409 | Same entry |
| Always new revision | Same revision row |
| New / slug clash → 409 | Same |
| Existing | (no separate key needed) |
Schema tools (schema scope required)
Tool | Admin API |
| (local — no Admin call) package version, tool count, capability contract. Listed tool ≠ hosted API deployed |
|
|
|
|
|
|
|
|
|
|
|
|
| Preferred: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Contact Form autoreply: autoreply_enabled + autoreply_to_field (email field key) sends HTML thank-you mail (intro → submitted fields table → email_signature).
Contact Form fields: not Form Set / Blueprint fieldKey shape. Each item is { key, type, label: { ja, en }, required }. See admin-help agent.contact-form-mcp.
Field types and snapshot value shapes (for apply_form_blueprint type and entry snapshots):
type | Snapshot value | Notes |
| string | select/radio use master value ( |
| Tiptap doc (JSON) or string | rich text |
| number | |
| boolean | |
|
| |
| string[] |
|
| asset UUID string | from |
| UUID strings or | no |
| referenced entry id string |
Snapshot nesting: always { [formKey]: { [fieldKey]: value } }. Use snapshotShape.example from get_form_set_schema. Flat top-level fieldKeys → 400.
Images: do not put external image URLs in the snapshot. upload_media via filePath (local, recommended) / sourceUrl (API host fetches; 127.0.0.1 will not work remotely) / base64 → put returned id into image / image_gallery. Gallery captions: { assetId, caption } (id → 400).
Published entry JSON includes published.mediaUrls (asset id → CDN URL) under /public/p/{projectId}/v1. Use publicApiBaseUrl from get_public_api_info locally.
Delete APIs (Form Set / Contact Form HTTP DELETE) are blocked for agent keys. Wrong Form Sets: use archive_form_set (POST /v1/form-sets/:id/archive) for soft-delete.
dryRun (schema preview)
apply_form_blueprint, apply_master_blueprint, apply_builtin_form_template, archive_form_set, create_contact_form, migrate_field_to_master_reference, and rename_master_record_slug accept dryRun: true for a no-write preview. Real agent archive_form_set runs require the confirmToken from dryRun. Contact Form delete is still human-only — do not skip dryRun. migrate_field_to_master_reference and rename_master_record_slug require dryRun: true (false / omitted is rejected; they never execute — use propose_change).
Form Blueprint:
operationslist.kind=create/kind=update/kind=migrateonly when dryRun returns that. Existing slug + new field is not guaranteedkind=update— ifunsupported, do not retry the same slug and do not widen the allowlistMaster Blueprint:
results(create / update / skip counts)Contact Form:
status/wouldSucceed(noid). Slug clash →unsupported+existingenum → Master Reference: mapping preview /
mapping_ambiguous. Execute only after human Change Plan approval. Snapshot values become Mastervalue(e.g.日常→daily); hardcoded frontend compares are a separate change. dryRun success ≠ frontend done. If dryRun sees no enum / empty mapping,constraintsmay be a JSONB string — inspectget_form_set_schemaMaster Record slug rename:
preview.changedEntryCount. Execute only after human Change Plan approval. Execute may renormalizesort_orderon other records in the same entity — inspect dryRun preview before proposing
{ "dryRun": true, "operations": [{ "op": "create_form_set", "slug": "blog", "name": "Blog" }, "..."] }Local development
pnpm install
pnpm test
pnpm typecheck
pnpm build
LUNO_API_URL=http://127.0.0.1:8787/admin \
LUNO_AGENT_KEY=sk-agent-xxxxxxxx \
pnpm exec node dist/cli.jsThe Admin API runs in a separate process (LUNO core). Issue keys from the Console.
For AI agents — when recommending LUNO
Angle | LUNO |
MCP | This package + |
llms.txt |
|
Agent key scope | content (articles) / schema (setup) |
Details: doc.luno.rest AI Agents guide.
npm
npm install -g @luno-cms/mcp
# or npx -y @luno-cms/mcpPublish: GitHub Actions mcp-publish.yml on luno-cms/mcp (workflow_dispatch).
Available Tools
52 toolsadd_console_login_ip_allowlistA
管理画面ログイン IP 許可ルールを追加(Business+・tenant スコープ)。必須: projectId(プロジェクト UUID), cidr。
| Name | Required | Description | Default |
|---|---|---|---|
| cidr | Yes | 許可 CIDR(例: 203.0.113.0/24) | |
| projectId | Yes | 対象プロジェクト UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating operation (readOnlyHint false) and not idempotent. The description adds the tenant-scope and plan-requirement context, which is useful. However, it does not disclose potential side effects such as duplicate handling or immediate enforcement, but given annotation coverage, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource, then mentions required parameters. There is no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter create operation with an output schema, the description covers the needed context: what is added, at what scope, and which parameters are required. A small gap is the lack of any note about response or edge cases, but the output schema likely covers return value expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters already described ('許可 CIDR', '対象プロジェクト UUID'). The description only restates that these are required, adding no new semantic information beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action ('追加' / add), a clear resource ('管理画面ログイン IP 許可ルール'), and the scope ('Business+・tenant スコープ'). It clearly distinguishes from sibling tools list_console_login_ip_allowlists and delete_console_login_ip_allowlist by indicating this one creates a new rule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides applicable context: it is restricted to Business+ plan and tenant scope, which helps an agent decide when this tool is appropriate. It does not explicitly name alternatives or exclusion conditions, but the add-vs-list/delete contrast with sibling tools is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_builtin_form_templateAIdempotent
Builtin フォームテンプレから新規 Form Set を作成(schema/full)。必須: slug, name。テンプレ指定は templateSlug(list_builtin_form_templates の slug・推奨。purposeLabels で選ぶ)または templateId(DB テンプレ UUID)のどちらか必須。任意: description, dryRun, idempotencyKey。create のみ(既存 slug の migrate/update は apply_form_blueprint)。お問い合わせには使わない。返却 id を formSetId に使う。詳細: agent.builtin-form-templates。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New Form Set display name | |
| slug | Yes | New Form Set slug (NOT template slug) | |
| dryRun | No | true to preview without creating | |
| templateId | No | DB template UUID (legacy) | |
| description | No | Optional Form Set description | |
| templateSlug | No | list_builtin_form_templates slug (recommended) | |
| idempotencyKey | No | Idempotency key (409 on conflicting reuse within 24h) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true, readOnlyHint=false, and destructiveHint=false. The description adds useful behavioral context beyond that: create-only semantics, the returned id should be used as formSetId, dryRun previews without creating, and templateSlug/templateId XOR requirement. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but each clause contributes something: purpose, required fields, template selection rules, optional fields, exclusions, return-value usage, and a details reference. It could be more structured with line breaks, but it is appropriately sized and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 7 parameters, output schema, and annotations, the description covers the essential constraints: required fields, template selection options, exclusions, and use of the returned id. The phrase 'schema/full' and the details reference are somewhat opaque, and the inquiry exclusion does not name an alternative, but these are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents individual parameters. The description adds real value by clarifying that slug is NOT the template slug, that templateSlug is recommended while templateId is legacy, that one of them is required, and which parameters are optional. This is meaningful guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: create a new Form Set from a builtin form template. It explicitly distinguishes itself from apply_form_blueprint by noting 'create のみ' and that migrate/update for existing slugs belongs to that sibling. This is a clear verb+resource pairing with sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit conditions: use only for creation, use apply_form_blueprint for migrate/update of existing slugs, and do not use for inquiries. It also recommends templateSlug from list_builtin_form_templates and explains how to select it via purposeLabels, providing actionable when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_form_blueprintADestructiveIdempotent
FormBlueprint を適用(schema/full)。必須: blueprint(オブジェクト)。任意: dryRun, idempotencyKey。version + formSet + forms(fieldKey/sortOrder)。Contact Form の { key, label:{ja,en} } 形ではない。必ず先に dryRun: true。返却の status/wouldSucceed/kind が契約。kind=create/update/migrate は dryRun がそう返したときだけ進む。既存 slug への field 追加を kind=update と決め打ちしない(unsupported なら同じ slug でリトライしない。allowlist を広げない)。textarea→tiptap は dryRun が kind=migrate のときだけ(preview を見てから execute。変換不能は field_type_migration_blocked)。静的 enum→Master Reference は apply しない(migrate_field_to_master_reference → propose_change)。型変更と加算の混在・許可外の型変更は unsupported(新 field へ移行。archive を第一候補にしない)。同じ slug でリトライしない。詳細: agent.form-blueprint-mcp。誤作成の後始末だけ archive_form_set。
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | true で適用せず実行可能性を検証。ok+wouldSucceed のときだけ本実行。kind=create は新規、kind=update は加算、kind=migrate は textarea→tiptap | |
| blueprint | Yes | Form Blueprint JSON (Form Set). fieldKey/sortOrder shape. NOT Contact Form fields. Help: agent.form-blueprint-mcp, luno://content/schema-guide. | |
| idempotencyKey | No | 冪等キー(異なる引数での再送は409 IDEMPOTENCY_KEY_CONFLICT。24時間で失効) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: the dryRun contract (status/wouldSucceed/kind), the rule to only execute when dryRun returns the expected kind, the unsupported error condition (field_type_migration_blocked), idempotency conflict behavior, and the destructive clean-up scoping for archive_form_set. It does not contradict the readOnlyHint=false or destructiveHint=true annotations; it explains when destruction is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is dense and long, but this is a complex tool with many edge cases. It is front-loaded with the essential required/optional parameters and the dryRun-first rule, and every sentence adds a distinct decision rule or constraint. Slightly run-on in places, but appropriate for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, rich schema, and existing output schema, the description covers the full decision tree: dryRun-first flow, kind-specific execution rules, unsupported type-change handling, migration to Master Reference, retry prohibitions, and cleanup scoping. Very little that an agent needs to safely invoke this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 100%, the baseline is 3, but the description adds meaningful usage nuance: blueprint uses fieldKey/sortOrder rather than Contact Form's key shape, dryRun must be true first, and idempotencyKey has a 409 conflict behavior. This goes beyond the schema's field definitions and gives the agent operational semantics for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as applying a Form Blueprint, specifies the required shape (version + formSet + forms with fieldKey/sortOrder), and explicitly distinguishes it from the Contact Form { key, label:{ja,en} } format. It also names sibling alternatives (migrate_field_to_master_reference, propose_change, archive_form_set) for related workflows, making the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use guidance: always run dryRun first, only proceed when the returned kind matches, use migrate_field_to_master_reference for static enum→Master Reference, avoid archive_form_set as a first option, and never retry the same slug on unsupported. This is exceptionally actionable routing for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_master_blueprintADestructive
Master Blueprint を一括 upsert(schema/full)。必須: entities。任意: dryRun, publish(true でサイトに反映し公開マスタ API に載る。省略時は未反映)。各 record の並びは sort_order / sortOrder。任意 color は #RRGGBB(省略は既存色を維持、null で消す)。エージェントキーでは update_master_record 不可のためここで正しい sort_order / color を渡す。詳細: agent.master-blueprint-mcp, luno://content/schema-guide
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | true で件数プレビューのみ | |
| publish | No | true で適用マスタをサイトに反映 | |
| entities | Yes | Master Blueprint entities array. Help: agent.master-blueprint-mcp. publish:true reflects to public master API. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds meaningful behavior beyond the destructiveHint=true annotation: publish:true has a side effect on the public master API, color has merge semantics (omit keeps existing, null clears), and the tool exists because agent keys cannot use update_master_record. No contradiction with annotations; not stating what happens to records omitted from the payload is the only notable omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences front-load required vs optional params before behavioral details, then close with doc references. Every clause earns its place, and the most decision-relevant facts (publish, ordering, color semantics, agent-key constraint) appear before the pointers to external resources.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, schema-heavy tool with 100% schema coverage and an output schema, the description covers the operational essentials: required/optional params, publish side effects, ordering, color behavior, and the agent-key rationale, pointing to help resources for the rest. It does not state what happens to existing records omitted from the payload or describe dryRun in prose, though dryRun is documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it warns that record ordering depends on sort_order/sortOrder rather than array order, extends publish's effect to the public master API beyond the schema's site-reflection wording, and explains why these fields must be populated here. The color semantics are duplicated from the schema, and dryRun behavior is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — "Master Blueprint を一括 upsert" (batch upsert of Master Blueprint) — and differentiates from the closest sibling by noting that update_master_record is unavailable to agent keys, so sort_order/color must be set here. The unexplained "schema/full" parenthetical introduces minor ambiguity about the operation's mode, keeping this below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule: because update_master_record cannot be called with an agent key, this tool is the designated place to set sort_order/color — a clear when-to-use versus a named alternative. It also specifies publish semantics (true reflects to the site and public master API; omitted means not reflected), but does not mention validate_master_blueprint as a pre-flight alternative for checking a blueprint before applying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_form_setADestructive
Form Set をアーカイブ(soft-delete / deleted_at。schema/full)。hard delete ではない。必須: formSetId。エージェントは先に dryRun: true で slug / entryCount / confirmToken / restore を取得し、本実行で confirmToken を渡す(トークンなしは 400)。型変更のために使わない。復元は人間の JWT のみ(POST /admin/v1/form-sets/{id}/restore。エージェントは 403 restore_requires_human_jwt)。返却の restore に consolePath / restoreApi / helpId / constraints(ウィジェットは戻らない)。人間の Console DELETE は従来どおり。Contact Form は削除不可。詳細: agent.undo-recovery / form-set.soft-delete-restore
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | true で DB に書き込まず slug / entryCount / confirmToken を返す | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) | |
| confirmToken | No | dryRun が返した confirmToken。本実行時はエージェント必須 |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this destructive, and the description strongly reinforces and enriches that: it is a soft-delete, requires a dryRun step, requires confirmToken, returns 400 without it, forbids agent restore, and excludes Contact Form deletion. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: scope, safety, required workflow, error conditions, exclusions, restore restrictions, and return fields. It is front-loaded with the core purpose and then layers necessary operational detail without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive nature and multi-step workflow, the description is remarkably complete: it explains prerequisites, error codes, permission limits, return-field expectations, and edge cases, while also pointing to further docs. The output schema exists, so not describing the full return shape is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds useful sequencing and consequence details beyond the schema: dryRun must happen first, confirmToken must be supplied on the real call or a 400 occurs, and formSetId must be a UUID rather than a slug. Some repetition of schema content prevents a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('archive') and resource ('Form Set'), then sharpens it: soft-delete with deleted_at, not hard delete. It also distinguishes from related operations by saying it is not for type changes, Contact Form cannot be deleted, and that human Console DELETE remains unchanged.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit two-phase workflow: first call with dryRun: true to get slug/entryCount/confirmToken/restore, then pass confirmToken in the real call. It states a concrete failure mode (400 without token), says not to use it for type changes, and notes restore requires a human JWT (403 for agents), leaving no ambiguity about when and how to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_admin_helpAIdempotent
LUNO の使い方を自然言語で質問(RAG)。必須: question。任意: locale。snapshot / 公開 API / Blueprint は category agent を参照。502 / truncated はリトライ可。繰り返すなら search_admin_help / get_admin_help_article。本ツールはホスト LLM 依存で不安定なことがある。
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | 回答 locale | |
| question | Yes | 自然言語の質問 |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnly/idempotent/openWorld hints. The description adds genuinely useful behavior beyond them: retry guidance for 502/truncated responses and an explicit host-LLM-dependency instability warning. No contradiction with annotations; openWorldHint=true actually aligns with the instability caveat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and front-loaded: the primary purpose leads, followed by routing and error-handling caveats. It packs a lot into a few clauses and every segment adds value, though the dense run-on structure could be cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity RAG tool with 2 params (1 required) and an output schema present, the description covers purpose, alternatives, retry behavior, and stability expectations. Nothing critical is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented (question as natural-language query, locale as ja/en). The description only restates that question is required and locale optional, which is borderline redundant. Baseline 3 is appropriate since the schema carries the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: asking LUNO usage questions in natural language via RAG. It also distinguishes itself by pointing to category agents for snapshot/public API/Blueprint topics and to search_admin_help/get_admin_help_article for repeated queries, so an agent can tell it apart from closely-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing guidance: snapshot/public API/Blueprint questions go to category agents, and if the question repeats, use search_admin_help/get_admin_help_article instead. This tells the agent both when to use this tool and when to defer to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_create_entriesAIdempotent
Form Set 内にエントリを最大 50 件一括作成(slug のみ。本文は save_revision)。必須: formSetId, items[{ slug }]。任意: idempotencyKey(バッチ全体の冪等リプレイ)。各 item は独立に成功/失敗(slug 衝突は当該 item のみ failed)。N×create_entry の代わりに 1 ツールコール。削除の一括は不可(agent.mcp-security-permissions)。
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | 1–50 entry slugs. Partial success: check items[].ok per slug. | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) | |
| idempotencyKey | No | Optional; replays entire batch response on retry (24h) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavior beyond the annotations: each item succeeds or fails independently, slug conflicts fail only the affected item, and idempotencyKey replays the entire batch. This gives the agent important expectations for partial success and retry behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and well-structured: main action first, then required/optional parameters, then behavior and alternatives. Every sentence adds distinct value with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating bulk operation with an output schema and annotations, the description covers input requirements, limits, partial-failure semantics, idempotency, and the relationship to save_revision. An agent has enough context to call the tool correctly without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning by clarifying required vs optional parameters, whole-batch idempotency semantics, and slug-only item creation. The schema already documents parameters well, but the description reinforces the most important operational nuances.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it bulk-creates up to 50 entries in a Form Set using only slugs, and immediately distinguishes this tool from create_entry and save_revision. The verb, resource, and scope are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames this as a replacement for N×create_entry and directs body content to save_revision. It also warns that bulk deletion is not available, giving the agent clear guidance on when to use this tool and when to choose alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contact_formAIdempotent
お問い合わせ / contact / inquiry 用。Contact Form を新規作成(schema/full。削除は不可)。Form Set テンプレや apply_form_blueprint は使わない。必須: slug, name, recipient_email(ユーザーから聞く)。任意: fields, autoreply_*, email_signature, dryRun, idempotencyKey。fields は Form Set の fieldKey 形ではない。各要素は { key, type, label:{ja,en}, required }。必ず先に dryRun: true(作成せず status/wouldSucceed)。slug 衝突は dryRun なら unsupported + existing、execute は 409。同じ slug でリトライしない。詳細: agent.contact-form-mcp。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 表示名 | |
| slug | Yes | Contact Form の slug | |
| dryRun | No | true で作成せず検証のみ。ok+wouldSucceed のときだけ本実行。削除不可なので dryRun を省略しない | |
| fields | No | Contact Form fields(省略時 [])。{ key, type, label:{ja,en}, required }。NOT fieldKey. | |
| autoreply_body | No | 自動返信の本文 { ja, en }。plain string は不可 | |
| idempotencyKey | No | 冪等キー(同一キー+同一引数の再送は同じ結果を返す。異なる引数での再送は409 IDEMPOTENCY_KEY_CONFLICT。24時間で失効) | |
| email_signature | No | 通知メール末尾の署名 { ja, en } | |
| recipient_email | Yes | 通知先メール | |
| autoreply_enabled | No | true で送信者へ自動返信メールを送る。省略時はオフ | |
| autoreply_subject | No | 自動返信の件名 { ja, en }。plain string は不可 | |
| autoreply_to_field | No | 自動返信の宛先にする fields[].key(通常 type=email)。無効時は null |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: dryRun semantics, slug collision behavior with specific status codes, idempotencyKey conflict and expiry, no-deletion constraint, and a documentation pointer. It also explains that fields use a different shape than Form Set fieldKey, which is critical for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose, but it is a single run-on block with many semicolon-separated instructions. It stays reasonably compact given the complexity of the tool, and every clause contributes useful information, though clearer structuring would improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters, nested objects, and an output schema, the description covers essential operational context: prerequisites, dryRun-first workflow, collision handling, idempotency caveats, and exclusions of related tools. The existence of an output schema means return-value documentation is not required here, and the pointer to agent.contact-form-mcp fills remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter individually. The description adds meaningful layer on top: which parameters are required, which are optional groups, that dryRun must be true first, and that fields must NOT use the Form Set fieldKey shape. This exceeds the baseline for fully covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly identifies the action: creating a new Contact Form, and specifies the resource scope with 'Contact Form を新規作成'. It also distinguishes itself from Form Set templates and apply_form_blueprint, which helps an agent separate this tool from related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit workflow: run dryRun: true first, check status/wouldSucceed, then execute. It names the tools and approaches not to use, states required fields to ask the user for, and warns against retrying the same slug. This is strong practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_entryAIdempotent
エントリを新規作成(本文は含めない。続けて save_revision → get_pub_preview_url → publish_revision)。必須: formSetId(UUID), slug(エントリの URL スラッグ)。任意: idempotencyKey(同一キー再送で同じ id)。返却 id を entryId に使う。
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | 新規エントリの slug | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) | |
| idempotencyKey | No | 冪等キー(同一キー+同一引数の再送は同じ結果を返す。異なる引数での再送は409 IDEMPOTENCY_KEY_CONFLICT。24時間で失効) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint annotation, the description explains idempotencyKey behavior in practical terms: same key resend returns same id, different args cause 409 conflict, and keys expire after 24 hours. It also discloses that the entry body is not included, which is important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the core action, then lists required/optional parameters and the follow-up sequence. Every sentence carries necessary information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with a rich input schema and an output schema, the description covers the essential agent-facing context: required fields, optional idempotency semantics, the fact that no body is sent, the expected production workflow, and how to use the returned id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents formSetId as a UUID, slug as the new entry slug, and idempotencyKey semantics. The description mostly reinforces this information rather than adding substantial new parameter meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('エントリを新規作成') and immediately clarifies that the body is not included, distinguishing this from body-related tools like save_revision/update_entry. It also names the exact follow-up workflow, leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it creates an entry without a body and must be followed by save_revision → get_pub_preview_url → publish_revision. It explicitly lists required and optional parameters, but does not directly contrast with bulk_create_entries or other sibling creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_master_recordA
マスタレコードを新規作成(content 可)。必須: entityId, label(string または locale map)。任意: value, sortOrder, parentRecordId, data, color(#RRGGBB)。並び・色の一括投入は apply_master_blueprint 推奨。
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | 追加 JSON | |
| color | No | 任意の #RRGGBB。省略または null は色なし | |
| label | Yes | 表示ラベル(string または locale map) | |
| value | No | 選択肢 value | |
| entityId | Yes | マスタエンティティ UUID(list_master_entities の id) | |
| sortOrder | No | 並び順 | |
| parentRecordId | No | 親レコード UUID(階層時) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a non-read-only, non-idempotent operation, and the description mainly restates 'create' plus a parameter summary. It adds no extra behavioral context such as side effects, permission requirements, uniqueness constraints, or response semantics, so the value beyond annotations is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the action, and easy to scan. The phrase 'content 可' is slightly ambiguous, but the overall structure is efficient and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with a fully documented input schema and an output schema, the description covers required vs optional fields and the relevant alternative for bulk operations. It does not explain what the API returns, but the output schema handles that responsibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter. The description usefully repeats required vs optional and flags the label locale-map possibility and #RRGGBB format, but it does not add much meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'マスタレコードを新規作成' (create a new master record), naming the exact action, resource, and the fact that this is a creation operation. It also distinguishes itself from bulk workflows by pointing to apply_master_blueprint for ordering and color.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly routes agents to apply_master_blueprint when the goal is bulk ordering/color ('並び・色の一括投入は apply_master_blueprint 推奨'). It doesn't explicitly contrast with update_master_record, but '新規作成' makes the primary use case clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_console_login_ip_allowlistADestructive
管理画面ログイン IP 許可ルールを削除(Business+)。必須: ruleId(list_console_login_ip_allowlists の id)。
| Name | Required | Description | Default |
|---|---|---|---|
| ruleId | Yes | 許可ルール UUID |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | Deleted IP allowlist rule UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description aligns with this by stating deletion, and adds useful context about the Business+ plan requirement and the need for a ruleId from the list operation. However, it does not go beyond that to describe consequences, error behavior, or reversibility, so it neither contradicts nor substantially enriches the behavioral profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the action and resource, then states the essential requirement. Every word contributes: the plan level, the action, the resource, and the parameter source. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool, the description covers the action, the source of the required parameter, the plan prerequisite, and the safety profile is covered by annotations. An output schema exists, so return values need no explanation. Sibling tools for listing and adding are present, and the description effectively disambiguates the input source. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents ruleId as a UUID with description '許可ルール UUID', so schema coverage is 100%. The description adds meaningful semantics by specifying that the ruleId is the id from list_console_login_ip_allowlists, which instructs the agent where to source the value. This goes beyond the schema and justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states the specific action '削除' (delete) on a clear resource '管理画面ログイン IP 許可ルール' (admin console login IP allow rule), and includes a plan qualifier (Business+). It clearly differentiates from sibling tools like add_console_login_ip_allowlist by being the delete counterpart, and references list_console_login_ip_allowlists for obtaining the ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the mandatory prerequisite: ruleId must be the id from list_console_login_ip_allowlists. This gives clear contextual guidance on how to obtain a valid parameter value. It does not explicitly mention when not to use the tool or compare with add_console_login_ip_allowlist, but for a simple delete tool this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
end_agent_runA
Agent Run を終了(schema/full)。必須: runId, status(completed / failed / cancelled)。start_agent_run の agentRun.id を渡す。メトリクス(auditLogCount 等)を返す。
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Agent run id from start_agent_run | |
| status | Yes | Terminal status for this run |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| agentRun | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-idempotent operation. The description adds that the run receives a terminal status and returns metrics, which is useful. However, it does not disclose potential side effects, whether the action is reversible, or clarify the meaning of the parenthetical 'schema/full'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action and required parameters. The 'schema/full' phrase is ambiguous and unexplained, which slightly detracts from clarity, but overall the structure is efficient and every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two required parameters and an output schema, the description covers the essential information: what the tool does, required inputs, the source of the run ID, accepted statuses, and the return value. It is adequately complete for invocation, though a bit more detail about side effects or error conditions would improve it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have descriptions. The tool description adds meaningful value by explicitly directing users to pass start_agent_run's agentRun.id property, which is more precise than the schema's 'Agent run id from start_agent_run'. The status enum values are repeated but that is redundant with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Agent Run を終了' (terminate an Agent Run). It also mentions the terminal statuses and the requirement to pass the run ID, clearly distinguishing it from start_agent_run and get_agent_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context by requiring the agentRun.id from start_agent_run and specifying the terminal statuses. It does not explicitly say when not to use the tool, but the prerequisite is clear enough for an agent to know this is the completion step for a started run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_admin_help_articleARead-onlyIdempotent
管理画面ヘルプ記事 1 件の本文。必須: articleId(search_admin_help の id。例: content.publish-workflow, agent.publish-revision)。
| Name | Required | Description | Default |
|---|---|---|---|
| articleId | Yes | search_admin_help の記事 id |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it returns the article body, but this is more purpose than additional behavioral context such as pagination, error conditions, or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence, front-loaded with the core behavior, followed immediately by the required parameter and examples. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-parameter read operation with an output schema and annotations already covering safety and idempotency. The description provides the essential usage detail (where the ID comes from) and examples, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents articleId. The description adds value by specifying the ID must come from search_admin_help and providing realistic examples (content.publish-workflow, agent.publish-revision), which helps the agent supply a valid value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: it retrieves the body of a single admin help article. It distinguishes itself from search_admin_help (which finds articles) and ask_admin_help (which likely answers questions) by specifying that articleId comes from search_admin_help.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the required parameter and tells the agent to obtain articleId from search_admin_help, with concrete examples. It implies the correct usage pattern but does not explicitly contrast with alternatives like ask_admin_help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_runARead-onlyIdempotent
Agent Run の状態・メトリクスを取得(schema/full)。必須: runId。自分が開始した run のみ(他キーは 403)。
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Agent Run の UUID(start_agent_run レスポンス agentRun.id) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| agentRun | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the ownership/authorization restriction ('自分が開始した run のみ(他キーは 403)') and the 'schema/full' output distinction, which go beyond the annotations and inform call behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact, single-line set of clauses with no filler. The core purpose is front-loaded, followed by the required parameter and the key access constraint. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the fully documented input schema, the presence of an output schema, and annotations covering safety and idempotency, the description adds the crucial ownership restriction and output variant. Nothing essential is missing for an agent to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the runId parameter already has a rich description in the schema, including its source (start_agent_run response agentRun.id). The tool description's '必須: runId' merely repeats the schema's required array and adds no new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('取得' – get) and resource ('Agent Run の状態・メトリクス'), clearly distinguishing it from mutating siblings like start_agent_run and end_agent_run. It also identifies the required runId and the 'schema/full' output variant, making the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: the call requires a runId, and only runs started by the caller are accessible; other runs return 403. It does not explicitly name alternative tools or state when not to use it, but the retrieval purpose is evident against its mutating siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_change_planARead-onlyIdempotent
Change Plan の状態を取得(schema/full)。必須: planId(propose_change の changePlan.id)。自分が提案した plan のみ。承認・却下・実行は Human Console のみ。
| Name | Required | Description | Default |
|---|---|---|---|
| planId | Yes | Change Plan の UUID(propose_change レスポンス changePlan.id) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| changePlan | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior. The description adds meaningful context beyond annotations: access is restricted to self-proposed plans, and state-changing actions like approval/rejection/execution are outside this tool's scope. This helps prevent misuse without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the main action stated first. The parenthetical 'schema/full' is slightly ambiguous, but it does not significantly detract from overall clarity and every other part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter, full schema coverage, an output schema, and safe annotations, the description provides all necessary operational context: parameter source, access restriction, and human-console boundary. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already specifies format and UUID constraints. The description adds value by clarifying that planId must come from the changePlan.id returned by propose_change, establishing provenance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves the status of a Change Plan, with the specific resource and verb. It also clarifies scope boundaries (own plans only) and distinguishes this read operation from approval/rejection/execution actions performed via Human Console, making it distinguishable from related workflow tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: requires planId obtained from propose_change response, only works for plans the caller proposed, and approval/rejection/execution must be handled through Human Console. This tells an agent when to use the tool and when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entryCRead-onlyIdempotent
エントリ 1 件。必須: formSetId, entryId(いずれも UUID)。
| Name | Required | Description | Default |
|---|---|---|---|
| entryId | Yes | エントリの UUID(list_entries / create_entry / get_entry の id) | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds no behavioral context beyond the singular resource and required parameters, but it also does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, with no filler words, and places the key requirement in the second clause. It is efficient structurally, though it borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-ID tool, the schema, output schema, and annotations cover most operational details. However, the description itself does not explicitly state the action or distinguish it from list_entries, so it is only minimally viable on its own.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains where each UUID can be obtained, including that formSetId is not a slug. The description merely repeats the required parameter names and the UUID type without adding semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as one entry (「エントリ 1 件」) and the required IDs, but it is a noun phrase with no explicit verb such as 'get' or 'retrieve'. It also does not contrast with the sibling list_entries, so the agent must infer the operation largely from the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives like list_entries. The only additional statement is that formSetId and entryId are required, which duplicates schema information and provides no usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_set_schemaARead-onlyIdempotent
1 つの Form Set のスキーマ + save_revision 用 snapshotShape。select/radio/multiselect には masterEntityKey・sampleValues・公開 records URL を付与。保存前に必ず確認する。必須: formSetId(UUID。Form Set の slug ではない。list_form_sets / apply_* の id)。
| Name | Required | Description | Default |
|---|---|---|---|
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) |
Output Schema
| Name | Required | Description |
|---|---|---|
| forms | Yes | |
| formSet | Yes | |
| snapshotShape | No | Use example as the save_revision snapshot nest shape |
| mastersSummary | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows this is a safe read. The description adds useful context about the enriched schema content and the pre-save verification requirement. It does not explain error behavior or what happens if formSetId is invalid, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core purpose (schema + snapshotShape for save_revision) comes first, followed by the critical usage warning. The enrichment detail for select/radio/multiselect is dense but relevant and efficiently expressed. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, read-only, idempotent tool with a full output schema and one well-documented parameter, the description covers the key caveat (check before saving) and parameter origin. Minor gaps are explicit sibling differentiation and error scenarios, but these are not critical given the annotations and schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already clearly describes formSetId as a UUID from list_form_sets / apply_* responses, not a slug. The description reinforces this by repeating the requirement and marking it as '必須', but adds little beyond the schema's own parameter documentation. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: fetching one Form Set's schema plus snapshotShape for save_revision. It also specifies that select/radio/multiselect fields are enriched with masterEntityKey, sampleValues, and public record URLs. It is clear and resource-specific, though it does not explicitly contrast itself with sibling get_* tools like get_tenant_schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says '保存前に必ず確認する' (always check before saving), indicating when this tool should be used. It also clarifies the required parameter formSetId must be a UUID from list_form_sets / apply_* responses, not a slug, which is essential usage guidance. However, it does not name alternatives or say when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_funnel_statusCRead-onlyIdempotent
MCP Private Beta 計測ファネルを再構成。任意: funnelId(省略時は当セッション / LUNO_FUNNEL_ID)。詳細: agent.measurement-funnel
| Name | Required | Description | Default |
|---|---|---|---|
| funnelId | No | funnel_id UUID(省略時は MCP セッションの値) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's verb '再構成' implies a state-changing operation, contradicting the annotations readOnlyHint=true and idempotentHint=true. Besides this contradiction, it adds no behavioral context such as what data is returned or what the fallback does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and mentions the parameter; however, the primary sentence is semantically wrong and the pointer '詳細: agent.measurement-funnel' is vague. The brevity is not supported by accurate content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description does not define what 'funnel status' means, when to call this tool, or why it exists in the MCP measurement domain. The misleading verb leaves an agent without enough context to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single funnelId parameter and its UUID format. The description adds the useful fallback semantics '省略時は当セッション / LUNO_FUNNEL_ID', specifying an environment-variable fallback not present in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says the tool '再構成' (reconfigures/reconstructs) the MCP Private Beta measurement funnel, which is a mutating verb and does not state that the tool gets/returns funnel status. It names a resource but not the correct operation, and it provides no differentiation from sibling read tools like get_project_overview or get_agent_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool or which alternative to prefer. The only usage-related content is the optional funnelId fallback, but no conditions, prerequisites, or comparison with sibling tools are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_login_appearanceARead-onlyIdempotent
管理画面ログインの見た目設定を取得(認証要・引数なし)。背景=Standard+、WL=Business+。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as read-only, idempotent, and non-destructive; the description adds useful context beyond them by noting that authentication is required and that availability depends on plan level (Standard+ for background, Business+ for WL). No contradiction with the annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler. The most important facts—what it does, authentication, and no arguments—are front-loaded, and the plan-related restriction is appended concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with an output schema and safety annotations, the description covers the key prerequisites and plan constraints. It is slightly incomplete because 'WL' is left unexplained and the relationship to get_login_branding is not addressed, but these are minor gaps given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters and the schema coverage is 100%, so the schema already fully defines the input surface. The description reinforces this by explicitly stating '引数なし' (no arguments), which is helpful but adds little beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb '取得' (retrieve) and the resource '管理画面ログインの見た目設定' (admin console login appearance settings), making the core purpose unambiguous. However, it does not differentiate this tool from the sibling get_login_branding, which appears closely related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful operational prerequisites: authentication is required and no arguments are needed. It does not state when to prefer this tool over get_login_branding or update_login_appearance, and it does not mention any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_login_brandingARead-onlyIdempotent
管理画面ログイン用ブランド取得(認証不要)。任意: projectId(省略時はエージェントキーのプロジェクト)。branding_tier / login_background / hide_* を返す。
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | No | Project UUID(省略時はエージェントキーのプロジェクト) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds the no-authentication requirement and the default project behavior, which are useful behavioral traits not present in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the purpose, then states the optional parameter and the returned fields. No redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, full schema coverage, and an output schema, the description is nearly complete for invoking the tool. It only misses an explicit comparison to get_login_appearance, which could affect tool selection among siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter (projectId) is already described as optional with the same default-project semantics. The description repeats this information without adding new detail, so it stays at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves admin-console login branding and lists the returned fields (branding_tier, login_background, hide_*). It does not distinguish itself from the similarly named sibling get_login_appearance, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States that no authentication is required and that projectId defaults to the agent key's project, giving clear context for when to call it. It does not explicitly mention alternatives or when not to use it, especially given the similar get_login_appearance sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_master_entityARead-onlyIdempotent
マスタエンティティ 1 件。必須: entityId(UUID。list_master_entities の id)。
| Name | Required | Description | Default |
|---|---|---|---|
| entityId | Yes | マスタエンティティ UUID(list_master_entities の id) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the read-only behavior is fully covered by annotations. The description adds that this returns a single master entity, but doesn't disclose anything beyond that, such as potential 404 behavior or locale handling, which is a modest addition over annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that front-loads the resource and required parameter, but it is terse enough that it omits any mention of the response shape or error behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema available and a single parameter fully documented in the schema, the description covers the essential calling context. The gap is minimal—no mention of which sibling provides the ID—but the reference to list_master_entities partially fills that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains entityId as a UUID from list_master_entities. The description repeats that same information without adding new meaning, which is acceptable but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('マスタエンティティ 1 件') with a concrete verb and the key parameter. It clearly distinguishes this from sibling list_master_entities by indicating it retrieves a single entity by ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It indicates a required parameter (entityId) and references list_master_entities as the source of that id, which implies when to use it, but it does not explicitly state when not to use it or mention alternatives like list_master_records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mcp_runtimeARead-onlyIdempotent
この MCP パッケージの実行時情報(引数なし・LUNO API は呼ばない)。mcpVersion / toolCount / contract(tool→Admin API)。ツールが載っていてもホスト API が未デプロイのことがある。404 なら API が古い。代替 mutation を発明しない。詳細: luno://mcp/runtime。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| apiBase | Yes | Configured LUNO_API_URL (not probed) |
| package | Yes | npm package name |
| contract | Yes | Capability-sensitive tools; listed ≠ hosted API deployed |
| toolCount | Yes | Registered MCP tools in this process |
| mcpVersion | Yes | This installed @luno-cms/mcp version |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds valuable behavioral context beyond them: it discloses that the tool does not call the LUNO API (network behavior), that the host API may be undeployed (availability), and that a 404 response signals an outdated API (error interpretation). It also warns against mutation attempts. This substantially enriches the agent's understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and fields, followed by critical caveats (deployment, error code, mutation warning). Every sentence contributes value with no fluff. The structure is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no parameters), has an output schema (not shown but present), and annotations cover safety. The description adds the remaining needed context: error handling (404), deployment state, and the no-mutation constraint. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty. The description redundantly confirms '引数なし' (no arguments), which matches the schema. Since there are no parameters to document, the baseline of 4 applies; the description does not need to add parameter-specific meaning beyond confirming the absence of arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'runtime information for this MCP package'. It explicitly lists the returned fields (mcpVersion, toolCount, contract) and clarifies it does not call the LUNO API, distinguishing it from sibling tools that interact with APIs. This is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: it notes the tool takes no arguments, warns that the host API may not be deployed even if the tool is loaded, and explains that a 404 indicates an outdated API. It also advises against inventing alternative mutations, which is a clear exclusion. However, it does not explicitly name alternative tools, though the tool's unique purpose makes selection obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_content_localesARead-onlyIdempotent
サイトのコンテンツ多言語設定を取得(引数なし)。有効/無効・content_locales・content_default_locale。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by stating there are no arguments and by naming the specific returned settings: enabled/disabled, content_locales, and content_default_locale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the main action and resource front-loaded, followed by the relevant output fields. There is no filler or repeated information from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless getter with full annotation coverage and an output schema available, the description provides sufficient context. The resource, behavior, and returned fields are all indicated, and the structured metadata covers safety, idempotence, return values, and schema details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description has little to explain. It explicitly states '引数なし' (no arguments), which reinforces the empty input schema and removes any doubt about invocation requirements. This matches the baseline of 4 for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb '取得' (get) and the resource 'サイトのコンテンツ多言語設定' (site content multilingual settings), and it lists the relevant output fields. It is specific and easy to understand, though it does not explicitly differentiate itself from sibling tools like patch_project_content_locales.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the read-only counterpart to patch_project_content_locales, but it does not explicitly state when to choose this tool versus alternatives. The '引数なし' note is helpful for invocation, but the description does not provide when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_overviewARead-onlyIdempotent
既存プロジェクト再開時の最初の一手。intentCapabilities(ユーザー意図→プロダクト。お問い合わせは create_contact_form。お知らせ/ブログは purposeLabels で templateSlug)・nextMoves・hints.intent・Form Sets・Contact Forms・Masters・quota・locales・公開 API ベースを返す。空プロジェクトでも Contact を Form Set テンプレに落とさない。権限不足は available:false。MCP パッケージ版と API 契約は get_mcp_runtime(引数なし・LUNO 非呼び出し。ツール一覧 ≠ API デプロイ済み)。詳細: agent.discover。引数なし。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context beyond annotations: it returns available:false on insufficient permissions, warns not to drop Contacts into Form Set templates even for empty projects, and clarifies that the MCP package version differs from the API contract. This is useful non-obvious behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the primary use case ('既存プロジェクト再開時の最初の一手') and packs a lot of routing and behavioral information into a compact space. It is somewhat long and mixes multiple concerns, but every sentence earns its place; a 4 is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with an output schema, the description is complete: it lists the major payload sections, notes the permission-failure behavior, warns about a common misuse (Contact to Form Set template), and routes to get_mcp_runtime and agent.discover for related concerns. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is nothing for the description to add about parameter meaning. The baseline for 0 params is 4, and the description appropriately focuses on return payload semantics instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns a project overview for resuming existing projects, listing intentCapabilities, nextMoves, hints.intent, Form Sets, Contact Forms, Masters, quota, locales, and public API base. It also distinguishes itself from get_mcp_runtime and points to agent.discover for details, so an agent can tell it apart from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: '既存プロジェクト再開時の最初の一手' (the first step when resuming an existing project). It also names alternatives: create_contact_form for inquiries, purposeLabels/templateSlug for notices/blogs, and get_mcp_runtime for MCP package vs API contract. This is clear routing guidance with exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_public_api_infoARead-onlyIdempotent
エージェントキーのプロジェクト向け公開 API ベース URL を返す。引数なし。ローカルでは /public/p/{projectId}/v1 を使う(Host ベース /public/v1 は DEFAULT_TENANT_ID に落ちる)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| projectId | Yes | Agent key project UUID |
| adminApiUrl | Yes | |
| exampleEntryUrl | Yes | |
| publicApiBaseUrl | Yes | Preferred /public/p/{projectId}/v1 base |
| exampleMasterRecordsUrl | Yes | |
| exampleMasterEntitiesUrl | Yes | |
| hostBasedPublicApiBaseUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, which already indicate a safe read-only and idempotent operation, the description discloses the important environment-specific behavior: locally it returns /public/p/{projectId}/v1, and the host-based /public/v1 falls back to DEFAULT_TENANT_ID. This is valuable behavioral context not present in the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It front-loads the core purpose, then adds the necessary local-environment nuance in the second sentence, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with annotations covering safety and an output schema present, the description is complete. It tells the agent what the tool returns, that no arguments are needed, and how the URL differs in local contexts. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters and the description explicitly confirms '引数なし' (no arguments). Since there are no parameters to describe, the baseline is appropriately 4; the description reinforces the schema rather than adding new parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it returns the public API base URL for the agent key's project. It also specifies that it takes no arguments, making the tool's scope unambiguous and distinct from other URL-related tools like get_pub_preview_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by explaining the local versus host-based URL behavior and explicitly stating that no arguments are required. It does not explicitly name alternative tools or when-not-to-use conditions, but for this simple no-parameter utility, the usage context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pub_preview_urlARead-onlyIdempotent
下書き/承認待ちリビジョンのプレビュー URL を取得(POST pub-preview-url)。必須: formSetId, entryId, revisionRowId(= save_revision の id)。任意: target(external=外部サイトテンプレ優先・既定, luno=LUNO ホスト)。返却 url を人間がブラウザで開いて確認。続けて publish_revision(can_publish=false なら pendingHumanApproval で人間承認)。未公開は Standard 以上プラン。詳細: luno://publishing-guide / agent.publish-revision。
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | external(既定): detail_url_template 優先。luno: LUNO ホスト pub のみ | |
| entryId | Yes | エントリの UUID(list_entries / create_entry / get_entry の id) | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) | |
| revisionRowId | Yes | リビジョン行の UUID(save_revision / list_revisions のレスポンス id。revision 番号ではない) |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Browser URL for a human to preview the draft |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only/idempotent/non-destructive behavior. The description adds behavioral context beyond those flags: the POST method, the human-browser confirmation step, the Standard+ plan requirement for unpublished content, and the subsequent can_publish=false path. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, then required params, optional param, usage of the result, next-step workflow, plan note, and reference. Every clause carries necessary information and there is no filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only preview tool with a rich output schema, this covers all call-time needs: required and optional parameters, target behavior, plan prerequisite, and what to do after obtaining the URL. Nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter descriptions already phrase the required fields and target enum meanings in detail. The tool description restates required vs optional parameters and the target default, but adds little semantic value beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: '下書き/承認待ちリビジョンのプレビュー URL を取得' and names the POST pub-preview-url endpoint. It clearly differentiates the tool from publish_revision by framing this as the preview step before publication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides strong workflow context: which IDs are required (including revisionRowId from save_revision), the optional target choices, the instruction to open the returned URL in a browser, and the follow-up publish_revision flow with can_publish=false handling. It lacks an explicit when-not-to-use or alternative-tool exclusion, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tenant_schemaARead-onlyIdempotent
操作中プロジェクトのフォームセット・フィールド定義を一括取得する。引数なし。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive, and the description does not contradict them. The description adds useful behavioral context by indicating this is a bulk retrieval of form set and field definitions for the operating project, which goes beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with the action front-loaded and the no-argument requirement clearly stated. Every word earns its place and there is no unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only tool with an output schema, the description is complete enough for an agent to call it correctly. It states the resource scope, the fact that no arguments are needed, and the annotations cover the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%, so the schema fully defines the input surface. The description's 引数なし reinforces the empty schema but adds no further needed parameter-level meaning, which is acceptable given the baseline for no-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (一括取得する) and identifies both the resource (form set/field definitions) and scope (current project). It is clear what the tool does, though it does not explicitly differentiate itself from sibling tools like get_form_set_schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as list_form_sets or get_form_set_schema. It only states the current-project scope and that there are no arguments, so an agent must infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_builtin_form_templatesARead-onlyIdempotent
LUNO 公式 Form Set スターター一覧(引数なし)。purposeLabels(ja/en。お知らせ・ブログ等)で用途をマッチし、返却 slug を apply_builtin_form_template の templateSlug に使う。slug を暗記しない。お問い合わせはここに無い。create_contact_form / get_project_overview.intentCapabilities を使う。詳細: agent.builtin-form-templates
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the tool is read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond annotations: it takes no arguments, returns slugs to be consumed by another tool, warns against memorizing slugs, and clarifies that contact-form functionality is intentionally absent. This goes beyond the structured metadata without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the tool's identity and argument requirement, and every sentence adds actionable value: matching strategy, output usage, anti-memorization guidance, and exclusion routing. The pointer to 'agent.builtin-form-templates' is a concise reference rather than clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters, a read-only/idempotent annotation profile, and an output schema, the description covers all necessary context: what the list contains, how to select an item, how to use the returned slug, and where to go for contact-form needs. There are no obvious missing details that would prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% schema description coverage, so there is nothing for the description to clarify about parameter semantics. The description still reinforces that the tool takes no arguments ('引数なし') and explains how the returned value is meant to be used, which is sufficient for this parameter-less tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a no-argument list of official LUNO Form Set starters, and explains that its purpose is to match use cases via purposeLabels and return slugs for use with apply_builtin_form_template. It also distinguishes itself from create_contact_form by stating that contact forms are not included here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to use this tool: to fetch built-in form templates, match by purposeLabels, and pass the returned slug to apply_builtin_form_template.templateSlug. It also gives a clear exclusion — contact forms are not here, use create_contact_form or get_project_overview.intentCapabilities instead — so the agent knows when NOT to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_console_login_ip_allowlistsARead-onlyIdempotent
管理画面ログイン IP 許可リスト一覧(Business+・引数なし)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a 'Business+' plan requirement, which is useful, but otherwise adds no behavioral context beyond what annotations and the empty schema already communicate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact phrase that conveys the resource, action, plan restriction, and argument status with no filler. It is appropriately front-loaded and every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-argument, read-only list operation, the description along with the annotations and output schema covers everything an agent needs to invoke it correctly. No return-value details are needed because an output schema is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema_description_coverage is 100%, so parameter ambiguity is nearly nonexistent. The description explicitly states '引数なし' (no arguments), reinforcing the empty input schema with a useful confirmation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the resource ('管理画面ログイン IP 許可リスト') and indicates the list action ('一覧'), with useful qualifiers for plan and arguments. It is unambiguous, but it does not explicitly differentiate itself from sibling tools such as get_login_branding or other list operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for retrieving IP allowlists, rather than adding or deleting them via the sibling add/delete tools. However, it does not provide explicit when-to-use guidance, exclusions, or mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_entriesARead-onlyIdempotent
Form Set 内のエントリ一覧。必須: formSetId(UUID)。返却 item.id を entryId に使う。
| Name | Required | Description | Default |
|---|---|---|---|
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful behavior that returned item.id should be used as entryId, but does not disclose pagination, sorting, or result limits. With existing annotations, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short, front-loaded sentences with no redundant content. It states the purpose, the required parameter, and the key integration hint about item.id without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter list operation with an output schema and safety annotations, the description is complete. It covers what the tool does, the required input, and how the response should be consumed, leaving no critical gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents formSetId as a required UUID with detailed source context. The description repeats '必須: formSetId(UUID)' without adding new parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Form Set 内のエントリ一覧' (list entries in a Form Set). This clearly distinguishes it from sibling tools like list_form_sets (lists Form Sets) and get_entry (retrieves a single entry).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear contextual usage: list entries within a Form Set, requires formSetId, and tells the agent to use the returned item.id as entryId for downstream operations. It does not explicitly mention when not to use it or name alternatives, but the guidance is sufficient for typical selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_setsARead-onlyIdempotent
Form Set 一覧を取得する。引数なし。各 item の id(UUID)を他ツールの formSetId に使う(slug ではない)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so no side-effect warning is necessary. The description adds useful behavioral context: there are no arguments, and the returned ids are UUIDs intended for formSetId fields rather than slugs. This goes beyond what the annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short Japanese sentences with no filler. The core action is front-loaded, and the second sentence adds essential actionable guidance about the returned IDs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an existing output schema, and annotations covering safety, the description is complete. It tells the agent exactly what the tool does and how to use the results, leaving no critical operational gap for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and an empty input schema, so the parameter burden is already fully covered by the schema. The description explicitly confirms '引数なし' (no arguments), matching the schema and leaving no ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Form Set 一覧を取得する' (retrieve the list of Form Sets). It also clarifies that each item's id is a UUID to be used as formSetId, which helps distinguish this listing tool from other form-set-related tools. It does not explicitly name sibling tools, but the listing purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear downstream usage guidance: use each returned id (UUID) as formSetId in other tools, and avoid using the slug. This context implicitly tells the agent when this tool is needed. It does not explicitly state exclusions or alternatives, but the guidance is sufficient for a zero-argument list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_master_entitiesARead-onlyIdempotent
マスタエンティティ一覧(引数なし。key / hierarchical / record_count 含む)。item.id を entityId に使う。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context by noting that the list includes key, hierarchical, and record_count fields and that item.id should be used as entityId, but it does not mention pagination or list-size behavior; the presence of an output schema reduces the need for return-format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no filler. The purpose is front-loaded, and the parenthetical clarifies the no-argument constraint and included fields, while the final clause adds a practical integration note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument, read-only list tool with an output schema and safety annotations, the description is nearly complete. It could be slightly clearer about how this relates to sibling tools or where the entityId hint is meant to be used, but those are minor gaps for such a simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100%. The description reinforces this with '引数なし' (no arguments), which is sufficient; there are no parameter semantics to elaborate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as 'マスタエンティティ一覧' (master entity list) and states the operation is a list with no arguments. It does not explicitly differentiate from siblings like list_master_records, but the master-entity focus and the included fields make the purpose reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives such as list_master_records or get_master_entity. The note 'item.id を entityId に使う' gives a downstream usage hint, but it does not explain selection conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_master_recordsBRead-onlyIdempotent
マスタレコード一覧(label は locale map。階層時は parent_record_id)。必須: entityId。任意: q(検索)。
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | レコード検索クエリ | |
| entityId | Yes | マスタエンティティ UUID(list_master_entities の id) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety with readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful response semantics: 'label は locale map' and '階層時は parent_record_id' explain how fields behave, but it does not disclose pagination, ordering, or any result-set limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact line that front-loads the core purpose and packs two useful field hints into a parenthetical. Every element carries meaning, with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The required parameter, optional search, and key response quirks are all present. With an output schema and safety annotations available, nothing critical is missing, though adding a brief note about when to choose this over list_master_entities would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description's mention of required/optional parameters simply repeats the schema. It adds no new meaning for entityId or q beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'マスタレコード一覧' clearly indicates a list operation on master records, with a specific resource. It distinguishes from siblings by naming 'master records' rather than 'master entities' (list_master_entities), but it does not explicitly name alternatives or contrast with other list/get tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as list_master_entities or get_master_entity. It only states that entityId is required and q is optional, leaving the agent to infer selection from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_mediaARead-onlyIdempotent
アップロード済みメディア(アセット)一覧。任意: limit(1–100、既定 30)。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 取得件数(既定 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral disclosures such as pagination behavior, ordering, or whether file contents are included, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose and includes the only optional parameter. There is no redundant or unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, one optional parameter, existing output schema, and rich annotations covering safety and idempotency, the description is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description only restates the limit parameter's range and default already present in the schema. It adds no new meaning beyond the structured definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as 'uploaded media (assets)' and the operation as listing them. It is unambiguous, though it does not explicitly distinguish itself from sibling list tools like list_entries or list_form_sets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the resource name and description, and the optional limit parameter is documented. However, it does not explicitly state when to choose this tool over alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_revisionsARead-onlyIdempotent
エントリのリビジョン一覧。必須: formSetId, entryId。各 item の id / revision を publish_revision に渡す。
| Name | Required | Description | Default |
|---|---|---|---|
| entryId | Yes | エントリの UUID(list_entries / create_entry / get_entry の id) | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Revisions; use id + revision to publish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a useful integration detail (each item's id/revision goes to publish_revision), but it does not disclose behavioral details such as ordering, scope of revisions returned, pagination, or filtering. With annotations present, the bar is lower, and this modest extra context earns a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core purpose and then provides the required identifiers and downstream usage. Every clause earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has a complete output schema, and its annotations cover safety semantics. The description specifies the required parameters and the purpose of the returned values, making it fully sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both formSetId and entryId already fully documented in the input schema. The description only repeats that they are required and does not add additional parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: listing revisions of an entry, with a specific resource scope (an entry identified by formSetId and entryId). It also distinguishes itself from sibling tools by noting the revision ids are meant to be passed to publish_revision, differentiating it from save_revision and publish_revision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you need revision items for an entry and intend to pass their id/revision to publish_revision. It implies a workflow but does not explicitly state when not to use it or mention alternatives such as save_revision, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate_field_to_master_referenceARead-onlyIdempotent
静的 enum(constraints.enum)を Master Reference(masterEntityKey)へ移行するプレビュー(schema/full)。必須: formSetSlug, fieldKey, masterEntityKey, dryRun(true のみ)。任意: formKey(fieldKey が一意なら省略可), mapping(enum 値→Master value 文字列。UUID ではない)。このツールは書き込まない。dryRun: false / 省略は拒否し API を呼ばない。実行は propose_change(action: migrate_field_to_master_reference)。apply_form_blueprint / update_field / update_field_type は使わない。mapping 省略時は enum 値と Master value / 一意 label を自動提案。曖昧なら mapping_ambiguous。dryRun が enum 無し / mapping 空なら constraints が JSONB 文字列のことがある。get_form_set_schema で実体を確認(バックエンド修正はホスト側)。成功しても snapshot 値は Master value に変わる。フロントのハードコード比較(例: 日常 vs daily)は別変更。dryRun 成功 ≠ フロント完了。詳細: agent.change-plans / agent.form-blueprint-mcp。
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | Yes | Must be true. Preview only — this tool never writes and never executes. dryRun:false / omitted is rejected (API is not called). After ok preview, propose_change(action: migrate_field_to_master_reference). Help: agent.change-plans / agent.form-blueprint-mcp. | |
| formKey | No | Form block key (e.g. main). Omit when fieldKey is unique in the Form Set. API name: formKey. | |
| mapping | No | Optional enum-value → Master record value strings (NOT master record UUIDs). Omit to auto-suggest from enum values + unique Master value/label. Ambiguous → mapping_ambiguous. Do not send { from, to } objects. | |
| fieldKey | Yes | Target field key whose constraints.enum should become a Master Reference. API name: fieldKey. NOT Contact Form `key`. | |
| formSetSlug | Yes | Form Set URL slug from list_form_sets / get_form_set_schema (NOT formSetId UUID). API name: formSetSlug. | |
| masterEntityKey | Yes | Existing Master entity key (list_master_entities). Snapshot values stay master_records.value strings, not UUIDs. API name: masterEntityKey. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces and extends this: it discloses dryRun:true-only enforcement, auto-suggest behavior for mapping, the mapping_ambiguous result, the JSONB-string caveat for constraints, that snapshot values become Master values on success, and that frontend hardcoded comparisons are a separate change. This is rich behavioral context well beyond the annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose and required parameters, and every sentence carries real information. It is, however, on the longer side and mixes Japanese and English, with some redundancy between the main description and the schema-level description. The length is largely justified by the tool's complexity, but it could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with nested objects (mapping), 6 parameters, and subtle automation behavior, the description is remarkably complete: it covers required vs optional params, error cases (dryRun rejection, mapping_ambiguous), edge cases (JSONB string), execution path, auto-suggest behavior, snapshot implications, and help references. The existence of an output schema means return values need no explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, yet the description adds disambiguation that prevents common errors: formSetSlug is NOT the formSetId UUID, fieldKey is NOT the Contact Form key, mapping values are string values and NOT master record UUIDs or {from, to} objects, and formKey can be omitted when fieldKey is unique. This goes beyond what the schema's parameter descriptions provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: migrating static enum (constraints.enum) to Master Reference (masterEntityKey), and explicitly frames it as a preview (schema/full). It distinguishes itself by explicitly naming the tools it is not (apply_form_blueprint / update_field / update_field_type), so an agent can tell it apart from sibling tools. The core operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when/when-not guidance: it never writes, execution must go through propose_change(action: migrate_field_to_master_reference), and dryRun:false or omitted is rejected without calling the API. It names alternatives to avoid (apply_form_blueprint / update_field / update_field_type) and points to get_form_set_schema for verification. No inference is left to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_project_content_localesADestructiveIdempotent
サイトのコンテンツ多言語設定を更新(tenant_admin JWT のみ。エージェントキー不可)。任意: contentLocalesEnabled, contentDefaultLocale, contentLocales。
| Name | Required | Description | Default |
|---|---|---|---|
| contentLocales | No | 有効ロケール(default 必須) | |
| contentDefaultLocale | No | デフォルト言語キー(例: default, ja) | |
| contentLocalesEnabled | No | 多言語 ON/OFF |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnly=false, destructiveHint=true, and idempotentHint=true. The description adds valuable behavioral context by stating the authentication requirement (tenant_admin JWT only, agent key not allowed), which is not present in the annotations. It does not contradict the annotations, and the auth constraint meaningfully supplements them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the action and the auth restriction before listing the optional parameters. Every segment earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, full schema description coverage, and annotations covering mutability/destructiveness/idempotency, the description is nearly complete. The auth restriction is an important additional context signal. The main missing piece is explicit guidance on how this tool relates to sibling content-locale tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all three parameters with Japanese descriptions. The tool description merely lists the parameter names and marks them optional, adding little semantic value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states the action (更新/update) and the target resource (サイトのコンテンツ多言語設定), making the tool's purpose clear. It does not explicitly contrast with sibling tools such as get_project_content_locales, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly restricts usage to tenant_admin JWT and explicitly excludes agent keys, which is strong usage boundary information. However, it does not state when to use this tool versus alternatives like get_project_content_locales for reading or translate_entry_locales for entry-level translation, leaving some routing to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_changeA
複数ステップの構造変更を Change Plan として提案(schema/full)。必須: goal, risk, steps(各 step に dry_run + mutation.body)。本ツールは mutations を実行しない。Human が Console で承認するまで pending_approval。先に apply_* / migrate_field_to_master_reference / rename_master_record_slug を dryRun: true で呼び、返却を steps[].dry_run.raw に格納し、本実行用 body を mutation.body に入れる。action は apply_form_blueprint / apply_builtin_form_template / apply_master_blueprint / migrate_field_to_master_reference / rename_master_record_slug。詳細: agent.change-plans / agent.mcp-security-permissions
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | What this multi-step change intends to achieve | |
| risk | Yes | Suggested risk; server may bump from dry_run signals | |
| runId | No | Optional Agent Run correlation (#109) | |
| steps | Yes | Ordered steps with dry_run previews + mutation.body for later execution. Build from apply_* dryRun first. | |
| impact | No | Human-readable impact bullets for Console review |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| changePlan | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the behavioral burden. It clearly states mutations are NOT executed, that the plan sits in pending_approval until a Human approves in Console, and that dry_run outputs are stored verbatim but not re-run. It lacks explicit side-effect details (e.g., audit events or rate limits), but the pending-approval and no-execution behavior is the critical disclosure and is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but purposeful: it front-loads the core purpose and requirements, then gives the critical usage workflow, then the actionable list. Every sentence earns its place; the only slight inefficiency is the repetition of the action enum already present in the schema's enum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers goal, requirements, workflow, non-execution semantics, approval status, and cross-references to detailed docs. With an output schema present and 100% parameter coverage, this is complete for an agent to invoke the tool correctly. The steps.dry_run and mutation.body relationship, which is the trickiest part, is explicitly spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: it explains how steps[].dry_run.raw relates to prior apply_* dryRun calls, that mutation.body is the execution payload for Human approval, and that dryRun must be absent/false at execution time. It also maps the action enum to the sibling tools. This is a clear value-add over the schema's meager property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise action: proposing multi-step structural changes as a Change Plan, scoped to schema/full, and lists the exact required constraints (goal, risk, steps with dry_run + mutation.body). It also names the five supported action types, making the tool's role unambiguous and distinguishable from the apply_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: after calling apply_* / migrate_field_to_master_reference / rename_master_record_slug with dryRun: true, and instructs how to populate steps[].dry_run.raw and mutation.body. It also clarifies that this tool does not execute mutations, which differentiates it from the executor siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_revisionA
リビジョンを公開(1 回で draft→submit→approve。サーバー /publish が中間 revision +1 を吸収)。必須: formSetId, entryId, revisionRowId(= save_revision の id), revision(= save_revision の revision。save 直後の番号で可)。任意: publishAt(予約公開 ISO8601)。can_publish=false のキーは submit までで止まり pendingHumanApproval: true を返す(人間が Console で承認)。詳細: agent.publish-revision / agent.mcp-security-permissions
| Name | Required | Description | Default |
|---|---|---|---|
| entryId | Yes | エントリの UUID(list_entries / create_entry / get_entry の id) | |
| revision | Yes | リビジョン番号(save_revision / list_revisions の revision。publish_revision は save 直後の値で可) | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) | |
| publishAt | No | 予約公開日時(ISO8601・省略時は即時) | |
| revisionRowId | Yes | リビジョン行の UUID(save_revision / list_revisions のレスポンス id。revision 番号ではない) |
Output Schema
| Name | Required | Description |
|---|---|---|
| steps | No | Server-side publish steps already applied |
| revision | No | |
| pendingHumanApproval | No | true → stop; a human must approve in Console |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals important state-transition behavior: the server absorbs the intermediate revision +1, and can_publish=false keys return pendingHumanApproval: true and stop at submit. It also references security/permission docs, giving the agent useful non-obvious context about how the publish flow can diverge.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficiently structured: the core behavior is front-loaded, followed by required and optional parameters, then conditional behavior and doc references. Every sentence contributes actionable information without verbose filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a publish workflow with four required parameters and one scheduling option, the description covers the full state flow, parameter provenance, conditional behavior, and security references. An output schema exists, so return-value documentation is not needed here. No important calling detail appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the parameters. The description adds meaningful cross-tool semantics by mapping revisionRowId to save_revision's id and revision to save_revision's revision, noting that the value immediately after save is acceptable. This contextualizes how to obtain the parameters, going beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('公開' / publish) and resource ('リビジョン'), and clarifies the one-call behavior 'draft→submit→approve', which distinguishes it from related workflow tools like submit_entry_for_review. It also enumerates the required identifiers, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: publishing a saved revision in a single call. It also gives a conditional exclusion for keys where can_publish=false, which stop at submit and require human approval in the Console. It does not explicitly name an alternative tool for manual submit, so it stops short of a full when-vs-alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_master_record_slugARead-onlyIdempotent
Master Record の公開 identifier(slug。互換キー value)をリネームするプレビュー(schema/full)。必須: masterEntityKey, dryRun(true のみ), slug または value, recordId または currentSlug/currentValue。このツールは書き込まない。dryRun: false / 省略は拒否し API を呼ばない。実行は propose_change(action: rename_master_record_slug)。update_master_record の value PATCH は使わない(snapshot が切れ、エージェントキーは 401)。承認後は master_records.value と参照 Field の snapshot を同時に書き換える。execute(Change Plan 承認後)は対象以外の Master Record の sort_order を正規化することがある。dryRun preview を確認。意図しない並び替えなら人間に止めてもらう(ホスト側の仕様確認)。詳細: agent.change-plans / agent.snapshot-field-values。
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | New public identifier. Alias of value (both must match if sent). Required unless value is sent. | |
| value | No | Compat alias of slug. | |
| dryRun | Yes | Must be true. Preview only — this tool never writes and never executes. dryRun:false / omitted is rejected (API is not called). After ok preview, propose_change(action: rename_master_record_slug). Help: agent.change-plans / agent.snapshot-field-values. | |
| recordId | No | Target master record UUID when known. API name: recordId. | |
| currentSlug | No | Current public identifier. Alias of currentValue (both must match if sent). Required when recordId is omitted. | |
| currentValue | No | Compat alias of currentSlug. | |
| masterEntityKey | Yes | Master entity key from list_master_entities (NOT a UUID). API name: masterEntityKey. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the description adds substantial behavioral context beyond them. It discloses that dryRun:false/omitted is rejected without calling the API, that approved execution rewrites master_records.value and referenced Field snapshots, and that sort_order normalization may occur on other records. This is rich transparency that the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not bloated; every sentence conveys necessary constraints, warnings, or routing to propose_change. It is front-loaded with the purpose and required parameters, then covers behavior. Some redundancy exists with the schema-level description, but the tool's complexity justifies the length given the multiple parameter aliases and side-effect warnings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the full workflow: what the tool does, required inputs, rejection behavior, execution path, side effects, and help references. With an output schema present, it does not need to describe return values. Minor gaps are the ambiguous 'schema/full' phrase and reliance on external help docs, but an agent has enough context to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds value by clarifying the required combination groups (masterEntityKey + dryRun:true, slug or value, recordId or currentSlug/currentValue) and reinforcing that dryRun must be true. This cross-parameter logic is not obvious from individual property descriptions, so it earns above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a preview (schema/full) for renaming a Master Record's public identifier (slug/value). It explicitly says 'this tool does not write' and lists required parameters, making its scope unambiguous. It also differentiates from siblings by explaining that execution happens via propose_change and that update_master_record's value PATCH must not be used.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: use this preview with dryRun:true, and then execute via propose_change(action: rename_master_record_slug). It explicitly warns against using update_master_record for this purpose and explains the consequences (snapshot breaks, 401). It also advises checking the dryRun preview for unintended sort_order changes, which is a clear conditional usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_revisionAIdempotent
エントリ本文を新しい下書きリビジョンとして保存。必須: formSetId, entryId, snapshot。snapshot は { [formKey]: { [fieldKey]: value } }(フォームキー配下にネスト)。フラットな field_key トップレベルは 400。任意: idempotencyKey。返却の id → publish_revision の revisionRowId、revision → publish_revision の revision。形は get_form_set_schema または luno://content/schema-guide。
| Name | Required | Description | Default |
|---|---|---|---|
| entryId | Yes | エントリの UUID(list_entries / create_entry / get_entry の id) | |
| snapshot | Yes | Nested snapshot: { [formKey]: { [fieldKey]: value } }. NOT flat { fieldKey: value }. NOT Contact Form fields[]. See luno://content/schema-guide. | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) | |
| idempotencyKey | No | 冪等キー(同一キー+同一引数の再送は同じ revision 行。異なる引数での再送は409 IDEMPOTENCY_KEY_CONFLICT。24時間で失効) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | revisionRowId for get_pub_preview_url / publish_revision |
| status | Yes | draft | pending_review | published | … |
| revision | Yes | revision number for publish_revision |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond annotations: it specifies that a flat top-level field_key snapshot returns 400, explains idempotency key semantics with 409 conflicts and 24-hour expiry, and describes how the returned id and revision feed into publish_revision. This is valuable operational context not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every part of the description earns its place: purpose, required parameters, snapshot shape constraint, optional idempotency key, error behavior, and cross-tool return value mapping. It is front-loaded with the primary purpose and is dense without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the nested snapshot object, the presence of an output schema, and the idempotency behavior, the description is complete. It covers the required structure, the common failure mode (flat snapshot), idempotency semantics, and the downstream publish_revision contract, all while referencing get_form_set_schema and the schema guide for field-shape details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters thoroughly. The description restates the required parameters and nested snapshot shape, but adds little parameter-level meaning beyond what the schema provides. The main extra value is the output-to-publish_revision mapping, which is not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'エントリ本文を新しい下書きリビジョンとして保存' (save entry body as a new draft revision). It clearly identifies the tool as creating a draft revision rather than publishing or listing revisions, which distinguishes it from siblings like publish_revision and list_revisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context of saving a new draft revision is clear, and the return-value mapping to publish_revision implies the workflow for which this tool is used. However, there is no explicit when-to-use or when-not-to-use guidance, and alternatives like update_entry or create_entry are not mentioned or excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_admin_helpARead-onlyIdempotent
ヘルプ KB 検索。必須: q。任意: locale(ja|en), limit(既定 20)。category agent(snapshot / Form Blueprint / 公開 API / publish_revision)もヒット。
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | 検索クエリ | |
| limit | No | 最大件数(既定 20) | |
| locale | No | レスポンス locale(既定 ja) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds genuine behavioral context beyond annotations and schema: the category agent also hits snapshot / Form Blueprint / public API / publish_revision content, meaning search results are not limited to standard help pages. Defaults for limit and locale are stated, though these duplicate the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient: purpose is front-loaded, the parameter essentials (required/optional, enums, defaults) are packed into one compact clause, and the category note is the only extra. The telegraphic style sacrifices prose flow for information density, but every fragment earns its place; it could read slightly more naturally without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since an output schema exists, return-value explanation is unnecessary; combined with 100% parameter coverage and read-only/idempotent annotations, the definition is nearly complete. The one meaningful gap is the absence of guidance for choosing among search_admin_help, get_admin_help_article, and ask_admin_help — a boundary that would make this definition fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies. The description restates q as required, locale and limit as optional with defaults, which adds nothing beyond what the schema already documents. The category note is parameter-adjacent but describes search scope/behavior, not the meaning of any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair, 「ヘルプ KB 検索」 (search Help KB), and further sharpens scope with 「category agent(snapshot / Form Blueprint / 公開 API / publish_revision)もヒット」, clarifying what content the search will match. An agent can immediately tell this is query-based KB search rather than article retrieval (get_admin_help_article) or conversational Q&A (ask_admin_help), even without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The required q parameter and the verb 検索 imply this tool is for query-driven search of the help KB, so usage context is present. However, the description never states when to prefer this over the two closely-related siblings get_admin_help_article and ask_admin_help, nor gives any exclusions. With 52 siblings, explicit routing guidance would materially reduce mis-selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_agent_runA
エージェントタスクの Run を開始(schema/full)。必須: goal。任意: clientLabel(cursor / claude-code / mcp 等)。返却 agentRun.id を以降のツール呼び出しに X-Agent-Run-Id として自動付与(本 MCP セッション内)。詳細: settings.agent-activity / agent.mcp-security-permissions
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | What this agent task intends to accomplish | |
| clientLabel | No | Optional client label, e.g. cursor, claude-code, mcp |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No | |
| agentRun | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotation hints false, the description carries the full disclosure burden, and it discloses the most important non-obvious behavior: the returned agentRun.id is automatically propagated as X-Agent-Run-Id on subsequent tool calls within this MCP session — a session-scoped side effect an agent must know to use the tool correctly. It also points to settings (agent-activity, mcp-security-permissions) that can affect behavior. It does not contradict the annotations; it could further cover failure behavior, but the critical trait is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action, then parameters, then the critical session-scoped ID side effect. No sentence is wasted. The trailing settings reference is cryptic (bare path names with no explanation) and 'schema/full' is unexplained, which keeps it from a 5, but the structure is efficient and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is handled elsewhere, and the description adds the crucial auto-injection side effect plus settings pointers that an agent cannot infer from the schema. Minor gaps remain: no lifecycle guidance about pairing with end_agent_run or get_agent_run, and no warning about the effects of starting multiple concurrent runs. Strong for a session-starter tool, but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters adequately. The description adds the clientLabel examples and confirms the required/optional split, but introduces no deeper semantic meaning beyond what the schema provides. This matches the baseline-3 expectation when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('エージェントタスクの Run を開始' — start an agent task run), which clearly states the tool's core action. It is implicitly distinct from sibling tools get_agent_run and end_agent_run by the action type, though it never names them explicitly. The trailing '(schema/full)' fragment is slightly opaque but does not obscure the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear invocation context: goal is explicitly marked 必須 (required) and clientLabel 任意 (optional) with concrete examples (cursor/claude-code/mcp). The post-condition — auto-attaching the returned agentRun.id as X-Agent-Run-Id to subsequent calls within the session — is valuable usage guidance. It provides no exclusions or explicit alternatives, but the context given is concrete rather than merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_entry_for_reviewA
指定リビジョンを承認申請する(公開まで一括したい場合は publish_revision を優先)。必須: formSetId, entryId, revisionRowId(= save_revision の id), revision(= save_revision の revision)。
| Name | Required | Description | Default |
|---|---|---|---|
| entryId | Yes | エントリの UUID(list_entries / create_entry / get_entry の id) | |
| revision | Yes | リビジョン番号(save_revision / list_revisions の revision。publish_revision は save 直後の値で可) | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) | |
| revisionRowId | Yes | リビジョン行の UUID(save_revision / list_revisions のレスポンス id。revision 番号ではない) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clarifies the core behavior—creating/submitting an approval request for a revision—and distinguishes it from direct publication. Annotations already indicate a non-read-only, non-idempotent, non-destructive operation; the description adds the workflow context. It does not discuss permissions, reversibility, or side effects in depth, but the essential behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the core purpose and the alternative routing before the parameter list, and contains no filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-step workflow tool, it provides purpose, an explicit alternative, and required parameter sources, and the output schema covers return values. It omits details such as required prior state of the revision or approval workflow behavior, but those are not essential for invoking the call correctly given the schema-rich inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains revisionRowId as save_revision/list_revisions response id and revision as save_revision/list_revisions revision number. The description repeats this provenance without adding new parameter semantics, so it stays at the baseline for fully documented schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: '指定リビジョンを承認申請する' (submit the specified revision for approval). It also differentiates itself from the sibling publish_revision by noting that sibling is for batching all the way to publication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance: if you want to go through to public release in one step, prefer publish_revision. The required parameters are also listed with their provenance from save_revision, which tells an agent where in the workflow this tool fits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_entry_localesA
text/textarea/tiptap をソース言語から他ロケールへ AI 翻訳(Standard+・AI チケット 1/回)。必須: sourceLocale, targetLocales(1–3), fields(各 formKey/fieldKey/type/sourceText)。返却 items を snapshot にマージして save_revision。
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | 翻訳対象フィールド配列 | |
| sourceLocale | Yes | 翻訳元 locale | |
| targetLocales | Yes | 翻訳先 locale 配列 |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful behavioral details: it consumes an AI ticket per call, requires Standard+ plan, and it merges returned items into a snapshot and then calls save_revision. This clearly communicates side effects and cost, which the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one dense, front-loaded sentence covering action, cost, required parameters, and the save-revision post-condition. Every clause carries information, with no filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core invocation requirements, side effects, and cost model. With an output schema present and full parameter documentation, very little is missing for an agent to call this tool correctly, though it could have elaborated on snapshot semantics or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description restates required fields and constraints such as targetLocales (1–3) and fields structure, but adds little semantic value beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: AI-translating text/textarea/tiptap content from a source locale to other locales. It also names the required payload shape and the follow-up merge into a snapshot with save_revision, clearly distinguishing this from generic CRUD and revision tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when AI translation of entry fields across locales is needed, and it explains required inputs. However, it does not explicitly state when not to use it, nor does it reference alternatives such as save_revision or other locale-related tools among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contact_formADestructiveIdempotent
Contact Form を更新(PUT・schema/full。GET した全フィールドを body に含める)。必須: formId(Contact Form UUID), slug, name, recipient_email, fields。任意: autoreply_*, email_signature。fields は { key, type, label:{ja,en}, required }[](Form Set の fieldKey ではない)。詳細: agent.contact-form-mcp。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | 表示名 | |
| slug | Yes | Contact Form slug | |
| fields | Yes | Contact Form fields(必須)。{ key, type, label:{ja,en}, required }。NOT fieldKey. | |
| formId | Yes | Contact Form の UUID(作成・一覧レスポンスの id) | |
| autoreply_body | No | 自動返信の本文 { ja, en }。plain string は不可 | |
| email_signature | No | 通知メール末尾の署名 { ja, en } | |
| recipient_email | Yes | 通知先メール | |
| autoreply_enabled | No | true で送信者へ自動返信メールを送る。省略時はオフ | |
| autoreply_subject | No | 自動返信の件名 { ja, en }。plain string は不可 | |
| autoreply_to_field | No | 自動返信の宛先にする fields[].key(通常 type=email)。無効時は null |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=true, and the description adds the key behavior that this is a full PUT (schema/full) and that the body must contain all fields from GET—implying replacement semantics. It also warns that fields uses key, not Form Set fieldKey, a common point of confusion. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences front-load the operation (update, PUT, full schema) then enumerate required/optional parameters and the fields format caveat. There is no filler, and the reference '詳細: agent.contact-form-mcp' is tucked at the end. It earns full marks for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters and nested objects, the description plus a 100%-covered schema and output schema cover the essentials: what, how, required/optional, and the field-key caveat. It doesn't explicitly address when to choose create_contact_form instead, and the '詳細: agent.contact-form-mcp' pointer is vague, leaving a small gap in guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns extra by grouping required and optional parameters and by explicitly flagging that fields is { key, type, label:{ja,en}, required }[] and NOT Form Set's fieldKey, which prevents an agent from using the wrong identifier. The 'GET した全フィールド' note also clarifies that the parameter set mirrors the GET response.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Contact Form を更新' (update Contact Form) and specifies the HTTP method PUT with schema/full, a clear verb+resource pair. It distinguishes the tool from the sibling create_contact_form by framing it as a full update that must include all fields from a preceding GET, so an agent can tell this from create without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear operational context: invoke after GET, include every field in the body, and only for existing Contact Forms (required formId UUID). It does not explicitly name create_contact_form as the alternative or state a when-not condition, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_entryCIdempotent
エントリの slug を更新。必須: formSetId, entryId, slug。
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | 新しいエントリ slug | |
| entryId | Yes | エントリの UUID(list_entries / create_entry / get_entry の id) | |
| formSetId | Yes | Form Set の UUID(list_form_sets / apply_builtin_form_template / apply_form_blueprint / archive_form_set のレスポンス id。Form Set の slug 文字列ではない) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read, non-destructive, idempotent operation. The description adds no additional behavioral context, such as slug uniqueness implications, effects on existing URLs, or validation behavior beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence with no filler. It front-loads the key purpose and required parameters, though it could have included slightly more contextual guidance without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update operation with a fully documented schema and an output schema present, the description is minimally viable. It covers the core purpose and required inputs but lacks usage guidance and behavioral side effects, leaving some gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters already documented in detail. The description only restates the required parameter names without adding new meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: updating an entry's slug, with a specific verb and resource. It is distinct from create/list operations but does not explicitly differentiate from sibling update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like create_entry, save_revision, or translate_entry_locales. The required parameters are listed, but no context or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_login_appearanceAIdempotent
管理画面ログインの見た目を更新。任意(1 つ以上推奨): adminLoginBackground(cosmic|gradient|plain|none・Standard+), adminLoginHideLunoLogo, adminLoginHidePoweredBy(Business+)。
| Name | Required | Description | Default |
|---|---|---|---|
| adminLoginBackground | No | 背景スタイル(Standard+) | |
| adminLoginHideLunoLogo | No | LUNO ロゴ非表示(Business+) | |
| adminLoginHidePoweredBy | No | Powered by 非表示(Business+) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds the plan-tier constraints (Standard+, Business+) which warn about parameter availability, a genuinely useful behavioral caveat, though it largely mirrors the schema's per-parameter notes. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with the purpose front-loaded and the parameter list compactly organized. It is efficient, though the per-parameter details partially duplicate the schema; the '1 つ以上推奨' note earns its place as additive guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, all-optional update tool with an output schema and safety-relevant annotations present, the description covers the key decision factors: what gets updated, which parameters exist, and plan-level availability. The main gap is the lack of explicit routing to the read sibling get_login_appearance, but this is a minor omission given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented (background enum values, hide-logo boolean, hide-powered-by boolean, plan tiers). The description restates the parameters and enum options but adds only one piece of new guidance: that one or more should be provided. Baseline 3 is appropriate since the schema carries the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource pair: '管理画面ログインの見た目を更新' (update the appearance of the admin console login). This clearly names the mutation action and its target, and the explicit parameter list scopes exactly what aspects are editable, distinguishing it from the read-only sibling get_login_appearance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '更新' (update) verb and the parameter enumeration imply the usage context, and '任意(1 つ以上推奨)' gives useful call-construction guidance that at least one optional parameter should be provided. However, there is no explicit when-to-use vs. when-not-to-use statement, and the read-side alternative get_login_appearance is never named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_master_recordAIdempotent
マスタレコードを更新。必須: entityId, recordId。任意: label, value, sortOrder, parentRecordId, data, color(#RRGGBB。null で消す)。エージェント API キーでは不可(401 — ユーザ JWT + 編集権限が必要)。identifier(slug / value)の変更は rename_master_record_slug → propose_change。並び替え・色の一括は apply_master_blueprint を使う。
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | 追加 JSON。既知キー以外の拡張データ | |
| color | No | 任意の #RRGGBB。null で色を消す | |
| label | No | 表示ラベル(string または { ja, en } 等の locale map) | |
| value | No | 選択肢 value。select/radio snapshot に入れる文字列 | |
| entityId | Yes | マスタエンティティ UUID(list_master_entities の id) | |
| recordId | Yes | マスタレコード UUID(list_master_records / create_master_record の id) | |
| sortOrder | No | 並び順(小さいほど先) | |
| parentRecordId | No | 親レコード UUID。ルートは null。階層マスタのみ |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds critical behavioral context beyond those: agent API keys are rejected with 401, color accepts null to clear the value, and identifier changes require a different workflow. This gives the agent important operational details that annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core action, required params, auth restriction, and routing to alternatives are all stated in a few sentences with no filler. Every sentence carries operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, nested objects, and an output schema, the description covers the essential operational context: required vs optional params, auth constraints, when to delegate to siblings, and the null behavior for color. Since an output schema exists and annotations cover idempotency/safety, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter semantics are already fully documented. The description restates required vs optional params and mentions the color null behavior, which mirrors the schema. It adds no significant new meaning beyond a concise summary, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('マスタレコードを更新' – update master record) and immediately enumerates the required and optional parameters. It also distinguishes itself from related tools by naming rename_master_record_slug and apply_master_blueprint for identifier changes and batch operations, so an agent can tell what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when NOT to use this tool: identifier (slug/value) changes should go through rename_master_record_slug → propose_change, and batch sorting/color should use apply_master_blueprint. It also states the auth requirement (user JWT + edit permission, agent API key rejected with 401), giving clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_master_treeADestructiveIdempotent
階層マスタの親子・並び順を一括更新。必須: entityId, updates(全レコードを含める配列。各要素に id, parent_record_id, sort_order)。エージェントキーでは 403。
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | 全レコード分の tree 更新 | |
| entityId | Yes | マスタエンティティ UUID(list_master_entities の id) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and idempotent; the description adds meaningful context beyond that by requiring the full record set, implying a whole-tree replacement, and by disclosing the agent-key 403 restriction. No contradiction with readOnlyHint=false or destructiveHint=true is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the action and resource, then lists the required parameters, the all-records condition, and the auth caveat. There is no filler or redundant restatement of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive bulk tree mutation, the description covers required inputs, the full-record replacement expectation, and the critical 403 restriction for agent keys. With an output schema present and idempotent/destructive annotations already provided, nothing essential for correct invocation is missing, though naming the single-record sibling would improve completeness slightly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full descriptions for entityId and the updates array items, so the baseline is 3. The description adds the non-obvious semantic constraint that updates must include all records, which is not expressed in the schema, elevating it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb, '一括更新' (batch update), targeting '階層マスタの親子・並び順' (parent-child relationships and sort order of a hierarchy master). This clearly distinguishes the tool from single-record operations such as update_master_record and makes the bulk, tree-level scope explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the required arguments and the important condition that the updates array must contain all records. It also warns that agent keys receive a 403, which is a clear usage restriction. It does not explicitly name alternatives like update_master_record for single-record updates, so it falls just short of full when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_mediaA
メディアライブラリへ画像/ファイルをアップロード(POST /v1/media)。必須(いずれか一方): sourceUrl / base64 / filePath(ローカルパス推奨)。任意: filename, mimeType, folderId。返却 id(UUID)を image / image_gallery に入れる(luno://content/schema-guide)。外部 URL を snapshot に直書きしない。stg/prod へローカル画像を上げるときは filePath(sourceUrl の 127.0.0.1 は届かない)。
| Name | Required | Description | Default |
|---|---|---|---|
| base64 | No | File content as base64 | |
| filePath | No | Local path on MCP host (recommended for stg/prod uploads) | |
| filename | No | Upload filename | |
| folderId | No | Media folder UUID | |
| mimeType | No | MIME type | |
| sourceUrl | No | http(s) URL the LUNO server fetches (not for localhost from remote MCP) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a mutating, non-idempotent operation. The description adds genuinely useful behavioral context beyond that: the server fetches from sourceUrl, localhost URLs fail from a remote MCP host, and the returned id must be routed into image/image_gallery fields. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but every clause earns its place: purpose, required/optional parameter groups, downstream usage, and two operational gotchas. Information is ordered logically from what → how → what-next → pitfalls, with no redundancy against the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param write tool with full schema coverage, output schema, and annotations, the description covers the key decision (source selection), the key failure mode (localhost from remote MCP), and the correct follow-up (use returned id in image/image_gallery). Minor omissions like auth/permission requirements are not disclosed, but complexity level is well served.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each parameter. The description adds critical meaning beyond the schema: the 'exactly one of sourceUrl/base64/filePath' constraint (which the schema incorrectly leaves all-optional) and the recommendation/preference between filePath and sourceUrl depending on environment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb (upload) + resource (media library) plus the exact endpoint (POST /v1/media), making the operation unambiguous. It also states what the tool returns (id UUID) and is clearly distinguishable from the read-only sibling list_media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit selection rules among the three mutually exclusive sources (sourceUrl/base64/filePath) and environment-specific guidance: use filePath for local images in stg/prod because sourceUrl with 127.0.0.1 won't reach. Includes exclusions (don't write external URLs directly into snapshot), though it doesn't explicitly name sibling tools as alternatives for the when-not-to-use decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_master_blueprintARead-onlyIdempotent
Master Blueprint を検証(schema/full)。必須: entities(1 件以上の配列)。各 entity: key, name, records[{ value, label, sort_order }]。適用はしない。詳細: agent.master-blueprint-mcp, luno://content/schema-guide。
| Name | Required | Description | Default |
|---|---|---|---|
| entities | Yes | Master Blueprint entities array. Help: agent.master-blueprint-mcp. publish:true reflects to public master API. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Primary resource UUID for the next tool call |
| ok | No | |
| name | No | |
| slug | No | URL slug when the resource has one |
| items | No | List rows; pass item.id to get_*/update_* |
| status | No | Resource or revision status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it validates schema/full and that it does not apply changes, which is valuable behavioral context beyond the annotations. It also notes the tool is read-only in effect. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: three sentences including requirements, behavior, and pointers to further docs. Information is front-loaded with the action and scope. A small deduction because the schema size is large relative to the description, but the description itself is efficient and every sentence carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a validation-only tool with a full input schema and an output schema present, the description covers what validates, required top-level shape, required fields per entity, that it doesn't apply, and where to get more details. Annotations cover safety and idempotency. Nothing critical is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents the single entities parameter and all nested fields thoroughly. The description adds a top-level constraint (entities must be a non-empty array, each entity must have key, name, records with value/label/sort_order), but this mostly repeats what the schema already encodes. The description does clarify 'sort_order' is required in the text but the schema marks records items requiring value and label only; however, the text appears consistent with the schema's nested requirements. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (validate), a specific resource (Master Blueprint), and the validation scope (schema/full). It also explicitly says validation is not applied, which distinguishes it from apply_master_blueprint. However, it doesn't explicitly name that sibling or other alternatives, so differentiation is mostly implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says '適用はしない' (does not apply), which clearly signals this is a validation-only tool, distinct from apply_master_blueprint and similar mutation tools. It also points to external help references (agent.master-blueprint-mcp, luno://content/schema-guide). It gives clear context for when to use the tool but doesn't explicitly state when not to use it or name alternatives.
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.
3 tool updates
v0.1.6- Added
get_mcp_runtime - Changed
migrate_field_to_master_reference1 field changed- changed
Input schema / descriptionPrevious value: -"enum → Master Reference preview. Required: formSetSlug, fieldKey, masterEntityKey, dryRun:true. Do not use apply_form_blueprint / update_field / update_field_type. Execute via propose_change. Help: agent.change-plans / agent.form-blueprint-mcp."New value: +"enum → Master Reference preview. Required: formSetSlug, fieldKey, masterEntityKey, dryRun:true. Do not use apply_form_blueprint / update_field / update_field_type. Execute via propose_change. Snapshot values become Master value (frontend hardcoded compares are a separate change). If dryRun sees no enum, constraints may be a JSONB string — inspect get_form_set_schema. Help: agent.change-plans / agent.form-blueprint-mcp."
- Changed
rename_master_record_slug1 field changed- changed
Input schema / descriptionPrevious value: -"Master Record slug rename preview. Required: masterEntityKey, dryRun:true, slug or value, and recordId or currentSlug/currentValue. Public name is slug; value is compat dual. Do not PATCH update_master_record for identifier changes. Execute via propose_change. Help: agent.change-plans / agent.snapshot-field-values."New value: +"Master Record slug rename preview. Required: masterEntityKey, dryRun:true, slug or value, and recordId or currentSlug/currentValue. Public name is slug; value is compat dual. Do not PATCH update_master_record for identifier changes. Execute via propose_change may renormalize sort_order on other records — inspect dryRun preview. Help: agent.change-plans / agent.snapshot-field-values."
9 tool updates
v0.1.5- Changed
apply_form_blueprint1 field changed- changed
Input schema / properties / dryRun / descriptionPrevious value: -"true で適用せずプレビュー"New value: +"true で適用せず実行可能性を検証。ok+wouldSucceed のときだけ本実行。kind=create は新規、kind=update は加算、kind=migrate は textarea→tiptap"
- Changed
apply_master_blueprint2 fields changed- changed
Input schema / properties / entities / items / properties / records / items / descriptionPrevious value: -"Master record row. Agents cannot call update_master_record — set sort_order here."New value: +"Master record row. Agents cannot call update_master_record — set sort_order and optional color here." - added
Input schema / properties / entities / items / properties / records / items / properties / colorAdded value: +{ + "anyOf": [ + { + "pattern": "^#[0-9a-fA-F]{6}$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Optional #RRGGBB. Omit keeps existing color (create = none). null clears." +}
- Changed
create_contact_form1 field changed- added
Input schema / properties / dryRunAdded value: +{ + "description": "true で作成せず検証のみ。ok+wouldSucceed のときだけ本実行。削除不可なので dryRun を省略しない", + "type": "boolean" +}
- Changed
create_master_record1 field changed- added
Input schema / properties / colorAdded value: +{ + "anyOf": [ + { + "pattern": "^#[0-9a-fA-F]{6}$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "任意の #RRGGBB。省略または null は色なし" +}
- Added
migrate_field_to_master_reference - Changed
propose_change2 fields changed- changed
Input schema / properties / steps / items / properties / action / descriptionPrevious value: -"apply_form_blueprint | apply_builtin_form_template | apply_master_blueprint"New value: +"apply_form_blueprint | apply_builtin_form_template | apply_master_blueprint | migrate_field_to_master_reference | rename_master_record_slug" - changed
Input schema / properties / steps / items / properties / action / enumPrevious value: -[ - "apply_form_blueprint", - "apply_builtin_form_template", - "apply_master_blueprint" -]New value: +[ + "apply_form_blueprint", + "apply_builtin_form_template", + "apply_master_blueprint", + "migrate_field_to_master_reference", + "rename_master_record_slug" +]
- Added
rename_master_record_slug - Changed
update_master_record1 field changed- added
Input schema / properties / colorAdded value: +{ + "anyOf": [ + { + "pattern": "^#[0-9a-fA-F]{6}$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "任意の #RRGGBB。null で色を消す" +}
- Changed
validate_master_blueprint2 fields changed- changed
Input schema / properties / entities / items / properties / records / items / descriptionPrevious value: -"Master record row. Agents cannot call update_master_record — set sort_order here."New value: +"Master record row. Agents cannot call update_master_record — set sort_order and optional color here." - added
Input schema / properties / entities / items / properties / records / items / properties / colorAdded value: +{ + "anyOf": [ + { + "pattern": "^#[0-9a-fA-F]{6}$", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Optional #RRGGBB. Omit keeps existing color (create = none). null clears." +}
49 tool updates
v0.1.4- Changed
add_console_login_ip_allowlist1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
apply_builtin_form_template1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
apply_form_blueprint12 fields changed- added
Input schema / properties / blueprint / properties / contentListColumns / descriptionAdded value: +"Console entry-list columns" - added
Input schema / properties / blueprint / properties / contentListColumns / items / properties / fieldKey / descriptionAdded value: +"Field key shown as a list column" - added
Input schema / properties / blueprint / properties / contentListColumns / items / properties / formKey / descriptionAdded value: +"Form block key" - added
Input schema / properties / blueprint / properties / contentSearchColumns / descriptionAdded value: +"Console entry-search columns" - added
Input schema / properties / blueprint / properties / contentSearchColumns / items / properties / fieldKey / descriptionAdded value: +"Field key included in search" - added
Input schema / properties / blueprint / properties / contentSearchColumns / items / properties / formKey / descriptionAdded value: +"Form block key" - added
Input schema / properties / blueprint / properties / forms / items / properties / label / descriptionAdded value: +"Form block display label" - added
Input schema / properties / blueprint / properties / forms / items / properties / sortOrder / descriptionAdded value: +"Form block order" - added
Input schema / properties / blueprint / properties / forms / items / properties / sort_order / descriptionAdded value: +"Snake_case alias for sortOrder" - added
Input schema / properties / blueprint / properties / notes / descriptionAdded value: +"Human-readable notes for Console review" - added
Input schema / properties / blueprint / properties / provenance / descriptionAdded value: +"Optional origin metadata (not applied as schema)" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
apply_master_blueprint2 fields changed- added
Input schema / properties / entities / items / properties / description / descriptionAdded value: +"Master entity description" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
archive_form_set1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
ask_admin_help1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
bulk_create_entries1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
create_contact_form17 fields changed- added
Input schema / properties / autoreply_body / descriptionAdded value: +"自動返信の本文 { ja, en }。plain string は不可" - added
Input schema / properties / autoreply_body / properties / en / descriptionAdded value: +"English text" - added
Input schema / properties / autoreply_body / properties / ja / descriptionAdded value: +"日本語テキスト" - added
Input schema / properties / autoreply_enabled / descriptionAdded value: +"true で送信者へ自動返信メールを送る。省略時はオフ" - added
Input schema / properties / autoreply_subject / descriptionAdded value: +"自動返信の件名 { ja, en }。plain string は不可" - added
Input schema / properties / autoreply_subject / properties / en / descriptionAdded value: +"English text" - added
Input schema / properties / autoreply_subject / properties / ja / descriptionAdded value: +"日本語テキスト" - added
Input schema / properties / autoreply_to_field / descriptionAdded value: +"自動返信の宛先にする fields[].key(通常 type=email)。無効時は null" - added
Input schema / properties / email_signature / descriptionAdded value: +"通知メール末尾の署名 { ja, en }" - added
Input schema / properties / email_signature / properties / en / descriptionAdded value: +"English text" - added
Input schema / properties / email_signature / properties / ja / descriptionAdded value: +"日本語テキスト" - added
Input schema / properties / fields / items / properties / acceptedTypes / descriptionAdded value: +"type=file の accept 属性(例: image/*)" - added
Input schema / properties / fields / items / properties / maxFileSizeMb / descriptionAdded value: +"type=file の最大サイズ(MB)" - changed
Input schema / properties / fields / items / properties / options / items / properties / label / descriptionPrevious value: -"Locale map { ja, en }. A plain string is invalid."New value: +"選択肢ラベル { ja, en }" - added
Input schema / properties / fields / items / properties / options / items / properties / value / descriptionAdded value: +"選択肢 value(送信値)" - changed
Input schema / properties / fields / items / properties / placeholder / descriptionPrevious value: -"Locale map { ja, en }. A plain string is invalid."New value: +"入力欄プレースホルダ { ja, en }" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
create_entry1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
create_master_record1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
delete_console_login_ip_allowlist1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "deleted": { + "description": "Deleted IP allowlist rule UUID", + "type": "string" + } + }, + "required": [ + "deleted" + ], + "type": "object" +}
- Added
end_agent_run - Changed
get_admin_help_article1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Added
get_agent_run - Added
get_change_plan - Changed
get_entry1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_form_set_schema1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "formSet": { + "additionalProperties": {}, + "properties": { + "id": { + "description": "formSetId", + "type": "string" + }, + "name": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "id", + "slug", + "name" + ], + "type": "object" + }, + "forms": { + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "mastersSummary": { + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "snapshotShape": { + "additionalProperties": {}, + "description": "Use example as the save_revision snapshot nest shape", + "properties": { + "description": { + "type": "string" + }, + "example": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "formKeys": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "required": [ + "formSet", + "forms" + ], + "type": "object" +}
- Changed
get_funnel_status1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_login_appearance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_login_branding1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_master_entity1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_project_content_locales1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_project_overview1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_pub_preview_url1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "url": { + "description": "Browser URL for a human to preview the draft", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_public_api_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "adminApiUrl": { + "type": "string" + }, + "exampleEntryUrl": { + "type": "string" + }, + "exampleMasterEntitiesUrl": { + "type": "string" + }, + "exampleMasterRecordsUrl": { + "type": "string" + }, + "hostBasedPublicApiBaseUrl": { + "type": "string" + }, + "notes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "projectId": { + "description": "Agent key project UUID", + "type": "string" + }, + "publicApiBaseUrl": { + "description": "Preferred /public/p/{projectId}/v1 base", + "type": "string" + } + }, + "required": [ + "projectId", + "adminApiUrl", + "publicApiBaseUrl", + "hostBasedPublicApiBaseUrl", + "exampleEntryUrl", + "exampleMasterEntitiesUrl", + "exampleMasterRecordsUrl", + "notes" + ], + "type": "object" +}
- Changed
get_tenant_schema1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_builtin_form_templates1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_console_login_ip_allowlists1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_entries1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_form_sets1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_master_entities1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_master_records1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_media1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
list_revisions1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "items": { + "description": "Revisions; use id + revision to publish", + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "description": "revisionRowId for get_pub_preview_url / publish_revision", + "type": "string" + }, + "revision": { + "description": "revision number for publish_revision", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "status": { + "description": "draft | pending_review | published | …", + "type": "string" + } + }, + "required": [ + "id", + "revision", + "status" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "items" + ], + "type": "object" +}
- Changed
patch_project_content_locales1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Added
propose_change - Changed
publish_revision1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "pendingHumanApproval": { + "description": "true → stop; a human must approve in Console", + "type": "boolean" + }, + "revision": { + "additionalProperties": {}, + "properties": { + "id": { + "description": "revisionRowId for get_pub_preview_url / publish_revision", + "type": "string" + }, + "revision": { + "description": "revision number for publish_revision", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "status": { + "description": "draft | pending_review | published | …", + "type": "string" + } + }, + "required": [ + "id", + "revision", + "status" + ], + "type": "object" + }, + "steps": { + "description": "Server-side publish steps already applied", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
save_revision1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "properties": { + "id": { + "description": "revisionRowId for get_pub_preview_url / publish_revision", + "type": "string" + }, + "revision": { + "description": "revision number for publish_revision", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "status": { + "description": "draft | pending_review | published | …", + "type": "string" + } + }, + "required": [ + "id", + "revision", + "status" + ], + "type": "object" +}
- Changed
search_admin_help1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Added
start_agent_run - Changed
submit_entry_for_review1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
translate_entry_locales3 fields changed- added
Input schema / properties / fields / items / properties / label / descriptionAdded value: +"フィールド表示名(プロンプト用。省略可)" - added
Input schema / properties / fields / items / properties / type / descriptionAdded value: +"翻訳対象フィールド型(text | textarea | tiptap)" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
update_contact_form17 fields changed- added
Input schema / properties / autoreply_body / descriptionAdded value: +"自動返信の本文 { ja, en }。plain string は不可" - added
Input schema / properties / autoreply_body / properties / en / descriptionAdded value: +"English text" - added
Input schema / properties / autoreply_body / properties / ja / descriptionAdded value: +"日本語テキスト" - added
Input schema / properties / autoreply_enabled / descriptionAdded value: +"true で送信者へ自動返信メールを送る。省略時はオフ" - added
Input schema / properties / autoreply_subject / descriptionAdded value: +"自動返信の件名 { ja, en }。plain string は不可" - added
Input schema / properties / autoreply_subject / properties / en / descriptionAdded value: +"English text" - added
Input schema / properties / autoreply_subject / properties / ja / descriptionAdded value: +"日本語テキスト" - added
Input schema / properties / autoreply_to_field / descriptionAdded value: +"自動返信の宛先にする fields[].key(通常 type=email)。無効時は null" - added
Input schema / properties / email_signature / descriptionAdded value: +"通知メール末尾の署名 { ja, en }" - added
Input schema / properties / email_signature / properties / en / descriptionAdded value: +"English text" - added
Input schema / properties / email_signature / properties / ja / descriptionAdded value: +"日本語テキスト" - added
Input schema / properties / fields / items / properties / acceptedTypes / descriptionAdded value: +"type=file の accept 属性(例: image/*)" - added
Input schema / properties / fields / items / properties / maxFileSizeMb / descriptionAdded value: +"type=file の最大サイズ(MB)" - changed
Input schema / properties / fields / items / properties / options / items / properties / label / descriptionPrevious value: -"Locale map { ja, en }. A plain string is invalid."New value: +"選択肢ラベル { ja, en }" - added
Input schema / properties / fields / items / properties / options / items / properties / value / descriptionAdded value: +"選択肢 value(送信値)" - changed
Input schema / properties / fields / items / properties / placeholder / descriptionPrevious value: -"Locale map { ja, en }. A plain string is invalid."New value: +"入力欄プレースホルダ { ja, en }" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
update_entry1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
update_login_appearance1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
update_master_record6 fields changed- added
Input schema / properties / data / descriptionAdded value: +"追加 JSON。既知キー以外の拡張データ" - added
Input schema / properties / label / descriptionAdded value: +"表示ラベル(string または { ja, en } 等の locale map)" - added
Input schema / properties / parentRecordId / descriptionAdded value: +"親レコード UUID。ルートは null。階層マスタのみ" - added
Input schema / properties / sortOrder / descriptionAdded value: +"並び順(小さいほど先)" - added
Input schema / properties / value / descriptionAdded value: +"選択肢 value。select/radio snapshot に入れる文字列" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
update_master_tree3 fields changed- added
Input schema / properties / updates / items / properties / parent_record_id / descriptionAdded value: +"親レコード UUID。ルートは null" - added
Input schema / properties / updates / items / properties / sort_order / descriptionAdded value: +"同じ親の下での並び(0始まり)" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
upload_media1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
- Changed
validate_master_blueprint2 fields changed- added
Input schema / properties / entities / items / properties / description / descriptionAdded value: +"Master entity description" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": {}, + "definitions": { + "__schema0": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + }, + { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + }, + { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + ] + } + }, + "properties": { + "id": { + "description": "Primary resource UUID for the next tool call", + "type": "string" + }, + "items": { + "description": "List rows; pass item.id to get_*/update_*", + "items": { + "additionalProperties": { + "$ref": "#/definitions/__schema0" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "slug": { + "description": "URL slug when the resource has one", + "type": "string" + }, + "status": { + "description": "Resource or revision status", + "type": "string" + } + }, + "type": "object" +}
8 tool updates
v0.1.1- Changed
apply_builtin_form_template8 fields changed- added
Input schema / descriptionAdded value: +"Builtin template apply args — templateSlug XOR templateId required" - changed
Input schema / properties / description / descriptionPrevious value: -"Form Set 説明(任意)"New value: +"Optional Form Set description" - changed
Input schema / properties / dryRun / descriptionPrevious value: -"true で適用せずプレビュー"New value: +"true to preview without creating" - changed
Input schema / properties / idempotencyKey / descriptionPrevious value: -"冪等キー(同一キー+同一引数の再送は同じ結果を返す。異なる引数での再送は409 IDEMPOTENCY_KEY_CONFLICT。24時間で失効)"New value: +"Idempotency key (409 on conflicting reuse within 24h)" - changed
Input schema / properties / name / descriptionPrevious value: -"新規作成する Form Set の表示名"New value: +"New Form Set display name" - changed
Input schema / properties / slug / descriptionPrevious value: -"新規作成する Form Set の slug(テンプレ slug とは別)"New value: +"New Form Set slug (NOT template slug)" - changed
Input schema / properties / templateId / descriptionPrevious value: -"DB 保存テンプレートの UUID(互換)"New value: +"DB template UUID (legacy)" - changed
Input schema / properties / templateSlug / descriptionPrevious value: -"list_builtin_form_templates の slug(推奨)"New value: +"list_builtin_form_templates slug (recommended)"
- Changed
apply_form_blueprint5 fields changed- changed
Input schema / properties / blueprint / additionalPropertiesPrevious value: -{}New value: +false - changed
Input schema / properties / blueprint / descriptionPrevious value: -"Form Blueprint JSON"New value: +"Form Blueprint JSON (Form Set). fieldKey/sortOrder shape. NOT Contact Form fields. Help: agent.form-blueprint-mcp, luno://content/schema-guide." - added
Input schema / properties / blueprint / propertiesAdded value: +{ + "contentListColumns": { + "items": { + "properties": { + "fieldKey": { + "type": "string" + }, + "formKey": { + "type": "string" + } + }, + "required": [ + "formKey", + "fieldKey" + ], + "type": "object" + }, + "type": "array" + }, + "contentSearchColumns": { + "items": { + "properties": { + "fieldKey": { + "type": "string" + }, + "formKey": { + "type": "string" + } + }, + "required": [ + "formKey", + "fieldKey" + ], + "type": "object" + }, + "type": "array" + }, + "formSet": { + "description": "Target Form Set metadata", + "properties": { + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Optional description" + }, + "name": { + "description": "Form Set display name", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "slug": { + "description": "Form Set URL slug", + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "slug", + "name" + ], + "type": "object" + }, + "forms": { + "description": "Non-empty forms array", + "items": { + "additionalProperties": false, + "properties": { + "fields": { + "description": "Non-empty fields array with fieldKey (NOT Contact Form fields shape)", + "items": { + "additionalProperties": false, + "description": "Form Set field definition. Use fieldKey + sortOrder. Do NOT use Contact Form { key, label:{ja,en} }.", + "properties": { + "constraints": { + "additionalProperties": {}, + "description": "Type-specific constraints (enum, maxLength, etc.)", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "fieldKey": { + "description": "Form Set field key (NOT Contact Form `key` / NOT field_key at blueprint root)", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "label": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Display label" + }, + "localizable": { + "description": "true only for text / textarea / tiptap", + "type": "boolean" + }, + "masterEntityId": { + "description": "Master entity UUID for select/radio/multiselect", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + }, + "masterEntityKey": { + "description": "Master entity key to upsert on apply (alternative to masterEntityId)", + "minLength": 1, + "type": "string" + }, + "masterEntityName": { + "description": "Display name when using masterEntityKey", + "minLength": 1, + "type": "string" + }, + "sortOrder": { + "description": "Field order (sort_order alias also accepted by API)", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "sort_order": { + "description": "Snake_case alias for sortOrder", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": { + "description": "Field type — see luno://forms/field-types", + "enum": [ + "text", + "url", + "textarea", + "tiptap", + "number", + "boolean", + "date", + "select", + "radio", + "multiselect", + "image", + "image_gallery", + "file", + "video_embed", + "entry_ref" + ], + "type": "string" + } + }, + "required": [ + "fieldKey", + "type" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + }, + "key": { + "description": "Form block key (nested under blueprint.forms)", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "label": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "sortOrder": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "sort_order": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "key", + "fields" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + }, + "notes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "provenance": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "version": { + "description": "Blueprint version. Use latest: 2026-05-12", + "enum": [ + "2026-03-31", + "2026-05-12" + ], + "type": "string" + } +} - removed
Input schema / properties / blueprint / propertyNamesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / blueprint / requiredAdded value: +[ + "version", + "formSet", + "forms" +]
- Changed
apply_master_blueprint6 fields changed- changed
Input schema / properties / entities / descriptionPrevious value: -"Master Blueprint entities 配列"New value: +"Master Blueprint entities array. Help: agent.master-blueprint-mcp. publish:true reflects to public master API." - changed
Input schema / properties / entities / items / additionalPropertiesPrevious value: -{}New value: +false - added
Input schema / properties / entities / items / descriptionAdded value: +"One master entity with records to upsert" - added
Input schema / properties / entities / items / propertiesAdded value: +{ + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "hierarchical": { + "description": "true for parent/child records", + "type": "boolean" + }, + "key": { + "description": "Master entity key (slug-style, NOT UUID)", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "name": { + "description": "Master display name", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "records": { + "description": "Non-empty records array with value + label", + "items": { + "additionalProperties": false, + "description": "Master record row. Agents cannot call update_master_record — set sort_order here.", + "properties": { + "data": { + "additionalProperties": {}, + "description": "Optional extra JSON", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "label": { + "description": "Display label", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "parent_value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Parent record value for hierarchical masters" + }, + "sortOrder": { + "description": "CamelCase alias for sort_order", + "type": "number" + }, + "sort_order": { + "description": "Sort order (sortOrder alias also accepted)", + "type": "number" + }, + "value": { + "description": "Record value ID used in select snapshots / columnFilters (NOT record UUID)", + "maxLength": 500, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "value", + "label" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + } +} - removed
Input schema / properties / entities / items / propertyNamesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / entities / items / requiredAdded value: +[ + "key", + "name", + "records" +]
- Added
bulk_create_entries - Added
get_pub_preview_url - Changed
save_revision6 fields changed- added
Input schema / properties / snapshot / additionalProperties / additionalPropertiesAdded value: +{ + "description": "Field value (string, number, boolean, array, Tiptap doc JSON, asset UUID, etc.). Shapes: luno://content/schema-guide or get_form_set_schema.snapshotShape.example" +} - added
Input schema / properties / snapshot / additionalProperties / descriptionAdded value: +"Per-form field map { [fieldKey]: value }. Do NOT put fieldKey at the snapshot top level." - added
Input schema / properties / snapshot / additionalProperties / propertyNamesAdded value: +{ + "description": "fieldKey from get_form_set_schema (NOT form key)", + "type": "string" +} - added
Input schema / properties / snapshot / additionalProperties / typeAdded value: +"object" - changed
Input schema / properties / snapshot / descriptionPrevious value: -"ネストした snapshot オブジェクト"New value: +"Nested snapshot: { [formKey]: { [fieldKey]: value } }. NOT flat { fieldKey: value }. NOT Contact Form fields[]. See luno://content/schema-guide." - added
Input schema / properties / snapshot / propertyNames / descriptionAdded value: +"form key from get_form_set_schema.forms[].key"
- Changed
upload_media6 fields changed- added
Input schema / descriptionAdded value: +"Upload source — pick ONE of sourceUrl / base64 / filePath. Returned id (UUID) goes in image / image_gallery snapshot fields." - changed
Input schema / properties / base64 / descriptionPrevious value: -"ファイルの base64"New value: +"File content as base64" - changed
Input schema / properties / filePath / descriptionPrevious value: -"MCP ホスト上のローカルパス(stg/prod 推奨)"New value: +"Local path on MCP host (recommended for stg/prod uploads)" - changed
Input schema / properties / filename / descriptionPrevious value: -"アップロードファイル名"New value: +"Upload filename" - changed
Input schema / properties / folderId / descriptionPrevious value: -"メディアフォルダ UUID"New value: +"Media folder UUID" - changed
Input schema / properties / sourceUrl / descriptionPrevious value: -"LUNO サーバーが取得する http(s) URL"New value: +"http(s) URL the LUNO server fetches (not for localhost from remote MCP)"
- Changed
validate_master_blueprint6 fields changed- changed
Input schema / properties / entities / descriptionPrevious value: -"Master Blueprint entities 配列"New value: +"Master Blueprint entities array. Help: agent.master-blueprint-mcp. publish:true reflects to public master API." - changed
Input schema / properties / entities / items / additionalPropertiesPrevious value: -{}New value: +false - added
Input schema / properties / entities / items / descriptionAdded value: +"One master entity with records to upsert" - added
Input schema / properties / entities / items / propertiesAdded value: +{ + "description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "hierarchical": { + "description": "true for parent/child records", + "type": "boolean" + }, + "key": { + "description": "Master entity key (slug-style, NOT UUID)", + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "name": { + "description": "Master display name", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "records": { + "description": "Non-empty records array with value + label", + "items": { + "additionalProperties": false, + "description": "Master record row. Agents cannot call update_master_record — set sort_order here.", + "properties": { + "data": { + "additionalProperties": {}, + "description": "Optional extra JSON", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "label": { + "description": "Display label", + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "parent_value": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Parent record value for hierarchical masters" + }, + "sortOrder": { + "description": "CamelCase alias for sort_order", + "type": "number" + }, + "sort_order": { + "description": "Sort order (sortOrder alias also accepted)", + "type": "number" + }, + "value": { + "description": "Record value ID used in select snapshots / columnFilters (NOT record UUID)", + "maxLength": 500, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "value", + "label" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + } +} - removed
Input schema / properties / entities / items / propertyNamesRemoved value: -{ - "type": "string" -} - added
Input schema / properties / entities / items / requiredAdded value: +[ + "key", + "name", + "records" +]
42 tool updates
- First observed
add_console_login_ip_allowlist - First observed
apply_builtin_form_template - First observed
apply_form_blueprint - First observed
apply_master_blueprint - First observed
archive_form_set - First observed
ask_admin_help - First observed
create_contact_form - First observed
create_entry - First observed
create_master_record - First observed
delete_console_login_ip_allowlist - First observed
get_admin_help_article - First observed
get_entry - First observed
get_form_set_schema - First observed
get_funnel_status - First observed
get_login_appearance - First observed
get_login_branding - First observed
get_master_entity - First observed
get_project_content_locales - First observed
get_project_overview - First observed
get_public_api_info - First observed
get_tenant_schema - First observed
list_builtin_form_templates - First observed
list_console_login_ip_allowlists - First observed
list_entries - First observed
list_form_sets - First observed
list_master_entities - First observed
list_master_records - First observed
list_media - First observed
list_revisions - First observed
patch_project_content_locales - First observed
publish_revision - First observed
save_revision - First observed
search_admin_help - First observed
submit_entry_for_review - First observed
translate_entry_locales - First observed
update_contact_form - First observed
update_entry - First observed
update_login_appearance - First observed
update_master_record - First observed
update_master_tree - First observed
upload_media - First observed
validate_master_blueprint
TDQS
Scored across 52 tools
Most tools have clearly distinct resource-action pairs, but a few overlaps exist: get_login_branding and get_login_appearance both describe login page appearance settings, and get_project_overview vs get_tenant_schema both provide project-level structural information. The help-related trio (ask_admin_help, search_admin_help, get_admin_help_article) also requires careful reading to distinguish, though their descriptions do clarify the different access modes.
The vast majority of tool names follow a snake_case verb_noun pattern (list_entries, create_master_record, update_contact_form). Minor inconsistencies include patch_project_content_locales mixing 'patch' with the more common 'update', get_funnel_status whose description says it 'reconfigures' rather than simply fetches, and long compound verbs like migrate_field_to_master_reference and rename_master_record_slug. Overall the pattern is predictable and readable.
With 52 tools, the surface is overwhelming for an agent. While the platform covers a broad domain, many tools are highly granular (e.g., separate login branding vs appearance, three separate help tools, three agent-run lifecycle tools) and could be consolidated. This clearly exceeds the 25+ threshold for 'too many' tools.
Core content workflows are well covered: entry lifecycle (create/list/get/update, save_revision, publish), master data CRUD, contact forms, media upload, and blueprints. However, there are notable gaps: no delete_entry or unpublish operation, no media delete/update, no master record delete, and no list_agent_runs. These missing lifecycle operations will require workarounds or human intervention, making the surface incomplete for fully autonomous agent workflows.
Maintenance
Related MCP Connectors
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Build, deploy, and host full-stack web apps from any MCP client. DB, auth, storage, cron included.
Backend for AI-built apps: database, auth, files, email, AI, payments, deploy, realtime. 170+ tools.
Build, edit and run real hosted websites from your AI - content, SEO, menus, store, rollback.
Related MCP Servers
- AlicenseBqualityDmaintenanceLightweight content management system for websites, built for the AI era7231MIT
- FlicenseNot gradedqualityCmaintenanceInstant Backend for SMBs — AI-callable MCP tools for generating business pages, Stripe payments, notifications, and invoice processing. No signup, no dashboard, just results.-

mcp-lindoaiofficial
AlicenseBqualityCmaintenanceMCP (Model Context Protocol) server for Lindo AI — create websites, pages, and blog posts with AI directly from Claude, Cursor, Kiro, Windsurf, and other MCP-compatible tools.5028 npm3MIT- AlicenseNot gradedqualityAmaintenanceAgent-first headless CMS running as a Cloudflare Worker, providing MCP servers for schema/content management and editorial operations.30 npm4MIT