Skip to main content
Glama

Server Details

Publish AI-made landing pages on your own domain, with a signup form and visitor stats.

Ownership verified
Status
Healthy
Uptime
23.0% over 76 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
tomoyaf/convika-mcp
GitHub Stars
0
Server Listing
Convika
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 58 tools

Disambiguation3/5

The set contains many near-duplicate creation tools (create_site explicitly equals create_landing_page, plus create_landing_page_preview, create_page, create_pages) and a dense cluster of analytics tools (get_analytics_summary, get_analytics_detail, analyze_site_performance, get_site_overview, get_portfolio_analytics) whose boundaries require reading long descriptions. The domain tools also overlap heavily (setup_custom_domain, set_site_url, start_domain_control_verification, activate_domain_handover). Descriptions do disambiguate most cases, but an agent can easily misselect without careful reading.

Naming Consistency4/5

Almost everything follows a snake_case verb_noun pattern (create_form, get_orders, publish_pages, remove_domain), with only 'ping' as an outlier. The bigger issue is semantic rather than stylistic: 'site' means a page in get_site/list_sites but a site in get_site_overview/list_domain_routes, which is inconsistent vocabulary even though formatting is uniform.

Tool Count2/5

58 tools is far beyond a comfortable surface for one server, even for a fairly broad landing-page platform (pages, domains, analytics, forms, orders, AI-answer checks). Many tools are narrow variants of each other, suggesting the surface has grown without consolidation and burdens tool selection.

Completeness4/5

Coverage is broad: page lifecycle (create, save, preview, publish, unpublish, rollback, move, rename), domains and routes, forms with submissions/export, goals, orders, analytics, and AI-answer checks. Gaps exist though: there is no delete_page tool and no update/delete for forms, so a few lifecycle ends are dashboard-only.

Available Tools

58 tools
activate_domain_handoverActivate domain handoverA
DestructiveIdempotent
Inspect

Activate custom-domain control handover after DNS TXT verification has completed.

Use only after explicit user confirmation. Activation changes future control of the site to this workspace. Existing URLs remain served as frozen continuity routes; existing page data, forms, analytics, and history are not copied into this workspace. The user can later replace or disable legacy paths explicitly.

NameRequiredDescriptionDefault
attemptIdYesThe verified domain control attempt ID to activate

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds genuinely new consequences: future control moves to this workspace, existing URLs persist as frozen continuity routes, and page data, forms, analytics, and history are not copied. That is exactly the impact information an agent needs before a destructive, irreversible-feeling activation.

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

Conciseness5/5

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

The precondition and the confirmation requirement are front-loaded in the first two sentences, followed by the consequences. Every sentence carries distinct information; nothing restates the title or annotations.

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

Completeness4/5

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

For a single-parameter, no-output-schema mutation tool the description covers authorization gating, scope of change, and data-continuity semantics thoroughly. It does not say what the call returns or how success/failure of activation is reported, which is the only remaining gap.

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

Parameters3/5

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

Only one parameter (attemptId), and schema description coverage is 100% with the schema stating it is 'the verified domain control attempt ID to activate.' The description adds no format, sourcing, or validation detail beyond that, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('activate') plus the exact resource ('custom-domain control handover') and pins the precondition ('after DNS TXT verification has completed'). This clearly separates it from the sibling verification/setup tools (start_domain_control_verification, check_domain_control_verification, setup_custom_domain) without needing their schemas.

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

Usage Guidelines4/5

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

'Use only after explicit user confirmation' is an explicit gating condition, and the verification-complete prerequisite tells the agent when in the pipeline to call it. It stops short of naming the sibling tools to call first or when-not-to-use alternatives, keeping it at a strong 4 rather than a 5.

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

analyze_site_performanceDiagnose page performanceA
Read-onlyIdempotent
Inspect

Analyze a landing page's aggregate analytics and return a compact diagnosis with prioritized next actions.

Use when the user asks what to improve, why conversions changed, whether traffic quality is healthy, or what to test next. This tool does NOT return raw event logs or form submission payloads. It returns aggregate metrics, top drivers, findings, evidence, and recommendations. Periods: 7d (default), 30d, 90d | 180d, 365d, all (Pro/MAX only). With 90d, a timeZone other than the workspace's leaves the change figures null, except for form submissions: the previous 90 days come only from daily summaries kept in the workspace's time zone. Leave timeZone out for 90d changes. Dates and hours are in the workspace's time zone, UTC when the workspace has none set. Pass timeZone, an IANA name such as America/New_York, for days in another zone; it changes only this response, never the workspace's time zone. The result's timeZone field names the zone used, and timeZoneSource says where it came from (argument, workspace, or default). A row for today's date in that zone counts only the hours so far. When timeZonePending is set, the workspace is switching to that zone once its history is recomputed. 180d, 365d, and all come from daily summaries kept in the workspace's time zone, so a different timeZone isn't used there: the result stays in the summaries' zone and names the zone you passed as requestedTimeZone.

NameRequiredDescriptionDefault
periodNoTime period for the diagnosis. 180d/365d/all require Pro or MAX plan.7d
siteIdYesThe ID of the page to analyze
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
botFilterNoWhether to exclude known bots and vulnerability scanner traffic. Defaults to exclude. Use include only for diagnostics.exclude

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world, so the description spends its budget on genuinely non-obvious behavior: what the response contains (aggregate metrics, top drivers, findings, evidence, recommendations), the Pro/MAX plan gate for long periods, and that the response echoes timeZone/timeZoneSource/timeZonePending. The 90d caveat that change figures come back null with a mismatched timeZone, and that 180d/365d/all ignore the passed zone and echo it as requestedTimeZone, are exactly the surprises an agent would otherwise trip over.

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

Conciseness3/5

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

Purpose and usage are correctly front-loaded, but the time-zone material sprawls across two long paragraphs with overlap ("it changes only this response" restated as "affects only this response: the workspace's time zone stays as it is"). The IANA-name examples are repeated in both the description and the schema's timeZone description. Tightening to roughly half the length would lose no information.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so by enumerating the diagnosis sections and ruling out raw events. Plan gating and time-zone edge cases are covered. Minor gaps: botFilter's diagnostic use case and whether recommendation/finding counts are bounded are untouched.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description earns above that by explaining interactions the schema does not: period and timeZone are coupled (90d null changes; summary-based periods ignore the zone), and today's row is partial. botFilter is left entirely to the schema, which does cover it adequately.

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

Purpose4/5

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

Opens with a specific verb+resource ("Analyze a landing page's aggregate analytics") and names the distinct deliverable ("compact diagnosis with prioritized next actions"). It also carves out what it is not ("does NOT return raw event logs or form submission payloads"), which separates it from get_analytics_detail-style siblings. It stops short of naming which sibling to use for raw metrics or timeseries.

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

Usage Guidelines4/5

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

"Use when the user asks what to improve, why conversions changed, whether traffic quality is healthy, or what to test next" gives four concrete triggering intents an agent can match against a user request. The exclusion of raw logs/payloads adds a clear when-not condition. There is no explicit routing to get_analytics_summary, detect_trend, or query_timeseries for the adjacent cases.

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

analyze_source_qualityCompare traffic sourcesA
Read-onlyIdempotent
Inspect

Analyze traffic source quality using aggregate source/UTM metrics and attributed conversion events.

Use when the user asks which referrers, campaigns, UTM sources, mediums, or campaigns are working. Returns source-level pageviews, visitors, CTA clicks, form submits, converting visitors, conversion rate, and attribution coverage summary. It does NOT return raw event logs or form submission payloads. A click or form submit counts toward the referrer or UTM value on the page where it happened, and a visitor who both clicks and submits counts once. "(direct)" means no referrer and "(none)" means no UTM tag; attributionCoverageRate is the share of visitors that have one. Data covers the last 3 months and excludes known bots and vulnerability scanners, the same as get_analytics_summary. Dates are YYYY-MM-DD. When the page took orders in the period and the connection has orders:read, the result adds orders: the orders and revenue by the same source dimension (an order records its UTM source, medium, and campaign, and the referring site). Orders hold no visitor id, so they aren't joined to the visitor rows; revenue counts paid orders (cash on delivery once accepted). Dates are days in the workspace's time zone, UTC when the workspace has none set, and startDate and endDate are whole days in the zone used. Pass timeZone, an IANA name such as America/New_York, for days in another zone; it changes only this response, never the workspace's time zone. The result's timeZone field names the zone used, and timeZoneSource says where it came from (argument, workspace, or default). A row for today's date in that zone counts only the hours so far. When timeZonePending is set, the workspace is switching to that zone once its history is recomputed.

NameRequiredDescriptionDefault
limitNoMaximum source rows to return. Defaults to 20, max 100.
siteIdYesThe ID of the page to analyze
endDateYesEnd date (YYYY-MM-DD)
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
dimensionNoSource dimension to group by. Defaults to referrer.referrer
startDateYesStart date (YYYY-MM-DD)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: attribution counting rules, bot/scanner exclusion, the 3-month window, the conditional orders block gated on orders:read, and timezone resolution including timeZonePending.

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

Conciseness4/5

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

Front-loaded with purpose and usage before the dense behavioral detail, and nearly every sentence carries information. It is long and the timezone paragraph is heavy, but nothing is clearly redundant.

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

Completeness5/5

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

No output schema exists, and the description compensates by enumerating the returned fields, the conditional orders addition, and the timezone metadata fields (timeZone, timeZoneSource, timeZonePending). An agent has enough to call it and interpret the result.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains what '(direct)' and '(none)' mean for the dimension values, that timeZone affects only this response and never the workspace setting, and how attributionCoverageRate is computed.

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

Purpose5/5

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

States a specific verb and resource ('Analyze traffic source quality using aggregate source/UTM metrics and attributed conversion events') and enumerates the exact output metrics, making it clearly distinct from get_analytics_summary, get_analytics_detail, and query_cta_performance.

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

Usage Guidelines4/5

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

Gives an explicit trigger ('Use when the user asks which referrers, campaigns, UTM sources, mediums, or campaigns are working') and an explicit exclusion ('does NOT return raw event logs or form submission payloads'). It does not name sibling tools as alternatives, so it falls short of a 5.

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

check_domain_control_verificationCheck domain ownershipA
Read-onlyIdempotent
Inspect

Check whether the DNS TXT record for a Convika domain control verification attempt has propagated.

If still pending, tell the user to keep the TXT record in DNS and check again shortly. Do not activate handover until this tool reports verified.

NameRequiredDescriptionDefault
attemptIdYesThe domain verification attempt ID returned by start_domain_control_verification

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, non-destructive, closed-world call, so safety is covered. The description adds genuinely new context beyond those hints: this is a polling operation whose pending state is expected, and its result gates the handover flow. It does not describe the shape or distinction of the returned statuses, which is the remaining gap.

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

Conciseness5/5

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

Two short sentences with zero padding; the core action is front-loaded and the follow-up instruction follows immediately. Every clause carries operational meaning.

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

Completeness4/5

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

For a one-parameter read-only check with strong annotations, the description covers the action, the branch behavior, and the downstream gate, which is most of what an agent needs. It stops short of characterizing the possible return states (verified / pending / failed), so the agent must infer the response vocabulary.

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

Parameters3/5

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

There is a single required parameter with 100% schema description coverage, and the schema already explains that attemptId comes from start_domain_control_verification. The description adds no format, sourcing, or lifecycle detail beyond that, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource: checking whether the DNS TXT record for a Convika domain control verification attempt has propagated. It is clearly distinct from get_domain_status and start_domain_control_verification by its propagation-checking scope, though it never names a sibling explicitly to force the distinction.

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

Usage Guidelines5/5

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

It states the condition under which the result is actionable ('If still pending, tell the user to keep the TXT record in DNS and check again shortly') and gives an explicit exclusion against a named sibling workflow ('Do not activate handover until this tool reports verified'). When-to-use, what-to-do-on-pending, and the gating condition are all present.

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

create_claim_codeCreate claim linkAInspect

Create a claim link for a landing page you built, so someone else can take ownership of it — no card required.

This powers the "I built you a page" outreach: you build and publish a landing page on your own account, then mint a claim link bound to that page. You share the link; when the recipient signs up through it, that exact page — same URL, same content they already saw — moves into their account immediately. Claiming is free: the recipient gets the Free plan with no card (the page shows a small Convika bar at the bottom; analytics and starter AI-edit credits included). The response's recipientGets field states the exact terms; quote it when you tell the recipient what they get.

  • The page must already exist on your account. Build it with create_landing_page_preview, then publish_site to production so the recipient can see it live before they sign up.

  • The link is single-use and expires in 14 days by default — tell the recipient the deadline. An unclaimed showcase page is automatically unpublished about 30 days after the code was minted.

  • Ownership transfers without changing the URL, so the page you showed them in your message becomes theirs at the same URL.

  • Returns the signup URL to send, plus the code and its limits.

NameRequiredDescriptionDefault
siteIdYesThe ID of the landing page to bind to the claim link. Must be a page on your account.
maxClaimsNoHow many times the link can be claimed. Defaults to 1 (single-use).
expiresInDaysNoDays until the link expires. Defaults to 14 (the claim window communicated to the recipient).

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses key behavior: single-use by default, 14-day default expiry, auto-unpublish of unclaimed pages around 30 days, URL-preserving ownership transfer, free recipient plan, and a recipientGets field to quote. These are exactly the operational details an agent needs before invoking the tool.

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

Conciseness4/5

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

The description is front-loaded with the core action and uses bullets for operational constraints, making it skimmable. It is somewhat long and repeats the “no card” benefit, but most sentences carry relevant workflow or behavioral information.

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

Completeness5/5

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

For a mutation tool with no output schema, the description is highly complete: it covers prerequisites, ownership-transfer behavior, expiry, single-use limits, recipient terms, and what the response contains. An agent has enough information to call it correctly and explain the outcome to a user.

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

Parameters3/5

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

Schema description coverage is 100%, so siteId, maxClaims, and expiresInDays are already well documented structurally. The description adds useful context about defaults and single-use behavior, but it does not add parameter-level syntax or constraints beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific verb and resource: create a claim link bound to a landing page so ownership can transfer. It clearly distinguishes this from building or publishing the page by naming the outreach workflow and the exact outcome, so an agent can identify the tool without opening the schema.

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

Usage Guidelines4/5

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

The description gives clear usage context: it is for the “I built you a page” outreach and requires the page to already exist and be published. It names prerequisite siblings (create_landing_page_preview, publish_site) but does not explicitly state when not to use this tool versus alternatives such as referral links.

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

create_formCreate formAInspect

Add a contact form, email signup, or lead capture form to a landing page.

Use when the user wants to collect submissions from visitors (e.g. "add a contact form", "collect emails", "add a signup form", "take cash-on-delivery orders", "take reservations", 「お問い合わせフォーム」「注文フォーム」「予約フォーム」). Convika handles submission storage, spam protection (honeypot), and optional email notifications automatically. Give the form the fields the page asks for, not a generic name/email/message: an order form asks for what the shop needs (name, a tel field for the phone or WhatsApp number, a select of cities or governorates, an address textarea, a number for quantity), a reservation form for a date and the party size. Every answer is stored as text; a checkbox group's ticked options are joined with ", ". Entries are listed and exported (CSV) under the field labels, and the entry email links a tel answer for calling. After creating the form, embed it in the page HTML using save_page_content with the returned form ID, then call create_preview so the preview shows the form. Use get_form_submissions to view collected production data. Preview submissions validate the form but are not stored and do not trigger webhooks. A form needs an existing siteId. For a brand-new page, call create_landing_page_preview first (it returns the siteId), then this tool, then save_page_content with the embed, then create_preview. Available on all plans. Free shows 50 submissions a month; later ones are still saved and held from view (up to 1,000 more per form a month) and show on Pro. Pro/MAX: no monthly limit.

HTML embed example (use JavaScript fetch, NOT with method="POST"):

IMPORTANT: Replace {formId} with the actual form ID. Replace {successMessage} with the form's successMessage or a suitable thank-you message. Do NOT use — always use the JavaScript fetch approach above to submit to /_form.

NameRequiredDescriptionDefault
fieldsYesForm fields configuration
siteIdYesThe ID of the page to create the form for
notifyEmailNoEmail address to receive submission notifications
successMessageNoMessage shown after successful submission
submitButtonLabelNoCustom label for the submit button (default: 'Submit')

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already state readOnly=false, destructive=false, and idempotent=false, but the description adds substantial context beyond them: automatic submission storage, honeypot spam protection, optional email notifications, plan limits (50 free submissions/month, held entries up to 1,000, Pro unlimited), and the fact that preview submissions validate but are not stored or trigger webhooks. It also specifies how answers are stored as text and how checkbox groups are joined.

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

Conciseness3/5

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

The description is front-loaded with purpose and usage, but it is extremely long and includes a full HTML form plus a lengthy JavaScript fetch example. While relevant to correct embedding, this level of detail bloats the tool description and could be trimmed or moved to separate documentation.

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

Completeness5/5

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

For a complex mutation tool with no output schema, the description covers prerequisites, workflow, plan limits, submission behavior, field design, and embedding requirements. An agent has enough information to invoke the tool correctly and follow up with the right sibling tools.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful guidance beyond the schema by instructing the agent to tailor fields to the page (e.g. order forms need tel, select, address, quantity; reservation forms need date and party size) and by mapping field types to HTML inputs and storage behavior.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Add a contact form, email signup, or lead capture form to a landing page.' It clearly distinguishes the tool from page-creation siblings by explaining the prerequisite siteId and the create_landing_page_preview workflow.

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

Usage Guidelines5/5

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

It gives explicit when-to-use examples in multiple languages and lists the exact workflow: create_landing_page_preview for new pages, then create_form, then save_page_content, then create_preview. It also names related tools for viewing submissions (get_form_submissions) and embedding (save_page_content).

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

create_landing_pageCreate landing pageAInspect

Create a hosted landing page shell with CDN, SSL, aggregate analytics, forms, and versioning. ランディングページ・LP・ホームページ・Webサイト・キャンペーンページの作成。

Where a page goes: a workspace holds sites, and each of its pages is a path on one of them: <name>.convika.page, or the workspace's own domain once its pages open there (get_brand shows them). Pass path, such as /guides/how-to-choose, to put the page there. Leave path out and the first page sits at /, a later one at a free path made from its name. subdomain is only for the workspace's first page: it names the workspace's convika.page site. For a full URL on a domain, such as https://www.example.com/lp2, pass url instead of path. Do not turn a requested path into a Convika subdomain.

After creation, use save_page_content to add HTML, then create_preview so the user can review it before production. Do not call publish_site unless the user explicitly asks to publish or go live.

If guidance.existingSite is present, the requested URL shows or forwards to another site now, and connecting it would replace that. Tell the user before any DNS change, as the text says.

This tool is equivalent to create_site — use either one.

New pages per UTC day, per workspace: Free 10, Pro 100, MAX 1000. The count resets at midnight UTC and includes pages created through the dashboard, uploads, built-in AI, MCP, and free tools. Deleting a page does not restore the day's allowance.

NameRequiredDescriptionDefault
urlNoOptional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the page after creating it. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page.
nameYesDisplay name for the page (e.g. 'Spring Campaign 2026')
pathNoThe page's path on the workspace's site, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url.
localeNoLanguage for the page content. Defaults to 'en' (English)en
purposeNoPurpose of the landing page (e.g. 'awareness', 'consideration', 'conversion', 'retention')
industryNoIndustry of the landing page (e.g. 'saas', 'ec', 'service', 'event', 'general')
subdomainNoOnly for the workspace's first page, while get_brand has no hostLabel: it names the workspace's site, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that site: give them path instead. Never put a requested path such as /lp2 here.
primaryOfferNoThe main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the page; get_site returns it.
productSummaryNoWhat the page promotes, in one or two sentences. Saved on the page; get_site returns it.
targetAudienceNoWho the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the page; get_site returns it.
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, it discloses important behavior: daily per-workspace page quotas by plan, UTC reset timing, that deleted pages do not restore allowance, and that URL assignment may replace an existing site route when guidance.existingSite is present. It also clarifies the post-creation workflow.

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

Conciseness4/5

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

The description is long but justified by the tool's 11 parameters and routing rules. It is mostly front-loaded and organized, though the Japanese marketing line and some repeated routing details add minor noise.

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

Completeness5/5

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

For a complex creation tool with no output schema, the description is highly complete: it covers URL/path/subdomain behavior, quotas, follow-up tools, publishing caution, and the existingSite warning. An agent has enough context to invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds useful integrated semantics for path, subdomain, and url: first page vs later pages, workspace site naming, and not putting a requested path into subdomain. Other parameters are already well documented in the schema.

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

Purpose5/5

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

The opening sentence states a specific verb and resource: creating a hosted landing page shell with CDN, SSL, analytics, forms, and versioning. It also explicitly says the tool is equivalent to create_site, which helps an agent distinguish it from sibling creation tools.

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

Usage Guidelines5/5

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

The description gives detailed when-to-use guidance: choose path vs url vs subdomain, use save_page_content after creation, then create_preview before production, and avoid publish_site unless the user explicitly asks. It also flags the guidance.existingSite case and tells the agent to warn before DNS changes.

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

create_landing_page_previewCreate landing page previewAInspect

Use this tool when you have the final HTML of a new page: a landing page (ランディングページ), a page of the user's ホームページ or Webサイト, or one of many guide, FAQ, or comparison pages made for search and AI answers. It creates the whole page preview in a single Convika call, and is the default tool for a new page.

This tool creates the page, puts it at the requested path or URL when provided, sets conversion goals, saves the HTML content as the first version, and creates a token-protected preview URL. It avoids multi-step approval prompts in MCP clients.

Where a page goes: a workspace holds sites, and each of its pages is a path on one of them: .convika.page, or the workspace's own domain once its pages open there (get_brand shows them). Pass path, such as /guides/how-to-choose, to put the page there. Leave path out and the first page sits at /, a later one at a free path made from its name. subdomain is only for the workspace's first page: it names the workspace's convika.page site. For a full URL on a domain, such as https://www.example.com/lp2, pass url instead of path.

If guidance.existingSite is present, the requested URL shows or forwards to another site now, and connecting it would replace that. Tell the user before any DNS change, as the text says.

New pages per UTC day, per workspace: Free 10, Pro 100, MAX 1000. The count resets at midnight UTC and includes pages created through the dashboard, uploads, built-in AI, MCP, and free tools. Deleting a page does not restore the day's allowance.

Forms: create_form needs the siteId this tool returns, so a form can't be embedded in this first call. Leave the form out (or keep a placeholder section), then call create_form with the returned siteId, save the HTML with the form embed via save_page_content, and call create_preview so the preview shows the working form.

Do not use publish_site unless the user explicitly asks to publish/go live in production.

NameRequiredDescriptionDefault
jsNoJavaScript for interactive elements.
cssNoCustom CSS for styles Tailwind cannot express.
urlNoOptional exact custom URL requested by the user, for example 'https://www.example.com/lp2' or 'www.example.com/lp2'. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page.
htmlYesComplete HTML document using Tailwind CSS v3. Must include the Tailwind CDN script in <head>. The page (html, css, and js together) can be up to 2 MB.
nameYesDisplay name for the page
pathNoThe page's path on the workspace's site, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url.
goalsNoOptional conversion goals to configure before preview creation.
localeNoLanguage for the page content.en
purposeNoLanding page purpose.
industryNoLanding page industry.
patternsNoPattern metadata. Accepted for backward compatibility; prefer sections.
sectionsNoSections in the page, matching <section> order in the HTML. Prefer providing real descriptions; if omitted, Convika synthesizes placeholder section metadata from the HTML.
changelogNoDescription of this initial version.
subdomainNoOnly for the workspace's first page, while get_brand has no hostLabel: it names the workspace's site, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that site: give them path instead. Never put a requested path such as /lp2 here.
primaryOfferNoThe main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the page; get_site returns it.
productSummaryNoWhat the page promotes, in one or two sentences. Saved on the page; get_site returns it.
targetAudienceNoWho the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the page; get_site returns it.
designOverridesNoOptional bounded design knob overrides.
designProfileIdNoOptional design profile ID.
designRationaleNoShort design rationale.
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare the generic non-read-only, non-idempotent profile; the description adds substantial specifics beyond that: the exact side effects (page creation, goal setup, HTML saved as first version, token-protected preview URL), per-workspace daily quotas by plan, that the count resets at midnight UTC and includes dashboard/uploads/AI/MCP creation, and that deleting a page does not restore allowance. It also flags the DNS-replacement risk when guidance.existingSite is present and warns the user must be told before any DNS change.

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

Conciseness4/5

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

Well front-loaded: the trigger and core behavior come first, then placement rules, quotas, forms, and the publish warning in descending priority. It is long, and the path/url/subdomain paragraph substantially restates what the 100%-covered schema already says, which is the main redundancy.

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

Completeness5/5

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

For a 21-parameter, nested-object, non-idempotent creation tool with no output schema, the description covers what an agent needs: when to call it, where the page lands, quota limits, the multi-step form workaround, and the publish boundary. The mention that siteId is returned compensates for the absent output schema at the level an agent needs to chain calls.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds a mental model the schema lacks: workspaces hold sites, each page is a path on one site, and the interplay between path, url, and subdomain (subdomain only for the workspace's first page; url instead of path for a full domain). It stops short of explaining the goals, sections, or designOverrides semantics, which remain schema-only.

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

Purpose4/5

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

States a specific verb and resource ('creates the whole page preview in a single Convika call') and positions itself as 'the default tool for a new page', which an agent can act on. However, with near-identical siblings in the list (create_page, create_pages, create_landing_page, create_preview), the description never names them or explains the boundary, so the differentiation is only implicit.

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

Usage Guidelines5/5

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

Opens with the triggering condition ('when you have the final HTML of a new page') and enumerates the page types it covers. It gives explicit exclusions ('Do not use publish_site unless the user explicitly asks to publish/go live') and prescribes the follow-on sequence for forms (create_form with the returned siteId, save_page_content, create_preview).

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

create_pageCreate page at a pathA
Idempotent
Inspect

Use this tool when making one page of the workspace's site at a known path, such as a guide, FAQ, or comparison page that answers a question customers ask an AI: 「/guides/ にこの質問に答えるページを作って」, "add a page at /guides/decaf" (ホームページ, Webサイト, ランディングページ).

Creates the page at path on the workspace's site, with the HTML as its first saved version. The page is a draft: nothing goes live until publish_pages or publish_site. The same path again makes no second page: status already_exists, with that page's siteId (save_page_content changes its HTML). page.status is created, already_exists, failed (with the reason), or limit_reached (a plan limit; nothing was made). create_preview gives a page's private preview link. create_landing_page_preview makes one landing page with goals and a preview link in a single call, and create_pages makes many pages at once. The answer names the workspace (brand.id, name, host); with expectedBrandId, a connection that now works on another workspace changes nothing (brand_mismatch).

New pages per UTC day, per workspace: Free 10, Pro 100, MAX 1000. The count resets at midnight UTC and includes pages created through the dashboard, uploads, built-in AI, MCP, and free tools. Deleting a page does not restore the day's allowance.

NameRequiredDescriptionDefault
htmlYesComplete HTML document using Tailwind CSS v3, up to 2 MB. Must include the Tailwind CDN script in <head>.
nameYesThe page's name in the dashboard
pathYesThe page's path, such as '/guides/how-to-choose'
localeNoLanguage of the pageen
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

Output Schema

NameRequiredDescription
pageYes
brandYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare idempotentHint=true and destructiveHint=false, and the description explains the mechanism behind that: re-creating the same path yields status already_exists rather than a duplicate, with the existing siteId. It also discloses draft semantics (nothing live until publish_pages/publish_site), the full status enum including limit_reached and failed reasons, per-plan daily quotas with UTC reset and non-restoring deletions, and brand_mismatch behavior for expectedBrandId. All consistent 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.

Conciseness4/5

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

Front-loaded with the when-to-use condition, then mutation semantics, then exhaustion routing, then limits — a sensible order and mostly high-signal. Minor waste in the bilingual quoted examples and the keyword parenthetical "(ホームページ, Webサイト, ランディングページ)", which read as search bait rather than agent guidance.

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

Completeness5/5

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

For a 5-parameter creation tool with annotations and a full output schema, the description covers everything an agent needs: what is created, that it is a draft, duplicate handling, failure statuses, quota limits, and where to go for previews or bulk creation. Return-value shape is correctly left to the output schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by explaining 'the HTML as its first saved version' (constraining what html means relative to later edits) and by restating the expectedBrandId guard-rail semantics. It does not add syntax-level detail for path/locale, but the schema already carries that.

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

Purpose5/5

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

States a specific verb+resource+scope: "Creates the page at path on the workspace's site, with the HTML as its first saved version." It also distinguishes itself from near-siblings by naming create_pages (many at once), create_landing_page_preview, create_preview, and save_page_content.

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

Usage Guidelines5/5

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

"Use this tool when making one page of the workspace's site at a known path" gives an explicit trigger condition, and the final paragraph enumerates the alternatives with the conditions that select them (many pages → create_pages; goals+preview in one call → create_landing_page_preview; change HTML later → save_page_content). Nothing is left to inference.

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

create_pagesCreate pagesA
Idempotent
Inspect

Use this tool when making many pages of the workspace's site at once, such as one guide or FAQ page for each question customers ask an AI: 「質問ごとにページをまとめて作って」, "create these 30 guide pages" (ページの一括作成, ホームページ, Webサイト, ランディングページ).

Creates up to 20 pages a call, each {path, name, html} at its path on the workspace's site with the HTML as its first saved version, all drafts: nothing goes live until publish_pages. Paths in one call are different; all the HTML together is up to 10 MB. A path that already has a page makes no second one: status already_exists, with that page's siteId, so the same call again is safe. Per page the status is created, already_exists, failed (with the reason), or limit_reached: a plan limit stopped the batch there, and the pages before it are made. summary counts each status. A bigger job runs as several calls of up to 20 pages each. create_preview gives a page's private preview link. The answer names the workspace (brand.id, name, host); with expectedBrandId, a connection that now works on another workspace changes nothing (brand_mismatch).

New pages per UTC day, per workspace: Free 10, Pro 100, MAX 1000. The count resets at midnight UTC and includes pages created through the dashboard, uploads, built-in AI, MCP, and free tools. Deleting a page does not restore the day's allowance.

NameRequiredDescriptionDefault
pagesYesThe pages to make, each at its own path
localeNoLanguage of the pagesen
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

Output Schema

NameRequiredDescription
brandYes
pagesYes
summaryYes
guidanceNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare non-read-only, idempotent, non-destructive, closed-world; the description goes well beyond by explaining that everything is created as a draft, that re-creating an existing path returns already_exists rather than duplicating, the per-page status set (created/already_exists/failed/limit_reached), the 10 MB HTML budget, and the brand_mismatch guard for expectedBrandId. The only real gap is how limit_reached interacts with the daily quota mid-batch, which is stated but tersely.

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

Conciseness4/5

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

Usage guidance is front-loaded and essentially every sentence adds operational information (statuses, limits, idempotency, quota). It is dense to the point of being cramped - the daily-quota paragraph runs long and the parenthetical Japanese keyword clusters are noisy - but there is little pure filler.

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

Completeness5/5

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

For a batch mutation tool this is complete: creation scope, draft status, idempotency, per-item statuses, size and count caps, quota by plan, and the cross-workspace guard are all covered, and an output schema exists to carry the detailed return shape. An agent can call it correctly without further questions.

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

Parameters3/5

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

Schema description coverage is 100%, so path, name, html, locale, and expectedBrandId are already documented. The description adds real semantics beyond the schema (paths within a call must differ, 10 MB aggregate HTML, status vocabulary per page), but not per-parameter format guidance, so the baseline plus a slight bump is warranted.

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

Purpose5/5

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

States a specific verb+resource with scope: create up to 20 pages per call on the workspace's site, each as a draft at its own path. It implicitly separates itself from single-page creation ("making many pages ... at once", "A bigger job runs as several calls of up to 20 pages each") and from publish_pages and create_preview by naming what those siblings do.

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

Usage Guidelines5/5

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

Opens with an explicit trigger ("Use this tool when making many pages of the workspace's site at once, such as one guide or FAQ page for each question") plus example phrasings. It also names the alternatives: nothing goes live until publish_pages, previews come from create_preview, and large jobs are split into multiple calls of up to 20.

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

create_previewCreate preview linkAInspect

Generate a shareable preview URL for a landing page before going live.

Use this after save_page_content so the user can review the page via a token-protected preview URL before publishing. The live production version is NOT affected.
If the page has an assigned primary custom URL such as https://www.example.com/lp2, the preview response uses that URL path and may also include a managed fallback URL.
If the user is happy with the preview, call publish_site to make it live.
Uses the latest saved version if versionNumber is omitted.
The returned URL includes a secure access token and works for 60 minutes. Call create_preview again for a fresh link; to show the page to other people, publish it.
NameRequiredDescriptionDefault
siteIdYesThe ID of the page to preview
versionNumberNoVersion number to preview. If omitted, the latest saved version is used.

TDQS

A4.5/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: the preview is token-protected, the URL works for 60 minutes, the live production version is not affected, and custom primary URLs may be used with a managed fallback. These details are exactly what an agent needs to set expectations and avoid mistaking preview for publication.

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

Conciseness5/5

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

The description is front-loaded with the core action and then layers in timing, safety, URL behavior, and next steps without wasted text. Each sentence contributes useful operational context.

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

Completeness5/5

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

With no output schema, the description carries the return-value context itself by explaining the tokenized URL, 60-minute lifetime, custom URL path behavior, and fallback URL. Combined with the annotations, it gives an agent enough information to call the tool correctly and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the schema. The description repeats that omitting versionNumber uses the latest saved version, but it does not add syntax or format details beyond the schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource: generate a shareable preview URL for a landing page before going live. It clearly distinguishes the preview from the live production version and from publish_site, but it does not mention the sibling create_landing_page_preview, so sibling differentiation is incomplete.

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

Usage Guidelines5/5

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

It explicitly says to use this after save_page_content so the user can review before publishing, and it names publish_site as the next step when the user is happy. It also explains that calling create_preview again produces a fresh link and that publishing is required to show the page to other people.

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

create_siteCreate pageAInspect

Create a hosted landing page shell with analytics, forms, and versioning. ランディングページ作成、LP作成、ホームページ作成、ページ作成。Equivalent to create_landing_page.

Where a page goes: a workspace holds sites, and each of its pages is a path on one of them: .convika.page, or the workspace's own domain once its pages open there (get_brand shows them). Pass path, such as /guides/how-to-choose, to put the page there. Leave path out and the first page sits at /, a later one at a free path made from its name. subdomain is only for the workspace's first page: it names the workspace's convika.page site. For a full URL on a domain, such as https://www.example.com/lp2, pass url instead of path. Do not turn a requested path into a Convika subdomain.

After creation, use save_page_content to add HTML (Tailwind CSS v3), then create_preview for user review. Only use publish_site after the user explicitly asks to publish/go live. Convika handles hosting, SSL, CDN, and custom domains automatically.

If guidance.existingSite is present, the requested URL shows or forwards to another site now, and connecting it would replace that. Tell the user before any DNS change, as the text says.

New pages per UTC day, per workspace: Free 10, Pro 100, MAX 1000. The count resets at midnight UTC and includes pages created through the dashboard, uploads, built-in AI, MCP, and free tools. Deleting a page does not restore the day's allowance.

NameRequiredDescriptionDefault
urlNoOptional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the page after creating it. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page.
nameYesDisplay name for the page (e.g. 'Spring Campaign 2026')
pathNoThe page's path on the workspace's site, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url.
localeNoLanguage for the page content. Defaults to 'en' (English)en
purposeNoPurpose of the landing page (e.g. 'awareness', 'consideration', 'conversion', 'retention')
industryNoIndustry of the landing page (e.g. 'saas', 'ec', 'service', 'event', 'general')
subdomainNoOnly for the workspace's first page, while get_brand has no hostLabel: it names the workspace's site, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that site: give them path instead. Never put a requested path such as /lp2 here.
primaryOfferNoThe main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the page; get_site returns it.
productSummaryNoWhat the page promotes, in one or two sentences. Saved on the page; get_site returns it.
targetAudienceNoWho the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the page; get_site returns it.
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only cover the mutation/safety profile; the description adds genuinely new behavioral context: per-workspace daily quotas (Free 10 / Pro 100 / MAX 1000, midnight UTC reset, deletions do not restore), the guidance.existingSite case where connecting a URL would replace a live site, and a user-consent gate before DNS changes. It also notes Convika handles hosting, SSL, CDN, and custom domains automatically.

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

Conciseness3/5

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

The scoping rules are front-loaded and the workflow chain is well ordered, but the entry is long and unevenly padded: a Japanese keyword list that carries little selection value for an agent, a full quota paragraph, and stray indentation before 'Where a page goes'. Several sentences could be tightened without losing meaning.

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

Completeness4/5

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

For an 11-parameter creation tool with no output schema, it covers the important gaps: quota limits, path/url/subdomain rules, the guidance.existingSite hazard, and the brand_mismatch outcome. It does not say what the call returns (e.g. the page/site id needed for save_page_content), which an agent must infer from context.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics on parameter interplay: path is a route on the workspace site, subdomain is only for the workspace's first page, url is for a full external URL, and subdomain and url are mutually exclusive. The explicit warning not to encode a path as a subdomain is practical guidance the schema does not state.

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

Purpose4/5

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

States a concrete verb and resource: creates a hosted landing page *shell* with analytics, forms, and versioning, which usefully implies it does not create content. It even claims equivalence to create_landing_page, but that leaves the relationship to create_page/create_pages/create_landing_page_preview unaddressed for a cluster of similarly named siblings.

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

Usage Guidelines4/5

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

Gives an explicit post-creation workflow (save_page_content for HTML, then create_preview, and publish_site only on explicit user request) plus concrete when-to-use rules for path vs url vs subdomain. It falls short of distinguishing this tool from create_page/create_pages, which an agent selecting among near-identical siblings would need.

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

detect_trendDetect trendA
Read-onlyIdempotent
Inspect

Mann-Kendall trend test — detect whether a time series is trending up, down, or stable.

Pass an array of ordered values (e.g., daily visitor counts from query_timeseries) to get a statistical determination of trend direction, strength (Kendall's tau), and significance (p-value). Also returns Sen's slope (change per time step). trend is "increasing", "decreasing", or "stable"; "stable" means no significant trend at the given alpha.

Requires at least 4 data points.

NameRequiredDescriptionDefault
alphaNoSignificance level (default 0.05)
valuesYesOrdered time-series values (e.g., daily visitors)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: the three possible outcomes, what 'stable' actually means (no significant trend at the given alpha), and the hard precondition of at least 4 data points.

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

Conciseness5/5

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

Front-loaded with the method and purpose, then the input shape, then the outputs, then the precondition. Every sentence carries distinct information with no repetition of the schema.

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

Completeness5/5

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

With no output schema present, the description fully compensates by enumerating the return fields (trend, Kendall's tau, p-value, Sen's slope). Combined with the stated preconditions, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description earns above baseline by explaining the semantics of the alpha threshold (it determines whether a trend is declared 'stable') and the interpretation of each return value derived from the inputs.

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

Purpose5/5

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

Names the exact statistical method (Mann-Kendall) and states the verb+outcome: determine whether a series is trending up, down, or stable. It also names the sibling that feeds it (query_timeseries), so an agent can place it precisely among 35+ siblings.

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

Usage Guidelines4/5

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

Gives clear context for use — pass an ordered array such as daily visitor counts from query_timeseries — and states the minimum data requirement. It does not, however, say when to prefer this over other analysis siblings or when a trend test is inappropriate.

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

disable_domain_routeDisable domain routeA
DestructiveIdempotent
Inspect

Disable one custom-domain route.

Use only after explicit user confirmation. This stops Convika from serving that exact path after the route map updates. On the domain where the workspace's pages open, a path the page's URLs lead to is refused (main_domain_path): ask the user to press "Move pages back to convika.page" on the Sites screen first. To replace a legacy frozen path, disable it first, then call set_site_url for the new page and same URL.

NameRequiredDescriptionDefault
routeIdYesThe route ID returned by list_domain_routes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as destructive, idempotent, and open-world, so the bar is lower. The description adds useful behavioral detail: it stops Convika from serving that exact path after the route map updates, and it describes the main_domain_path refusal case.

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

Conciseness4/5

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

The description is front-loaded with the core action and confirmation requirement, and the additional workflow notes are relevant. Some sentences, especially the main_domain_path explanation, are dense but still earn their place.

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

Completeness5/5

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

For a destructive one-parameter tool whose annotations already cover safety traits, the description provides the missing operational context: confirmation, exact effect, route-map timing, special main_domain_path handling, and legacy replacement workflow.

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

Parameters3/5

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

Schema description coverage is 100% and the single routeId parameter is already documented as coming from list_domain_routes. The description does not add further routeId semantics beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: disabling one custom-domain route. It is clearly distinct from list_domain_routes and enable_domain_route, and the special legacy-path workflow reinforces the exact scope.

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

Usage Guidelines4/5

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

It gives a strong prerequisite: use only after explicit user confirmation. It also explains the main_domain_path exception and the legacy frozen path replacement sequence, though it does not explicitly mention enable_domain_route as the reversal alternative.

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

enable_domain_routeRe-enable domain routeA
Idempotent
Inspect

Use this tool when the user wants a path on their custom domain (独自ドメイン) to open again after it was stopped, such as "/webinar をまた開けるようにして" or "re-enable www.example.com/lp2".

Opens one stopped route again (one disable_domain_route stopped, or 外す on the dashboard), with the page it had. Call list_domain_routes first and pass the id of a route whose status is "disabled".

  • The URL answers again once the route map updates (about a minute). A page that isn't published still answers 404 there until the user publishes it.

  • If another page serves the same path now, nothing changes and the result is route_conflict with that page's existingSiteId: ask the user which page should stay, then disable the other route first. Change it only when the user asks.

NameRequiredDescriptionDefault
routeIdYesThe id of a disabled route, from list_domain_routes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, it discloses that the URL answers again after the route map updates in about a minute, that an unpublished page still returns 404, and that a conflicting page produces route_conflict with existingSiteId. These are meaningful operational behaviors for a mutation tool.

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

Conciseness5/5

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

The description is front-loaded with the core action and user-intent examples, then uses bullets for timing and conflict behavior. It is appropriately sized for a mutation tool with non-obvious side effects.

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

Completeness5/5

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

With no output schema, the description still explains the success timing, the unpublished-page 404 case, and the conflict result shape. Combined with annotations covering safety and idempotency, it gives the agent enough to call the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents routeId as the id of a disabled route from list_domain_routes. The description reinforces the disabled-status prerequisite but does not add syntax or format details beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: re-opening one stopped custom-domain route, with the page it had. It clearly distinguishes this from disable_domain_route and list_domain_routes by naming the stopped-route state and the prerequisite lookup.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance, including user-intent examples, and says to call list_domain_routes first and pass a route whose status is "disabled". It also covers the conflict case and tells the agent to ask the user before changing anything else.

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

enable_ordersStart taking ordersAInspect

Use this tool when the user wants a Convika page (ホームページ, ランディングページ, Webサイト) to take orders: a buy button, an order form, or a request such as 「購入ボタンを付けて」「注文フォームにして」「このページで注文を受け付けたい」.

It reads the item names and prices the page's saved HTML shows, and each item's image from the page when one sits beside it (imageUrl, else null), and saves them as a DRAFT price list for the page. It never confirms a price and never turns orders on. The seller finishes on the dashboard, at setupUrl: checks each item, price and image, chooses how buyers pay and how each item is handed over, enters the seller's details, and agrees to the order terms. Show the user setupUrl and the steps in sellerMustFinish, and don't tell the user the page takes orders yet.

Each item has its own ways of receiving: pickup, delivery, online (a session the seller holds online), visit (the seller goes to the buyer), or digital (a file or link sent by email). A buyer can only order items together that share a way, and the order page states that way's delivery timing and cancellation terms. Pass itemModes with your reading of the page, by each item's name as the page shows it (a consultation on Zoom → online, a PDF or a download → digital); leave an item out when the page doesn't say. They are saved on the draft only, as suggestions the seller checks in setup; nothing is sold until the seller confirms. Each returned item's fulfilmentModes is what is saved for it (null = none yet).

status: "draft_saved" (a new draft from the page), "no_prices_found" (the page shows no price Convika could read; the seller adds items in setup), "confirmed_list_kept" (the seller already confirmed a list; nothing changed, itemModes included), "already_taking_orders" (nothing changed). Calling it again replaces only an unconfirmed draft.

Buy buttons: give the page's buttons or links the attribute data-convika-order (an empty value opens the whole order form) with save_page_content. They lead to the order form once the seller starts orders; until then they stay as written. Sellers can also take card payments by connecting a Stripe account in the order setup on the dashboard (two-step verification required).

NameRequiredDescriptionDefault
siteIdYesThe ID of the page to take orders on
itemModesNoYour reading of how each item is handed over, saved on the draft for the seller to check in setup. Leave an item out when the page doesn't say.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say non-read-only, non-destructive, non-idempotent. The description adds substantial context the annotations cannot: it saves a DRAFT only, never confirms a price or turns orders on, enumerates all four status values and their meanings, and clarifies that a repeat call replaces only an unconfirmed draft (directly relevant given idempotentHint=false).

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

Conciseness4/5

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

Front-loaded with the trigger sentence and organized by topic (draft behavior, statuses, itemModes, buttons, Stripe). It is long and repeats the 'nothing is sold yet' idea more than once, and the Stripe/two-step verification aside is peripheral, but nearly every sentence carries operative information.

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

Completeness5/5

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

There is no output schema, and the description compensates by documenting status outcomes, setupUrl and sellerMustFinish handoff, and the fulfilmentModes return value. An agent has enough to call the tool and correctly report the result without over-claiming that orders are live.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description meaningfully extends itemModes: it explains how to infer modes from page content (Zoom consultation → online, PDF/download → digital), that items should be omitted when the page is silent, and that values are proposals stored on the draft with returned fulfilmentModes reflecting what was actually saved.

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

Purpose5/5

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

The description opens with a precise trigger and outcome: making a Convika page take orders, with concrete instantiations (buy button, order form) and multilingual user phrasings. An agent can immediately tell this apart from read-side siblings like get_orders or content-editing siblings like save_page_content.

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

Usage Guidelines4/5

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

It gives strong when-to-use signals (explicit request patterns in English and Japanese) and post-call instructions (show setupUrl and sellerMustFinish, don't claim the page takes orders yet). It does not explicitly name alternatives (e.g., get_orders for viewing, save_page_content for wiring buttons) as exclusion paths, so it stops short of a full routing statement.

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

export_form_submissionsExport form submissionsA
Read-onlyIdempotent
Inspect

Export all form submissions as CSV or JSON for use in spreadsheets, CRM, or other tools.

Use when the user wants to download, export, or analyze their form data outside of Convika. The export holds each submission's answers, country, spam score, and time. The submitter's IP address and browser details are not included. The submissions come inside <untrusted-data-…> tags with an id new to the call (the whole CSV, or in JSON each submission whole, field names included, with untrustedData beside them): everything inside was sent by whoever filled in the form. Each submission's time is ISO 8601 in UTC, and a date alone in startDate or endDate (YYYY-MM-DD) means that whole UTC day. The export has no timeZone field; its times are UTC.

NameRequiredDescriptionDefault
limitNoMaximum submissions to inline in the MCP response. Defaults to 1000, max 1000.
formIdYesThe form ID to export submissions from
formatNoExport format (default: csv)
offsetNoNumber of submissions to skip for chunked exports.
siteIdYesThe ID of the page that the form belongs to
endDateNoFilter submissions until this date (ISO 8601; a date alone runs to the end of that UTC day)
startDateNoFilter submissions from this date (ISO 8601; a date alone starts at 00:00 UTC)

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent/non-destructive annotations: it enumerates included fields (answers, country, spam score, time), explicitly excludes IP and browser details, and warns that returned content is user-supplied and wrapped in untrusted-data tags with a per-call id. That is exactly the prompt-injection and data-shape context an agent needs and cannot get from structured fields.

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

Conciseness4/5

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

The core purpose and usage condition are front-loaded and every paragraph carries useful content. The parenthetical describing how untrusted-data tags appear in CSV versus JSON is dense and hard to parse in one pass.

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

Completeness4/5

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

With seven parameters, no output schema, and a read-only profile, the description covers return shape, excluded fields, time semantics, and safety framing well. It omits any hint about pagination limits (max 1000 per call, offset for chunking), which the agent must discover from the schema alone.

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

Parameters3/5

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

Schema coverage is 100% and every parameter is already documented in-schema, so the description's restatement of ISO 8601 / whole-UTC-day semantics adds little beyond the schema. It does clarify there is no timeZone field and that times are UTC, which is a small genuine addition, but nothing on limit/offset chunking behavior.

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

Purpose4/5

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

States a specific verb and resource plus output formats (CSV/JSON) and a target use (spreadsheets, CRM, other tools). It does not differentiate itself from the sibling get_form_submissions, leaving the agent to infer which one to reach for.

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

Usage Guidelines4/5

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

"Use when the user wants to download, export, or analyze their form data outside of Convika" gives a clear triggering condition. It stops short of naming the alternative (get_form_submissions) or stating exclusions, so the when-not half is missing.

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

get_ai_accessGet AI accessA
Read-onlyIdempotent
Inspect

Use this tool when the user asks whether ChatGPT, Claude, Perplexity, Gemini or another AI reads their landing page (ランディングページ, ホームページ, Webサイト), which AI crawlers fetched it, or how many visitors AI assistants sent (「AI に読まれている?」「ChatGPT から来た人は?」).

Returns one page's AI access for 7d, 30d (default), or 90d; 180d, 365d, and all need Pro or MAX, as the other long periods do (AI reads were first recorded on 2026-10-25, so their days start there at the earliest; referrals cover the whole period, read from the long-term daily summaries for 180d, 365d, and all).

  • totals: ai (answer + crawl), answer (an AI opened the page because a person asked it something right then: ChatGPT-User, Claude-User, Perplexity-User…), crawl (AI crawlers: GPTBot, ClaudeBot, OAI-SearchBot, PerplexityBot…), and search (bingbot and Applebot, search crawlers that also feed Copilot and Apple's features, never counted in ai).

  • verification: the fetches by IP address check, each with the same four numbers. verified: from an IP address the agent's vendor publishes. noList: not checked (the vendor publishes no list, its list has no ranges of the IP address's family or wasn't refreshed for a week, or the fetch was recorded before the check); not checked doesn't mean fake. unverified: the vendor's current list covers that IP address family and the IP address isn't on it. unverified.ai ("self-named only", typically a scanner) is left out of totals and every list; unverified.search (bingbot, Applebot) stays counted, informational only. totals = verified + noList + unverified.search.

  • byVendor, byToken (each agent's User-Agent token: fetches counted, verified among them, unverified flagged, outside fetches except for search crawlers), byPath (site and path, no query), byDay.

  • referrals: visitors and pageviews whose utm_source or referrer names an AI assistant (ChatGPT, Perplexity, Claude, Gemini, Copilot, Grok, DeepSeek, Meta AI), with byAssistant. Assistants' apps send no referrer, so this is a floor. startDate and endDate are the days counted; coversPeriod false means a longer period could only be read for its last 90 days. visitorsMethod: unique_in_period (7d, 30d, 90d) or sum_of_daily_uniques (180d, 365d, all: each day's visitors added up, so someone who came on 3 days counts 3 times, as in the other long-term visitor counts). available false means page views couldn't be read right now, not zero.

  • liveDaysAvailable: today's and yesterday's AI reads are read live; false means they couldn't be read right now, not zero, so the totals leave those two days out. Agents are named by what the requests' User-Agents claimed; where the vendor publishes its IP addresses (OpenAI, Perplexity, Anthropic, Microsoft, Apple, DuckDuckGo, Google), each fetch is checked against them and the IP address is never stored. Only fetches of the live page are counted (not robots.txt or the sitemap). AI reads and referrals are on the workspace's days (fetchDayTimeZone, referralTimeZone; UTC when none is set); referrals for 180d, 365d, and all are on the days the daily summaries are cut in, which follow a zone change once it has finished rebuilding, as get_analytics_summary's long periods do. Right after the workspace's zone changes, AI reads stay in the earlier zone, as fetchDayTimeZone says, until an hourly run re-reads the page; fetchDayTimeZoneSince, when set, is the first day in fetchDayTimeZone, and earlier days are in the zone before. Neither is a page view or a visitor in get_analytics_summary.

NameRequiredDescriptionDefault
periodNoTime period. Defaults to 30d. 180d/365d/all require Pro or MAX plan.30d
siteIdYesThe ID of the page to read AI access for

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent safety, yet the description adds substantial behavioral context: Pro/MAX gating for 180d/365d/all, data first recorded 2026-10-25, IPs never stored, only live page fetches counted (not robots.txt/sitemap), and timezone behavior on zone change. It also preempts the most dangerous misreading by stating that available=false and liveDaysAvailable=false mean 'not zero'.

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

Conciseness3/5

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

The use-when trigger is correctly front-loaded and the bullet grouping of totals/verification/referrals helps, but the prose is extremely dense with nested caveats (fetchDayTimeZoneSince, rebuilt zone changes, floor semantics) that overwhelm scanning even though most are substantive. There is no output schema, so much of the length is justified, but it could be tightened.

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

Completeness5/5

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

With no output schema and a highly complex return shape, the description carries the full documentation burden and does so thoroughly: it defines every top-level field group (totals, verification, byVendor/byToken/byPath/byDay, referrals, liveDaysAvailable) and their edge-case semantics.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: period affects visitorsMethod (unique_in_period vs sum_of_daily_uniques), whether referrals coversPeriod, and which days are read live. siteId gains scope clarification ('One page's') that the schema's one-liner does not fully convey.

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

Purpose5/5

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

The description names a specific verb and resource ('Returns one page's AI access') and enumerates the exact question types it answers (AI reads of a landing page, which crawlers fetched it, AI-referred visitors). It explicitly separates itself from get_analytics_summary ('Neither is a page view or a visitor in get_analytics_summary'), which is the key sibling confusion risk.

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

Usage Guidelines5/5

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

Opens with an explicit use-when clause covering multiple phrasings, including Japanese user utterances ('「AI に読まれている?」「ChatGPT から来た人は?」'), so an agent can route on natural user language. It also states the negative boundary against get_analytics_summary, so the alternative is named and the exclusion is clear.

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

get_analytics_detailGet analytics breakdownA
Read-onlyIdempotent
Inspect

Deep-dive analytics with period comparison, device breakdown, UTM tracking, and CTA click analysis.

Use when the user wants to optimize campaigns, evaluate traffic sources, or understand user behavior in detail. Includes everything from get_analytics_summary PLUS:

  • CTA click breakdown (which buttons get clicked most)

  • Device breakdown (mobile/desktop/tablet)

  • UTM parameter analysis (source, medium, campaign)

  • Period-over-period comparison with change percentages

  • Hourly breakdown (short-term only) Periods: 7d (default), 30d, 90d | 180d, 365d, all (Pro/MAX only) With 90d, a timeZone other than the workspace's leaves the change figures null, except for form submissions: the previous 90 days come only from daily summaries kept in the workspace's time zone. Leave timeZone out for 90d changes. Dates and hours are in the workspace's time zone, UTC when the workspace has none set. Pass timeZone, an IANA name such as America/New_York, for days in another zone; it changes only this response, never the workspace's time zone. The result's timeZone field names the zone used, and timeZoneSource says where it came from (argument, workspace, or default). A row for today's date in that zone counts only the hours so far. When timeZonePending is set, the workspace is switching to that zone once its history is recomputed. 180d, 365d, and all come from daily summaries kept in the workspace's time zone, so a different timeZone isn't used there: the result stays in the summaries' zone and names the zone you passed as requestedTimeZone.

NameRequiredDescriptionDefault
periodNoTime period for the analytics detail. 180d/365d/all require Pro or MAX plan.7d
siteIdYesThe ID of the page to get detailed analytics for
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
botFilterNoWhether to exclude known bots and vulnerability scanner traffic. Defaults to exclude. Use include only for diagnostics.exclude

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description adds substantially more: 90d changes go null when a non-workspace timeZone is passed, long periods come from daily summaries in the workspace's time zone, requestedTimeZone is reported instead of applied, timeZonePending signals a pending zone switch, and today's row is partial. These are non-obvious edge cases an agent could not infer from annotations.

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

Conciseness3/5

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

Well front-loaded with purpose and use case, but the multi-sentence time-zone block is dense and partly restates the schema's own timeZone description, including dashboard/settings commentary that an agent doesn't need. It's informative but not tight.

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

Completeness4/5

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

For a 4-param read tool with no output schema, the description covers plan gating, period semantics, time-zone behavior, and several result field names, which is close to sufficient. It never sketches the overall response shape (what the breakdown rows contain), leaving a modest gap given there is no output schema to lean on.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real semantics beyond it: it explains why timeZone must be omitted for 90d change figures, that timeZone only affects this response and never the workspace setting, and how the result names the zone used (timeZone, timeZoneSource, requestedTimeZone). botFilter is left entirely to the schema, so it isn't a full 5.

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

Purpose5/5

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

States a specific verb and resource (analytics detail/breakdown) and enumerates the concrete dimensions it returns: period comparison, device, UTM, CTA clicks, hourly. It explicitly positions itself against the sibling get_analytics_summary ('Includes everything from get_analytics_summary PLUS'), so an agent can separate the two without opening schemas.

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

Usage Guidelines4/5

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

Gives concrete use cases ('optimize campaigns, evaluate traffic sources, understand user behavior in detail') and implicitly routes simpler needs to get_analytics_summary via the 'PLUS' framing. It also warns that 180d/365d/all are Pro/MAX only. It stops short of an explicit 'use summary instead when...' exclusion, so it stops at a strong 4.

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

get_analytics_summaryGet analytics summaryA
Read-onlyIdempotent
Inspect

Check how a landing page is performing — pageviews, visitors, CTA clicks, referrers, and more.

Use when the user asks about traffic, performance, conversions, or how their page is doing. Returns daily breakdown, top pages, referrers, and country data.

  • Short-term periods: 7d (default), 30d, 90d

  • Long-term periods: 180d, 365d, all (Pro/MAX only) Visitors here are this page's; the dashboard's site overview counts people across a site, a different number. For deeper analysis (device breakdown, UTM, hourly data, period comparison), use get_analytics_detail instead. Dates and hours are in the workspace's time zone, UTC when the workspace has none set. Pass timeZone, an IANA name such as America/New_York, for days in another zone; it changes only this response, never the workspace's time zone. The result's timeZone field names the zone used, and timeZoneSource says where it came from (argument, workspace, or default). A row for today's date in that zone counts only the hours so far. When timeZonePending is set, the workspace is switching to that zone once its history is recomputed. 180d, 365d, and all come from daily summaries kept in the workspace's time zone, so a different timeZone isn't used there: the result stays in the summaries' zone and names the zone you passed as requestedTimeZone.

NameRequiredDescriptionDefault
periodNoTime period for the analytics summary. 180d/365d/all require Pro or MAX plan.7d
siteIdYesThe ID of the page to get analytics for
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
botFilterNoWhether to exclude known bots and vulnerability scanner traffic. Defaults to exclude. Use include only for diagnostics.exclude

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent safety, and the description goes far beyond them: plan gating for long periods, that timeZone only affects this response and never the workspace setting, that long periods ignore timeZone and report requestedTimeZone, that today's row is partial, and the timeZonePending state. These are non-obvious behavioral facts an agent could not infer from annotations or schema.

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

Conciseness4/5

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

Purpose and usage triggers are front-loaded ahead of the detail, which is the right order. The final timezone paragraph, however, is a dense multi-clause block covering five distinct behaviors that would read better as separate points, costing some scannability.

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

Completeness5/5

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

There is no output schema, yet the description describes the return shape (daily breakdown, top pages, referrers, country) plus the timeZone/timeZoneSource/timeZonePending fields. For a 4-parameter, read-only analytics call, nothing material needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not: the interaction between long periods (180d/365d/all) and timeZone, and how the response signals which zone was actually used. botFilter is left entirely to the schema, which limits it to a 4.

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

Purpose5/5

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

The opening sentence names a specific verb+resource and enumerates the actual metrics returned (pageviews, visitors, CTA clicks, referrers). It also pre-empts confusion with get_analytics_detail by scoping 'deeper analysis' elsewhere, so an agent can distinguish it from siblings without opening a schema.

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

Usage Guidelines5/5

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

It gives an explicit trigger ('when the user asks about traffic, performance, conversions, or how their page is doing') and names the alternative for deeper analysis (get_analytics_detail with device/UTM/hourly/comparison). It also warns that its visitor count differs from the dashboard's site overview, a real selection hazard.

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

get_answer_check_resultsGet AI answer check resultsA
Read-onlyIdempotent
Inspect

Use this tool when the user asks whether AI answers mention or cite their brand: 「ChatGPT でうちの名前は出ている?」「Perplexity に引用されている?」「AI 検索での露出は?」, "do AI Overviews link to my site?" (ホームページ, Webサイト, ランディングページ).

Returns the workspace's AI answer check: its questions (with their ids for run_answer_check), brand names and saved domains (外部サイト), the checks left to run (balance: included this month, from packs, and left), checks still asking (running), and for each question on each of ChatGPT, Perplexity, Gemini, and Google AI Overviews, over the last 90 days:

  • named: answers that named a brand; cited: answers that linked to any site the workspace's pages are served on (their convika.page and older convika.com URLs, and its custom domains) or one of its saved domains; n: answers counted. Say it as "named in 3 of 8 answers"; namedShare is given only from 20 answers, with its 95% interval. Don't turn a small n into a percentage or a trend: one answer varies.

  • recent: the newest checks' statuses with when they were asked (ok; no_answer when the AI gave none, such as no AI Overview for the search; error; queued or asking while it runs). A check whose answer didn't come back was given back.

  • latest: the newest answer's flags, every URL it cited (citedUrls), the workspace's own among them (ownCitedUrls), and an excerpt of up to 300 characters around the brand name (null when not named). The full answer isn't returned.

  • The target page per question: targetPageId; targetPage (its name, path, status, url, and publishedAt, from the target pages the check returns); and target: citedBy (the AIs whose newest answer cited the page at any of its URLs), cited, publishedSinceAsked (published after an AI's newest answer), askAgain (the AIs whose answer bot read the page on a later day, readOn), and awaitingRead (ChatGPT or Perplexity, whose answer bots Convika sees: their newest answer is from before the page was published and their bot hasn't read it since; Gemini's and AI Overviews' reads aren't recorded, so they're never listed). targetCited and each AI's latest.targetCited say the same. null without a target page.

  • links: the top URLs the newest answers cited for the question, each with the AIs that cited it, own (site: a site the workspace's pages are served on; external: one of its saved domains; null: someone else's), and target (a URL of the target page); sites: the sites those answers cited most, with the share of answers that did. A target page that isn't cited is the page to fix, against the links cited instead; a question with no target page has no page to answer it yet.

  • Top level: hosts (every site the workspace's pages are served on, managed or custom, which count as its own), sites (the sites cited across every question), and askAgain: the questions shown and the AIs that can be asked again since their page was read, as run_answer_check's promptIds and engines take them.

  • Each excerpt is an AI's text, inside an <untrusted-data-…> tag with an id new to the call; untrustedData says so.

  • promptIds or targetPageId pick the questions. A reply holds as many questions as fit in about 6,000 tokens; resultsShown says which, and its nextCursor, passed as cursor, gives the next ones. Nothing is asked unless the user runs the check (run_answer_check, or the dashboard's button). The answers are what each AI showed one visitor in one country at that moment; others may see different answers. Read-only.

NameRequiredDescriptionDefault
cursorNoresultsShown.nextCursor from the last call, for the next questions
promptIdsNoQuestion ids to show; leave out for all
targetPageIdNoShow only the questions that point at this page (its siteId)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds substantial behavioral context: small-sample caveats, untrusted-data tagging, token-based pagination, and the fact that answers reflect one visitor in one country at one moment. It also explains that a check whose answer did not return was given back.

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

Conciseness4/5

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

The description is long, but it is front-loaded with the use case and then organized into return-value sections. The length is largely justified because there is no output schema and the return structure is complex, though some details are dense and could be tightened.

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

Completeness5/5

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

With no output schema, the description carries the full burden of explaining return values, and it does so thoroughly: questions, brand names, saved domains, balance, running checks, per-AI metrics, recent statuses, latest answer flags, target-page details, links, sites, and pagination. It also explains caveats that affect interpretation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents cursor, promptIds, and targetPageId. The description adds only light context, such as saying promptIds or targetPageId pick the questions and that cursor comes from resultsShown.nextCursor, which is already in the schema.

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

Purpose5/5

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

The description opens with a specific use case: when the user asks whether AI answers mention or cite their brand, with concrete examples. It clearly states that the tool returns the workspace's AI answer check results, distinguishing it from run_answer_check, which actually runs checks.

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

Usage Guidelines5/5

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

It explicitly says when to use the tool and gives example user questions in Japanese and English. It also clarifies that nothing is asked unless the user runs run_answer_check or the dashboard button, which prevents misuse as a trigger for new checks.

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

get_brandGet workspaceA
Read-onlyIdempotent
Inspect

Use this tool when the user wants to see their sites and pages together, or when many pages are made or fixed at once: 「サイトのページを全部見せて」「うちのホームページにどのページがある?」, "which pages do we have on our domain?", "plan guide pages for AI answers" (ホームページ, Webサイト, ランディングページ). Other tools work without calling it first.

Returns the workspace (the tools call it a brand): id (expectedBrandId on the write tools takes it), name, hostLabel (its convika.page site is .convika.page; null until the first page names it), mainUrl, and its sites. kind says what each site is: managed (the convika.page site), custom (a site on the owner's own domain, connected to Convika), or external (a store or a social page elsewhere, with no pages here). Each managed or custom site lists its pages, top-level paths first, with id (the siteId the other tools take), name, path, status (draft, preview, or production for live), and url: up to 100 a site, fewer when the reply would pass about 6,000 tokens. pageCount is each site's total and morePages what isn't shown; list_pages lists those. Read-only.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
idYes
nameNo
sitesYes
mainUrlNo
guidanceNo
hostLabelNo

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations, the description explains return structure, site kinds, hostLabel null behavior, page listing limits (up to 100 per site or roughly 6,000 tokens), and how pageCount/morePages signal omitted pages. This adds substantial behavioral context for a read-only retrieval tool.

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

Conciseness4/5

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

The description is front-loaded with usage guidance followed by return details, and most content is relevant. It is somewhat long and includes multiple examples and field explanations, but the length is justified by the complexity of the returned workspace structure.

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

Completeness5/5

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

Given the rich annotations and output schema, the description still provides enough additional context about when to call it and what the returned workspace contains. It also covers pagination behavior and the meaning of key fields, leaving no major gaps for an agent.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description appropriately focuses on output semantics rather than inventing parameter guidance.

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

Purpose4/5

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

The description clearly states that the tool returns the workspace/brand along with its sites and pages, and it clarifies the brand/workspace naming mismatch. It is distinguishable from list_pages for omitted pages, but it does not explicitly differentiate itself from siblings like get_site or list_sites.

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

Usage Guidelines4/5

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

It gives concrete usage conditions: seeing sites and pages together, or when many pages are being created or fixed at once, with example user phrases. It also notes that other tools work without calling it first and points to list_pages for pages not shown, though it does not explicitly contrast with get_site or list_sites.

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

get_domainGet custom domain settingsA
Read-onlyIdempotent
Inspect

Use this tool when the user asks which custom domains (独自ドメイン) their workspace has, how many pages one serves, or whether AI bots may read their site (ホームページ, Webサイト, ランディングページ): ChatGPT, Claude, Perplexity, AI 学習, AI 検索.

Returns each custom domain's id, hostname, status, how many of this workspace's pages it serves, and its two AI-bot switches:

  • allowAiAnswerBots: OAI-SearchBot, Claude-SearchBot, PerplexityBot, DuckAssistBot, and the fetchers that open a page because a person asked (ChatGPT-User, Claude-User, Perplexity-User).

  • allowAiTrainingBots: GPTBot, ClaudeBot, CCBot, Bytespider, Google-Extended, Applebot-Extended. Both are true unless the owner turned them off. Pass domain (its id or hostname) for one domain; leave it out to list them all. Pages on {name}.convika.page have no settings here. Free and paid plans alike.

NameRequiredDescriptionDefault
domainNoThe domain's id or hostname, such as www.example.com. Leave out to list all.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds genuine beyond-schema context: which specific bots each switch controls, that both default to true unless the owner disabled them, that {name}.convika.page pages have no settings here, and that free and paid plans both apply. That is exactly the kind of edge-case and default information annotations cannot express.

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

Conciseness4/5

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

Structure is strong: a trigger clause, a returns clause, then a bulleted breakdown of the two bot switches, followed by usage and scope notes. It is somewhat long with multilingual keyword padding (独自ドメイン, ホームページ, and long bot name lists), but every sentence still carries content an agent would otherwise have to guess.

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

Completeness5/5

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

With no output schema, the description fully compensates by naming the returned fields and explaining what each AI-bot switch means. It also covers the ambiguous case (subdomain pages have no settings) and plan scope, leaving nothing an agent needs to call it correctly unanswered.

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

Parameters3/5

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

Schema description coverage is 100% and the parameter's own description already says 'id or hostname ... leave out to list all.' The description repeats this nearly verbatim ('Pass domain (its id or hostname) for one domain; leave it out to list them all'), adding no new semantics, so the baseline 3 fits.

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

Purpose5/5

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

The description states a specific verb and resource ('which custom domains their workspace has') and enumerates the exact data returned (id, hostname, status, page count, AI-bot switches). It is clearly distinguishable from siblings like get_domain_status, list_domain_routes, and update_domain_settings because it is the settings/listing read.

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

Usage Guidelines4/5

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

It opens with explicit trigger conditions tied to user intents ('which custom domains', 'how many pages one serves', 'whether AI bots may read their site'). It also explains the one-vs-all selection. It stops short of naming sibling alternatives (e.g. get_domain_status) to route away from, which is the only missing piece.

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

get_domain_statusGet domain statusA
Read-onlyIdempotent
Inspect

Check whether a custom domain is verified and SSL is active.

Use after setup_custom_domain to monitor progress, or when the user asks about their domain status. Shows domain verification status and SSL certificate status. If still pending, includes DNS configuration instructions. Status flow: pending_verification → active.

NameRequiredDescriptionDefault
siteIdYesThe ID of the page to check domain status for

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds real context beyond that: the returned fields (verification + SSL status), that pending responses include DNS configuration instructions, and the pending_verification → active status flow.

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

Conciseness5/5

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

Front-loaded with the core capability, followed by usage timing, return content, and the status flow. Every sentence contributes and there is no filler.

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

Completeness5/5

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

There is no output schema, but the description compensates by describing what is returned (verification status, SSL status, DNS instructions when pending) and the state progression. An agent has everything needed to call it and interpret the result.

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

Parameters3/5

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

Only one parameter and schema coverage is 100%, so the schema fully documents siteId. The description adds nothing parameter-specific, which is the expected baseline when the schema carries the burden.

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

Purpose5/5

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

Specific verb and resource: checks domain verification and SSL activation status. It also names the companion tool (setup_custom_domain) and the status lifecycle, which lets an agent distinguish it from get_domain or check_domain_control_verification without opening a schema.

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

Usage Guidelines4/5

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

Explicit trigger contexts are given: after setup_custom_domain to monitor progress, or when the user asks about domain status. It stops short of stating when to prefer a sibling such as check_domain_control_verification or get_domain, so it misses full when/when-not coverage.

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

get_form_submissionsGet form submissionsA
Read-onlyIdempotent
Inspect

View submissions collected by a landing page form.

Use when the user wants to check leads, see who filled out their form, or review contact requests. Supports pagination and date filtering. Returns each submission's answers, country, spam score, and time. handledAt is when someone marked it handled (対応済み) on the dashboard, or null. waiting is true while it still waits for a reply, as the dashboard's 待っている人 counts it: not handled, not spam, not held past the plan's monthly cap, and sent in the last 14 days. The submitter's IP address and browser details are not returned. Each submission comes whole (its JSON, field names included) inside an <untrusted-data-…> tag with an id new to the call, and untrustedData says so: everything inside was sent by whoever filled in the form. Each submission's time is ISO 8601 in UTC, and a date alone in startDate or endDate (YYYY-MM-DD) means that whole UTC day. The result's timeZone field says "UTC".

NameRequiredDescriptionDefault
limitNoNumber of submissions to return (default: 50, max: 100)
formIdYesThe form ID to get submissions for
offsetNoNumber of submissions to skip (default: 0)
siteIdYesThe ID of the page that the form belongs to
endDateNoFilter submissions until this date (ISO 8601; a date alone runs to the end of that UTC day)
startDateNoFilter submissions from this date (ISO 8601; a date alone starts at 00:00 UTC)

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare a safe idempotent read, yet the description goes well beyond them: it defines handledAt, the exact semantics of `waiting` (not handled, not spam, not over the monthly cap, within 14 days), that IP and browser details are withheld, and that each submission is wrapped in an <untrusted-data-…> tag because it is attacker-controlled form input. That last point is essential for an agent handling returned content and is not derivable from any structured field.

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

Conciseness4/5

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

Purpose and usage are front-loaded, and the dense semantics of handledAt/waiting are worth their length. The untrusted-data paragraph restates the same guarantee twice ('untrustedData says so: everything inside was sent by whoever filled in the form'), which is the one place the text could be tightened.

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

Completeness5/5

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

No output schema exists, so the description carries the return-shape burden and does so fully: per-submission fields, the meaning of handledAt and waiting, omitted fields, time format, and the timeZone marker. An agent can interpret the response without guessing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above it by clarifying that a bare YYYY-MM-DD in startDate/endDate spans a whole UTC day and that all times are ISO 8601 UTC, which resolves genuine ambiguity in date filtering. It adds nothing about limit/offset defaults, but the schema already covers those.

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

Purpose4/5

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

States a specific verb and resource: 'View submissions collected by a landing page form', and the usage sentence enumerates concrete use cases (leads, form fills, contact requests). It does not name or distinguish the closest sibling, export_form_submissions, so an agent cannot tell view-vs-export apart from the definition alone.

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

Usage Guidelines4/5

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

The 'Use when the user wants to check leads, see who filled out their form, or review contact requests' sentence gives clear situational context for invocation. However, there are no exclusions or alternatives mentioned — notably export_form_submissions, which is the obvious candidate when the user wants the data out of the system rather than reviewed.

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

get_next_actionsGet a site's next stepsA
Read-onlyIdempotent
Inspect

Use this tool when the user asks what to do next on a site: 「今日やることは?」「次に何をすればいい?」「what should I do on this site?」

Returns how many next steps a site has, by kind, as the dashboard's 今日やること lists them: unopened (no one has opened the one page), name (no brand name to look for), questions (none to ask AI), asking (an AI is being asked now), ask_again (AI read a page published since it was last asked), ask_again_done (a fresh answer names and links the page), ask (questions never asked), own (an answer cites one of this site's pages and no page is chosen), make (a question has no page), fix (answers don't link to the chosen page), brand (they link without the brand name), unpublished (the chosen page isn't live), wait (waiting for AI to read a page), search (a page shows in Google and no one clicks), form (people come and no one sends the form), next_article (nothing above it to do, at most asking, ask_again_done or wait, so a new article is next). waiting counts the people waiting. hidden counts steps the owner hid. stopped: true means the workspace is past its page view cap, so only waiting is read.

  • host: required, one of the workspace's sites (get_brand lists them). Counts only. get_answer_check_results holds the questions and answers, get_search_performance the queries, get_form_submissions and get_orders who wrote. Read-only.

NameRequiredDescriptionDefault
hostYesOne of the workspace's sites, such as 'www.example.com'

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds real behavioral facts beyond them: the 'stopped: true' page-view-cap condition that limits reads to 'waiting', and that 'hidden' steps are owner-hidden. It also enumerates every returned kind, which matters because there is no output schema.

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

Conciseness3/5

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

The use case is front-loaded, which is good, but the middle is a single enormous paragraph enumerating seventeen kinds in unformatted running text, which is slow to parse. The content is mostly load-bearing given no output schema, but a bulleted structure would deliver the same information far more efficiently.

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

Completeness5/5

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

For a read-only, one-parameter counts tool with no output schema, the description covers trigger conditions, the full return vocabulary, the stopped/hidden edge cases, and where to go for underlying records. Nothing an agent needs to call it and interpret the result is missing.

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

Parameters4/5

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

Schema coverage is 100% for the single 'host' parameter, so the baseline is 3; the description adds that host must be one of the workspace's sites and points to get_brand as the way to discover them, which the schema does not say. No format or syntax detail is added beyond the schema's example.

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

Purpose5/5

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

The description opens with a specific trigger ('when the user asks what to do next on a site') and quoted user utterances, then states exactly what is returned: counts of next steps by kind, as the dashboard's 今日やること lists them. It is clearly separable from siblings like get_analytics_summary or get_site_overview because it is framed around action items rather than metrics.

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

Usage Guidelines4/5

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

It gives explicit when-to-use signals in the form of real user phrasings in Japanese and English, and routes drill-down questions to the right siblings ('get_answer_check_results holds the questions and answers, get_search_performance the queries...'). It does not state an explicit when-not-use case beyond the 'Counts only' framing.

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

get_ordersGet ordersA
Read-onlyIdempotent
Inspect

Use this tool when the user asks about the orders their Convika pages took: 「注文は何件来た?」「今日の注文を見せて」, which orders still wait for payment, or what sold.

Returns the newest orders (number, page, status, payment method, pickup or delivery, items with quantity and price, totals, currency, and whether a test order) and a summary over every order that matches: counts by status, and per currency the amount ordered and the revenue (paid orders; cash on delivery once accepted; refunds taken off). Amounts are in the currency's main unit as text ("1080" yen, "12.50" dollars). Every order is listed on every plan; spam is left out; test orders are listed and flagged but not counted.

Buyers' names, phone numbers, emails, and addresses are never returned, and neither is where each order came from: get_order_stats gives that in totals, by source and by AI assistant. Changing an order's status, refunds, and payment settings are done on the dashboard only.

On Free, counts and totals include the first 50 cash-on-delivery, bank-transfer, and payment-link orders of each UTC month; orders past that aren't counted (get_orders still lists them), omittedOverCap says how many, and the dashboard's Orders page lists them all. Pro and above have no cap. Times are ISO 8601 in UTC.

NameRequiredDescriptionDefault
limitNoHow many of the newest orders to return. Defaults to 20, max 100.
sinceNoOnly orders placed at or after this time: an ISO 8601 date or date-time, such as 2026-11-01 (midnight UTC) or 2026-11-01T09:00:00+09:00.
siteIdNoOnly this page's orders. Leave out for every page.
statusNoOnly orders in this status: new, pending_payment, accepted, paid, done, declined, cancelled, or refunded.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered, yet the description still adds substantial unique behavior: no PII returned, spam excluded, test orders listed but not counted, amounts as text in the main currency unit, ISO 8601 UTC times, and a Free-plan monthly cap with omittedOverCap. The only gap is that the shape of the returned summary object is described prose-only rather than in detail.

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

Conciseness4/5

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

Front-loaded with the trigger condition and example queries before the field list and caveats, and nearly every sentence delivers distinct information. It is dense and long — the Free-plan cap explanation and the list of what is not returned could be trimmed slightly — but nothing is wasted or repetitive.

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

Completeness5/5

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

With no output schema, the description carries the return contract itself and does so thoroughly: field list, summary contents, currency/unit formatting, and the Free-plan counting caveat with omittedOverCap. An agent has everything needed to call it and interpret the result.

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

Parameters3/5

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

Schema coverage is 100% and each of the four parameters is already documented in the schema, including the ISO 8601 format for `since` and the enum for `status`. The description adds nothing parameter-specific beyond reiterating that times are UTC, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Returns the newest orders... and a summary over every order that matches') and enumerates the fields returned. It explicitly contrasts with get_order_stats for where orders came from, so an agent can distinguish it from its nearest sibling without opening a schema.

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

Usage Guidelines5/5

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

Gives concrete trigger conditions with example user utterances (「注文は何件来た?」「今日の注文を見せて」) and names the alternative tool (get_order_stats) for source/attribution questions. It also states what is NOT done here — status changes, refunds, payment settings live on the dashboard — which removes a whole class of misrouting.

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

get_order_statsGet order statsA
Read-onlyIdempotent
Inspect

Use this tool when the user asks how many orders or how much revenue their Convika pages brought, which page sells best, or which source or campaign brings orders: 「どのページが一番売れてる?」「Instagram からの注文は?」「今月の売上」「ChatGPT から来た注文は?」.

Returns the orders and revenue in the period, by page and by traffic source (the source an order recorded from the page view that led to it: UTM source, medium, or campaign, or the referring site; "(none)" when it had none). byArrival splits the same orders into those whose buyer came from an AI assistant (ai, and assistants: each assistant by name, one of "chatgpt.com", "perplexity.ai", "claude.ai", "gemini.google.com", "copilot.microsoft.com", "grok.com", "chat.deepseek.com", "meta.ai") and the rest (other), from the link's utm_source or the referring site of the page view that led to the order. It counts orders placed (not test, spam, duplicates, or declined, cancelled, refunded, or unpaid card orders); revenue counts paid orders (cash on delivery once accepted), less refunds. Amounts are in the currency's main unit as text.

Orders hold no visitor id, so they aren't joined to visitors: for a page with an "order" goal, conversion totals in the analytics tools are estimates (conversionsEstimated). For traffic and orders by source side by side, use analyze_source_quality.

On Free, counts and totals include the first 50 cash-on-delivery, bank-transfer, and payment-link orders of each UTC month; orders past that aren't counted (get_orders still lists them), omittedOverCap says how many, and the dashboard's Orders page lists them all. Pro and above have no cap. startDate and endDate are whole days (YYYY-MM-DD) in timeZone, UTC when left out; leave both out for all time.

NameRequiredDescriptionDefault
siteIdNoOnly this page. Leave out for every page.
endDateNoLast day, YYYY-MM-DD
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
startDateNoFirst day, YYYY-MM-DD
sourceDimensionNoWhat bySource groups by. Defaults to utm_source.utm_source

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: counting rules (excludes test, spam, duplicates, declined, cancelled, refunded, unpaid), revenue definition (paid orders, COD once accepted, less refunds), currency returned as text, the Free-plan 50-orders-per-UTC-month cap with omittedOverCap, and the visitor-join limitation that makes analytics conversions estimates. That is exactly the behavioral context an agent needs to trust the numbers.

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

Conciseness4/5

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

The use-case trigger and alternatives are front-loaded and no sentence is pure filler, but the body is a dense single block, and the traffic-source definition is effectively stated twice (once for bySource, once for byArrival). Slightly tighter phrasing would make the caveats easier to scan.

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

Completeness5/5

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

There is no output schema, so the description carries the return-shape burden and does: orders and revenue totals, by page, by source dimension, and the byArrival split with the named assistant domains. Plan-tier limitations, date semantics, and the visitor-join caveat are all disclosed, leaving nothing an agent needs in order to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds real meaning on top by explaining that startDate/endDate are whole days interpreted in timeZone, that leaving both out means all time, and by defining what the bySource grouping actually represents (UTM source/medium/campaign or referrer, with "(none)"). siteId's "only this page" semantics are already fully covered by the schema.

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

Purpose5/5

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

The description names a specific verb and resource set — order counts and revenue broken down by page and by traffic source, plus byArrival — and does so in the user's own vocabulary (「どのページが一番売れてる?」「今月の売上」). An agent can separate it from get_orders (raw list) and analyze_source_quality (traffic+orders side by side) without opening either schema.

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

Usage Guidelines5/5

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

It states explicitly when to use it ("Use this tool when the user asks how many orders or how much revenue..."), gives concrete example utterances including Japanese ones, and names the alternative plus the condition that selects it ("For traffic and orders by source side by side, use analyze_source_quality"). Little is left to inference.

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

get_page_structureGet page structureA
Read-onlyIdempotent
Inspect

Get the structural composition of a landing page version — sections, CTA placements, and conversion goals.

Returns, in page order, the page-level , each , and the page-level , each with its id, first heading, and the CTAs inside it (text, link, type, and whether it is marked data-cta="primary"). CTAs outside those elements are listed in ctasOutsideSections. CTA text matches what query_cta_performance reports, so you can tell where the clicked CTA sits. If the version was saved with the sections argument of save_page_content, each section also carries that description, pattern ID, layout type, and fold position; otherwise those fields are null. sequencePosition matches sections[].sequencePosition in save_page_content. Use get_site for the saved HTML itself and version history. If version is omitted, the current production version is used, then the latest saved version as fallback. If the requested version does not exist, the tool returns version_not_found. If the page has no saved versions yet, it returns page_structure_unavailable.

NameRequiredDescriptionDefault
siteIdYesThe ID of the page
versionNoSpecific version number. Defaults to current production version.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. On top of that the description discloses non-obvious behavior: fields become null if the version wasn't saved with the sections argument of save_page_content, and the default version resolution falls back from production to latest saved. It does not mention side effects, auth, or pagination, but for a read-only structural getter that is minor.

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

Conciseness4/5

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

Front-loads the core definition, then return shape, cross-tool relationships, and defaults before errors. Dense with no filler, though the return-shape sentence is long and could be tightened; it earns its length because no output schema exists.

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

Completeness5/5

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

With no output schema, the description carries the burden of explaining what comes back (page-ordered header/sections/footer with ids, headings, CTAs) and it does so fully, plus error strings and default resolution. An agent can invoke and interpret the response without further info.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond it: it explains the production-then-fallback resolution order for an omitted version and ties sequencePosition to save_page_content.sections[].sequencePosition. These semantics aren't in the schema, which only says 'Defaults to current production version.'

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

Purpose5/5

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

States a specific verb and resource (structure of a landing page version) and enumerates the content returned: header, sections, footer, CTA placements, conversion goals. It also distinguishes itself from siblings by naming get_site and query_cta_performance explicitly.

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

Usage Guidelines5/5

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

Gives explicit routing: 'Use get_site for the saved HTML itself and version history' and links CTA text to query_cta_performance to explain when this tool is the right entry point. It also handles the omission/default case and the two failure conditions (version_not_found, page_structure_unavailable), so the agent knows when calling will fail.

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

get_portfolio_analyticsGet analytics for all pagesA
Read-onlyIdempotent
Inspect

Get a performance overview of ALL landing pages at once — pageviews, visitors, CTA clicks, and form submissions for every page.

Use when the user asks about overall performance, wants a summary of all pages, or says something like "how are my pages doing?" or "show me all LP performance". Returns a flat table-friendly summary with key metrics per page. No siteId needed — automatically fetches all pages. For detailed analytics on a specific page, use get_analytics_summary or get_analytics_detail instead. Periods: 7d (default), 30d, 90d. Long-term periods are not available for portfolio view. Visitors here add up each page, so one person on two pages counts twice; the dashboard's site overview counts people across a site, so its number can be lower. Dates and hours are in the workspace's time zone, UTC when the workspace has none set. Pass timeZone, an IANA name such as America/New_York, for days in another zone; it changes only this response, never the workspace's time zone. The result's timeZone field names the zone used, and timeZoneSource says where it came from (argument, workspace, or default). A row for today's date in that zone counts only the hours so far. When timeZonePending is set, the workspace is switching to that zone once its history is recomputed.

NameRequiredDescriptionDefault
periodNoTime period for the analytics summary.7d
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
botFilterNoWhether to exclude known bots and vulnerability scanner traffic. Defaults to exclude. Use include only for diagnostics.exclude

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description adds genuinely new context beyond that: no siteId is required, results are aggregated per page with double-counted visitors relative to the dashboard's site overview, and the response is timezone-sensitive with timeZonePending indicating an in-progress zone switch. The aggregation caveat is exactly the kind of surprising behavior an agent would otherwise misinterpret.

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

Conciseness4/5

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

Well front-loaded: purpose, then usage triggers, then alternatives, then edge cases. The timezone paragraph largely restates the schema's timeZone description (IANA names, examples) and is the one section that could be trimmed, though it does add the timeZoneSource/timeZonePending return fields.

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

Completeness5/5

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

With no output schema, the description steps in to describe the return shape ('flat table-friendly summary with key metrics per page') and names the metadata fields the caller must interpret. Combined with the aggregation and timezone caveats, an agent has everything needed to call this correctly and read the result.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema for period (only 7d/30d/90d, long-term unavailable) and for timeZone (response-scoped, echoed back via timeZone/timeZoneSource, today's row is partial). It never mentions botFilter, so the schema carries that parameter alone.

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

Purpose5/5

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

States a specific verb and resource ('Get a performance overview of ALL landing pages at once') and enumerates the metrics returned (pageviews, visitors, CTA clicks, form submissions). It explicitly distinguishes itself from the page-scoped siblings get_analytics_summary and get_analytics_detail, so an agent can pick it without opening any schema.

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

Usage Guidelines5/5

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

Gives concrete triggers ('overall performance', 'how are my pages doing?') and names the alternative tools plus the condition that selects them ('For detailed analytics on a specific page, use get_analytics_summary or get_analytics_detail instead'). It also states a negative constraint: long-term periods are unavailable for the portfolio view.

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

get_search_performanceGet Google Search performanceA
Read-onlyIdempotent
Inspect

Use this tool when the user asks how their landing page (ランディングページ, ホームページ, Webサイト) does in Google Search: clicks and impressions from Google, click-through rate, average position, or which search words people used to find it (「Google 検索で何回表示された?」「どんな言葉で検索されている?」「検索順位は?」).

Returns one page's Google Search at its Convika URL (its path on .convika.page), from Google Search Console, for 7d, 30d (default), or 90d; 180d, 365d, and all need Pro or MAX, as the other long periods do. Custom domains aren't covered yet.

  • totals and byDay: clicks, impressions, ctr (0 to 1), position (average, 1 is the top; 0 with no impressions).

  • byPath: the same per path of the page.

  • topQueries: the search words with the most clicks, then impressions, in the range. Google leaves out rare searches, so they add up to less than the totals.

  • startDate/endDate are Search Console days (Pacific time, dayTimeZone) and end on the latest day Google has reported; Google fills a day in over two or three, so the last days still grow. countsFrom is the first day counted for this page (the first whole day it had its URL). hasData false means Google showed the page in no search in the range yet, which is common for a new page. Read-only. Not a page view or a visitor in get_analytics_summary.

NameRequiredDescriptionDefault
periodNoTime period. Defaults to 30d. 180d/365d/all require Pro or MAX plan.30d
siteIdYesThe ID of the page to read Google Search performance for

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the description correctly spends its budget on non-obvious behavior: Pacific-time day boundaries, Google's 2-3 day fill-in latency causing recent days to grow, topQueries being truncated relative to totals, countsFrom/hasData semantics, and plan gating. There is no return schema, and these caveats are exactly what an agent would otherwise misreport.

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

Conciseness4/5

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

Front-loaded with the selection rule, then a compact bullet list of return fields — efficient given there is no output schema. Minor waste exists: '180d, 365d, and all need Pro or MAX, as the other long periods do' restates the schema's plan note in an awkward clause.

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

Completeness5/5

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

Two-parameter, no-output-schema tool whose description fully covers return shape, unit conventions (ctr 0-1, position 1 is top), time zone, data latency, and the empty-data case. Nothing an agent needs to call and interpret the result correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% and the parameter descriptions already cover period defaults and plan gating, so the baseline is 3. The description still adds real meaning: siteId is a page whose Search data is read at its Convika URL path, custom domains are excluded, and the period windows have latency caveats that affect interpretation.

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

Purpose5/5

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

States a specific verb and resource (Google Search performance for one page): clicks, impressions, CTR, average position, and top queries. It explicitly separates itself from get_analytics_summary ('Not a page view or a visitor'), so an agent can choose between the two analytics tools without opening either schema.

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

Usage Guidelines5/5

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

Opens with an explicit when-to-use clause tied to user phrasing (including Japanese example queries like 「検索順位は?」), and closes with an explicit when-not ('Not a page view or a visitor in get_analytics_summary'). Plan prerequisites (180d/365d/all need Pro or MAX) and scope limits (custom domains not covered) are also stated.

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

get_siteGet page detailsA
Read-onlyIdempotent
Inspect

Get detailed information about a specific Convika page, including saved versions, published URL, and current status.

Call this before editing or publishing to understand the page's current state. The response includes version history (retention: Free: 10, Pro: 50, MAX: 200) and the live URL.
Typical flow: list_sites → get_site → save_page_content → create_preview → wait for user approval → publish_site.
NameRequiredDescriptionDefault
siteIdYesThe ID of the page to retrieve

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real value on top: it discloses that the response carries version history with per-plan retention limits (Free 10 / Pro 50 / MAX 200) and the live URL. It does not cover auth requirements or failure behavior for an unknown siteId, so it falls short of a 5.

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

Conciseness4/5

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

Front-loaded with the core purpose, then usage, then flow; every part is actionable. Minor redundancy between 'saved versions, published URL' in sentence one and 'version history ... and the live URL' in sentence three, but it is not costly.

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

Completeness4/5

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

With no output schema, the description responsibly summarizes return contents and retention limits, and the workflow line gives enough context to call it correctly. The remaining gap is the unresolved site/page ID ambiguity, which an agent may stumble on when choosing an ID.

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

Parameters3/5

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

Single parameter at 100% schema coverage, so the schema carries the definition and the baseline is 3. The description adds nothing about the siteId, and notably does not resolve the site-vs-page terminology mismatch (tool name get_site, title 'Get page details', param siteId described as 'the ID of the page'), which is the one place description help would matter.

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

Purpose5/5

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

Names a specific verb (get) and resource (Convika page) and enumerates the payload: saved versions, published URL, current status. Clearly distinguishable from list_sites/list_pages and from mutators like save_page_content or publish_site.

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

Usage Guidelines5/5

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

Explicitly states when to call it ('before editing or publishing to understand the page's current state') and then spells out the full workflow list_sites → get_site → save_page_content → create_preview → approval → publish_site, naming the alternatives and their order.

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

get_site_overviewGet site countsA
Read-onlyIdempotent
Inspect

Use this tool when the user asks how a site is doing, or how many people are waiting on it: 「サイトの様子は?」「問い合わせは溜まってる?」「how's my site doing?」

Returns each site's counts: pages, live pages, and over the last 30 days visitors (visitors30d), AI reads (aiReads30d) and form entries (entries30d), with who is waiting (waiting: entries nobody has marked as handled from the last 14 days, and orders waiting on the owner). A count that couldn't be read is null, which isn't 0. stopped: true means the workspace is past its page view cap, so only pages and waiting are read.

  • host: one site, such as www.example.com; without it, every site. Counts only: get_form_submissions and get_orders hold who wrote and what they said. Read-only.

NameRequiredDescriptionDefault
hostNoOne of the workspace's sites, such as 'www.example.com'; leave out for all

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing degradation behavior: a count that couldn't be read is null rather than 0, and 'stopped: true' means the workspace exceeded its page view cap so only pages and waiting are read. That is exactly the kind of edge-case context an agent needs to interpret results correctly, which annotations cannot convey.

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

Conciseness4/5

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

Front-loaded with the trigger condition before the return details, and every sentence carries information. It is slightly dense with inline example utterances and a dash-lead host note, but nothing is genuinely wasted.

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

Completeness5/5

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

With no output schema, the description carries the full burden of explaining return values and does so field by field, including the null-vs-zero and stopped-state semantics. An agent can interpret the response without any other source.

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

Parameters3/5

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

Schema description coverage is 100% and the host parameter is already fully documented there; the description's line about host ('one site... without it, every site') largely restates it. No additional format or validation meaning is added, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Returns each site's counts: pages, live pages, visitors30d, aiReads30d, entries30d') and enumerates exactly what is included, so an agent can distinguish it from get_analytics_summary or get_site without opening a schema.

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

Usage Guidelines5/5

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

Opens with an explicit trigger ('when the user asks how a site is doing, or how many people are waiting') including quoted example utterances, and closes with a clear exclusion routing content questions to get_form_submissions and get_orders.

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

list_domain_routesList domain routesA
Read-onlyIdempotent
Inspect

List all routes under a custom domain, including frozen continuity routes left behind after domain handover.

Use after activate_domain_handover when the user wants to inspect, disable, or replace existing paths on the site.

NameRequiredDescriptionDefault
domainIdYesThe domain ID returned by get_domain_status or activate_domain_handover

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds non-obvious behavioral content: the result set includes stale/frozen routes left behind after handover, which an agent would not infer from the schema or annotations and which matters when deciding to disable or replace paths.

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

Conciseness5/5

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

Two sentences, zero filler: what is returned first, when to call it second. The most decision-relevant detail (frozen routes) is front-loaded rather than buried.

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

Completeness4/5

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

Annotation coverage, a 100%-described single param, and no output schema leave little unsaid; the description covers trigger and result scope. It could still mention whether the domain must be verified/active before listing, and roughly what a route entry contains, but nothing critical is missing for correct invocation.

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

Parameters3/5

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

With a single required parameter and 100% schema coverage, the schema already documents domainId and even points to get_domain_status and activate_domain_handover as sources. The description adds no additional syntax, format, or constraint information beyond that, so the baseline applies.

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

Purpose5/5

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

States a specific verb+resource (list routes under a custom domain) and immediately scopes it further by noting it includes frozen continuity routes left after handover. That detail separates it cleanly from the mutating siblings disable_domain_route and enable_domain_route, which operate on the same resource.

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

Usage Guidelines4/5

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

"Use after activate_domain_handover when the user wants to inspect, disable, or replace existing paths" gives a clear triggering context and hints at the follow-on tools. It stops short of naming when not to use it (e.g. a domain without handover), so it is strong but not fully exhaustive.

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

list_goalsList conversion goalsA
Read-onlyIdempotent
Inspect

List the conversion goals configured for a landing page.

Use when the user asks about a page's goals, wants to check what's being tracked as conversions, or before calling set_goals to see the current configuration.

NameRequiredDescriptionDefault
siteIdYesThe ID of the page to list goals for

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds value beyond that by framing it as a read-before-write step preceding set_goals, though it says nothing about result ordering, empty states, or limits.

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

Conciseness5/5

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

Two short sentences with the action front-loaded and the usage guidance immediately after; no filler or redundancy.

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

Completeness4/5

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

For a single-parameter read tool with rich annotations and no output schema, the definition covers purpose and workflow adequately. Only minor gaps remain around what the returned goal list looks like or how an empty configuration is reported.

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

Parameters3/5

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

With a single parameter at 100% schema coverage, the schema fully documents siteId. The description's phrase 'for a landing page' merely echoes that, adding no new syntax, format, or constraint detail.

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

Purpose5/5

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

States a specific verb (List) and resource (conversion goals configured for a landing page), which is distinct from siblings like set_goals or list_pages. An agent can immediately tell what this retrieves without opening the schema.

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

Usage Guidelines5/5

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

Gives three explicit triggering conditions (user asks about goals, checking what's tracked as conversions, and pre-reading before set_goals) plus the named alternative it pairs with. This is close to ideal when/when-not guidance.

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

list_pagesList pagesA
Read-onlyIdempotent
Inspect

Use this tool when you need some of the workspace's pages by URL: every page under /guides/, the pages on www.example.com, or the ones not live yet (ページ一覧, ホームページ, Webサイト, ランディングページ). For a workspace with hundreds of pages it finds a page's siteId by its path.

Lists the pages of the workspace's sites on Convika, top-level paths first and then by path, as short rows: id (its siteId), name, path, status, url, and access: public, password, or private_link (only people sent the link). Link a public page only from a page anyone can read.

  • host: one site, such as www.example.com; without it, every site, each page once, at the site of its main URL.

  • pathPrefix: paths that start with it. "/guides/" lists the pages under /guides/; "/guides" also includes /guides itself.

  • status: draft, preview, or production (live).

  • limit: default 50, up to 200; a reply that would pass about 6,000 tokens holds fewer. total counts every matching page; while hasMore is true, nextCursor passed as cursor gives the next set with the same filters. A path that isn't listed has no page: create_page makes one there. Read-only.

NameRequiredDescriptionDefault
hostNoOne of the workspace's sites, such as 'www.example.com'; leave out for all
limitNoPages to return, default 50
cursorNonextCursor from the last call, for the next set
statusNoKeep pages in this state only
pathPrefixNoKeep paths that start with this, such as '/guides/'

Output Schema

NameRequiredDescription
hostYes
noteNo
brandYes
pagesYes
totalYes
statusYes
hasMoreYes
nextCursorYes
pathPrefixYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description's job is to add behavior — and it does: result ordering ('top-level paths first and then by path'), the short-row shape, the three access values with a gloss for private_link, and full pagination semantics including the ~6,000-token reply budget, total, hasMore, and nextCursor reuse. This is context an agent could not derive from 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.

Conciseness4/5

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

Usage is correctly front-loaded, and the per-parameter bullets make scanning easy. Some sentences do not earn their place: the multilingual keyword parenthetical, the closing 'Read-only.' that merely repeats the annotation, and the cryptic rule 'Link a public page only from a page anyone can read.'

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

Completeness5/5

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

Filters, pagination, ordering, result row shape, and the no-page-means-create handoff are all covered, and an output schema exists so return data need not be explained at length. For a five-parameter read tool with full annotation coverage, nothing an agent needs to call it correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, so 3 is the floor, but the description goes beyond it: it explains that omitting host dedupes pages to the site of their main URL, and gives the trailing-slash distinction for pathPrefix ('/guides/' lists under /guides/; '/guides' also includes /guides itself). The limit/token interaction and the cursor loop are also stated operationally rather than restated.

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

Purpose5/5

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

The opening sentence pins down the verb, resource, and the retrieval axis ('the workspace's pages by URL'), and the second sentence spells out exactly what is returned (id/siteId, name, path, status, url, access) plus result ordering. An agent can tell this apart from list_sites, get_page_structure, and create_page without opening any schema.

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

Usage Guidelines4/5

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

It gives concrete triggering scenarios ('every page under /guides/', 'pages on www.example.com', 'the ones not live yet') and explicitly routes the create case to create_page ('A path that isn't listed has no page: create_page makes one there'). It never explains why to prefer this over siblings like get_page_structure or list_sites, so the exclusion side of the guidance is incomplete.

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

list_sitesList all pagesA
Read-onlyIdempotent
Inspect

List all landing pages (ランディングページ一覧) owned by the user on Convika.

When the user asks about their existing pages, wants to edit or check a page, or you need a siteId for any operation, call this tool first. Returns each page's id, name, subdomain, locale, status (draft/published), and public URL.

NameRequiredDescriptionDefault
limitNoMaximum number of pages to return

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value by enumerating the returned fields (id, name, subdomain, locale, status draft/published, public URL) and positioning the tool as the prerequisite for obtaining a siteId. It stops short of describing pagination or how limit affects results.

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

Conciseness5/5

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

Three tight sentences: what it returns, when to call it, what comes back. The usage trigger is front-loaded right after the purpose, and no sentence is redundant.

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

Completeness4/5

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

With no output schema, the field enumeration in the description is exactly what an agent needs to know what it will receive. The remaining gap is differentiation from list_pages/get_site and any hint about result volume, which matters for a list operation.

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

Parameters3/5

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

The single `limit` parameter is fully documented in the schema (100% coverage), so the baseline of 3 applies. The description adds nothing about default page size or whether results are truncated, which is the one place it could have supplemented the schema.

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

Purpose4/5

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

The description names a specific verb and resource ('List all landing pages ... owned by the user on Convika'), which is clearer than the bare name list_sites. However, it never addresses the obvious ambiguity with the sibling tools list_pages and get_site — the 'sites vs pages' terminology overlap is left for the agent to resolve.

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

Usage Guidelines4/5

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

It gives concrete activation contexts: 'When the user asks about their existing pages, wants to edit or check a page, or you need a siteId for any operation, call this tool first.' That is a strong positive trigger, but there is no exclusion clause telling the agent when to prefer list_pages or get_site instead.

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

move_pageMove pageA
Destructive
Inspect

Use this tool when the user wants a page at a different path on their site: 「このページを /guides/ の下に移して」「ページの URL を変えたい」, "move the pricing page to /pricing" (ホームページ, Webサイト, ランディングページ).

Changes one page's path on the workspace's site, such as /cafe-guide to /guides/cafe. The page keeps its content, versions, forms, goals, and numbers. path: lowercase letters, numbers, and hyphens between slashes; "/" is the site's top page. When another page already uses the path, nothing moves and the answer says so. The old URL answers with a 301 redirect to the new one (redirectFrom names it), so links, ads, and QR codes with the old URL keep working until another page takes that path. set_site_url puts a page at a full URL on a domain that isn't connected yet. The answer names the workspace (brand.id, name, host); with expectedBrandId, a connection that now works on another workspace changes nothing (brand_mismatch).

NameRequiredDescriptionDefault
pathYesThe new path, such as '/guides/how-to-choose'
siteIdYesThe page's id (get_brand or list_pages)
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

Output Schema

NameRequiredDescription
urlYes
pathYes
brandYes
siteIdYes
guidanceNo
redirectFromNo

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses what is preserved (content, versions, forms, goals, numbers), the collision outcome ('nothing moves and the answer says so'), the 301 redirect with redirectFrom naming, and the expectedBrandId guard returning brand_mismatch. These are exactly the side effects an agent cannot infer from destructiveHint/idempotentHint alone.

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

Conciseness4/5

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

Front-loaded with the trigger, then behavior, then a sibling disambiguation — a logical order. It is on the long side, and the parenthetical keyword list '(ホームページ, Webサイト, ランディングページ)' is mild padding, but nearly every sentence carries actionable information.

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

Completeness5/5

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

An output schema exists, yet the description still characterizes the response (workspace identity in brand.id/name/host, brand_mismatch) and covers collision, redirect, and preservation behavior. For a 3-parameter mutation tool, nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: path character rules, the fact that '/' means the site's top page, and the redirect/brand-mismatch consequences of the parameters. It stops short of describing every edge case (e.g. max length of 200) but adds enough to beat the baseline.

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

Purpose5/5

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

States a specific verb and resource — 'Changes one page's path on the workspace's site' — and immediately illustrates with a concrete example (/cafe-guide to /guides/cafe). It also explicitly separates itself from set_site_url, so an agent can distinguish it from the closest sibling without opening either schema.

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

Usage Guidelines5/5

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

Opens with an explicit trigger condition ('when the user wants a page at a different path') plus multilingual example utterances, and names the alternative tool with the condition that selects it ('set_site_url puts a page at a full URL on a domain that isn't connected yet'). Both when-to-use and when-to-use-something-else are covered.

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

pingCheck connectionA
Read-onlyIdempotent
Inspect

Health check tool that returns pong

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only the return payload ('pong'), which is useful but minimal; it says nothing about latency, timeout behavior, or whether the check touches external systems.

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

Conciseness5/5

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

A single short sentence with the purpose front-loaded and no filler. Nothing could be removed without losing meaning.

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

Completeness4/5

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

For a trivial zero-parameter diagnostic with no output schema, the description covers what the tool does and what it returns ('pong'), which is the key missing piece of structured information. Only the absence of any usage context keeps it from being fully complete.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to clarify beyond confirming that no input is needed, which it implicitly does.

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

Purpose4/5

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

States a specific function ('health check tool') and its observable result ('returns pong'), which is enough to distinguish it from all sibling tools, none of which are connectivity checks. It is close to restating the name 'ping', but the addition of the expected response makes the behavior concrete.

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

Usage Guidelines2/5

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

The description gives no indication of when an agent should call this versus any other tool, nor any preconditions or exclusions. For a diagnostic utility this is a notable gap, though the name itself implies the use case.

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

publish_pagesPublish pagesA
Destructive
Inspect

Use this tool when the user asks to publish several pages at once: 「全部公開して」「このガイドページをまとめて公開して」, "publish these 20 pages", "make the new FAQ pages live" (ページの一括公開, ホームページ, Webサイト, ランディングページ).

Publishes the latest saved version of each page (siteIds, up to 10 per call) at its live URL, in two calls:

  1. dryRun: true publishes nothing. Per page it gives the live URL, the publish check's warnings, and a status: ready, already_live, or blocked (with the reason). headroom has the plan's room left, and confirmToken works for these same pages for a short time (until expiresAt).

  2. The real call takes the same siteIds and that confirmToken; without a valid token nothing is published (confirm_token_required, confirm_token_invalid), and a page saved after the dry run refuses the token (pages_changed): run the dry run again and show the user what changed. It is the step for after the user has seen the dry run and asked to publish. Per page the status is published, already_live, failed (with the reason), or limit_reached: a plan limit stopped the batch there, and the pages before it are live. summary counts each status. Like publish_site in production, the real call changes what anyone on the internet sees. idempotencyKey: a new id per batch; the same call sent again with the same key and token, after a timeout, returns the batch already run. A bigger job runs as several calls of up to 10 pages each, each with its own dry run. Every answer names the workspace (brand.id, name, host); with expectedBrandId, a connection that now works on another workspace changes nothing (brand_mismatch).

NameRequiredDescriptionDefault
dryRunNotrue: check the pages and get a confirmToken; nothing is published
siteIdsYesThe pages' ids (get_brand or list_pages)
confirmTokenNoThe confirmToken from a dry run of the same siteIds; the real call needs it
idempotencyKeyNoA new id for this batch, such as a UUID; the same one again only to retry
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

Output Schema

NameRequiredDescription
brandYes
pagesYes
dryRunYes
summaryYes
guidanceNo
expiresAtNo
confirmTokenNo

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the annotations (destructiveHint, openWorldHint) by spelling out that the real call changes what anyone on the internet sees, that dryRun publishes nothing, token expiry via expiresAt, plan headroom, per-page statuses, and error codes (confirm_token_required, confirm_token_invalid, pages_changed, brand_mismatch, limit_reached). The idempotencyKey guidance is consistent with idempotentHint=false, since retry safety requires an explicit key.

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

Conciseness4/5

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

Front-loaded with the trigger and organized as a numbered two-step flow, which is the right structure for this tool. It is dense and mostly earns its length, but some parameter wording duplicates the schema nearly verbatim and the parenthetical keyword lists add clutter.

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

Completeness5/5

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

An output schema exists, yet the description still gives enough on statuses and summary counts for an agent to interpret results and retry correctly. With annotations covering the safety profile, nothing material is missing for a destructive, open-world batch publish.

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

Parameters4/5

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

Schema coverage is 100% and the schema descriptions already cover dryRun, confirmToken, idempotencyKey and expectedBrandId, so much of the description's parameter text is reinforcing rather than additive. It still adds genuine meaning the schema lacks: token lifetime and the pages_changed refusal rule, plus the per-status behavior of limit_reached.

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

Purpose5/5

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

States a specific verb and resource with scope ('publish several pages at once'), and contrasts itself with the sibling publish_site ('Like publish_site in production, the real call changes what anyone on the internet sees'). Real user utterances in Japanese and English make the intended trigger unmistakable.

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

Usage Guidelines5/5

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

Explicitly says when to use it (batch publish requests), that a dry run must precede the real call, and what to do when the token is refused (pages_changed: rerun the dry run). It also states the batching rule for larger jobs (several calls of up to 10 pages, each with its own dry run).

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

publish_sitePublish pageA
Destructive
Inspect

Deploy a landing page to preview or production. ページ公開・デプロイ。

For normal creation/editing, prefer create_preview first so the user can review changes.
- "preview" slot (default): creates a token-protected preview URL without affecting the live version
- "production" slot: makes the page publicly accessible at the assigned primary URL if one exists, otherwise at its path on the workspace's https://<name>.convika.page site (get_brand shows it)
  • Production requires confirmProduction=true and should only be used when the user explicitly asks to publish/go live

  • If versionNumber is omitted, the latest saved version is published

  • Convika handles hosting, CDN, and SSL automatically

  • On Pro, MAX, Enterprise, a production publish also sends the page's URL to IndexNow (Bing and the other engines that take part; Google doesn't take IndexNow). Engines decide when to crawl: don't promise faster indexing or a place in AI answers.

  • The response includes a "warnings" array with preflight checks: missing goals, meta description, OGP tags, or forms. Inform the user of any warnings and offer to fix them (use set_goals for goals, save_page_content for meta tags, create_form for forms).

NameRequiredDescriptionDefault
slotNoDeployment slot. Defaults to 'preview'. 'production' makes the page live and requires confirmProduction=true.preview
siteIdYesThe ID of the page to publish
versionNumberNoVersion number to publish. If omitted, the latest saved version is used.
confirmProductionNoSet true only when the user explicitly asked to publish/go live in production.

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (which only flag destructive/openWorld/not-idempotent) by explaining that preview is token-protected and does not touch the live version, that production makes the page publicly reachable at a specific URL resolution order, that hosting/CDN/SSL are handled, that IndexNow submission occurs on paid plans, and that the response carries a warnings array with preflight checks. It even guards against over-promising indexing outcomes.

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

Conciseness4/5

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

Front-loaded with the core verb and slot choice, then bulleted for scannability, with the warnings-handling contract last. A couple of bullets (versionNumber default, slot description) duplicate the schema verbatim and could be trimmed, and the bilingual tagline adds no routing value.

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

Completeness5/5

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

No output schema, yet the description sketches the important part of the return (warnings with missing goals/meta/OGP/forms) and routes the agent to set_goals, save_page_content, and create_form to fix them. For a destructive, world-visible action, the preconditions an agent needs before calling are all present.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description still adds meaning by expanding slot semantics (public URL resolution order, get_brand to find the workspace site) and by tying confirmProduction to an explicit user request. versionNumber and confirmProduction restate the schema rather than extend it, keeping this just below a 5.

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

Purpose5/5

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

States a specific verb and resource ('Deploy a landing page') plus the two target slots, so the agent immediately knows this is a deployment action rather than authoring. It explicitly contrasts itself with create_preview for creation/editing, and the unspoken sibling publish_pages is at least distinguishable by singular scope.

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

Usage Guidelines5/5

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

Gives explicit routing rules: prefer create_preview for normal creation/editing so the user can review, use only when the user explicitly asks to publish/go live, and requires confirmProduction=true for production. Both the when and the when-not are stated, along with the guardrail parameter.

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

query_cta_performanceQuery CTA performanceA
Read-onlyIdempotent
Inspect

CTA-level click analytics with daily time series.

Each row has date, CTA text, link, type (explicit for data-cta elements, link, or button), clicks, and unique clickers. Use when the user asks which buttons or links people click, or whether a CTA change worked; get_page_structure shows where each CTA sits on the page. Scans count toward the monthly analytics scan quota and overage billing where applicable. Dates must be valid calendar dates in YYYY-MM-DD format, and startDate must be on or before endDate. Dates are days in the workspace's time zone, UTC when the workspace has none set, and startDate and endDate are whole days in the zone used. Pass timeZone, an IANA name such as America/New_York, for days in another zone; it changes only this response, never the workspace's time zone. The result's timeZone field names the zone used, and timeZoneSource says where it came from (argument, workspace, or default). A row for today's date in that zone counts only the hours so far. When timeZonePending is set, the workspace is switching to that zone once its history is recomputed. Optionally filter by exact CTA text or by a regular expression for the CTA href.

Combine with query_timeseries for traffic context (clicks ÷ visitors = CTR).

NameRequiredDescriptionDefault
limitNoMaximum rows to return. Defaults to 100, max 500.
siteIdYesThe ID of the page
ctaTextNoFilter by exact CTA button text
endDateYesEnd date (YYYY-MM-DD)
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
startDateYesStart date (YYYY-MM-DD)
ctaHrefPatternNoFilter by CTA link pattern as a valid regular expression (e.g. 'https://shop\\.example\\.com/.*')

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real operational context beyond them: scans count against the monthly analytics scan quota with overage billing, today's row is partial, and timeZonePending signals a pending workspace zone switch. It does not cover result ordering or pagination behavior, which keeps it short of a 5.

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

Conciseness4/5

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

Front-loaded with the row shape and the use case before the operational caveats, and every paragraph carries information. The time-zone paragraph is long and partly duplicates the timeZone schema description, so it is dense rather than wasteful.

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

Completeness5/5

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

With no output schema, the description takes on the burden of describing the returned columns and the timeZone/timeZoneSource/timeZonePending fields, and it does so. For a 7-parameter read tool with full annotation coverage, an agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter constraints the schema lacks: dates must be valid calendar dates and startDate must be on or before endDate, plus the exact-text vs regex-href distinction between ctaText and ctaHrefPattern. The timeZone explanation largely restates the schema field, which caps it at 4.

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

Purpose5/5

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

States a specific verb and resource ('CTA-level click analytics with daily time series') and enumerates the exact row shape (date, CTA text, link, type, clicks, unique clickers). It explicitly distinguishes itself from get_page_structure (placement) and query_timeseries (traffic context), so an agent can route without opening a schema.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('Use when the user asks which buttons or links people click, or whether a CTA change worked') and names two alternatives with their distinct roles: get_page_structure for placement and query_timeseries for CTR context. Both the when and the when-else are covered.

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

query_segmentsCompare segmentsA
Read-onlyIdempotent
Inspect

Compare two visitor segments side-by-side with daily time series.

Define two segments with different filters (e.g., mobile vs desktop, Japan vs US) and get parallel daily pageview/visitor data for each. Data covers the last 3 months and excludes known bots and vulnerability scanners, the same as get_analytics_summary. Scans count toward the monthly analytics scan quota and overage billing where applicable. Dates must be valid calendar dates in YYYY-MM-DD format, and startDate must be on or before endDate. Dates are days in the workspace's time zone, UTC when the workspace has none set, and startDate and endDate are whole days in the zone used. Pass timeZone, an IANA name such as America/New_York, for days in another zone; it changes only this response, never the workspace's time zone. The result's timeZone field names the zone used, and timeZoneSource says where it came from (argument, workspace, or default). A row for today's date in that zone counts only the hours so far. When timeZonePending is set, the workspace is switching to that zone once its history is recomputed. Supported segment filters are device (mobile, desktop, tablet) and country (two-letter code such as JP or US).

Example: segmentA={label:"Mobile", filters:{device:"mobile"}}, segmentB={label:"Desktop", filters:{device:"desktop"}}

NameRequiredDescriptionDefault
limitNoMaximum rows to return per segment. Defaults to 100, max 500.
siteIdYesThe ID of the page
endDateYesEnd date (YYYY-MM-DD)
segmentAYes
segmentBYes
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
startDateYesStart date (YYYY-MM-DD)

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial context beyond them: 3-month data window, bot/scanner exclusion, scan quota and overage billing, time-zone day semantics, partial-day handling, and timeZonePending behavior.

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

Conciseness4/5

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

The description is front-loaded and logically organized into purpose, data scope, date handling, and filter details. It is somewhat long and repeats some timeZone details already present in the schema, but every section contributes useful context.

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

Completeness4/5

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

For a tool with seven parameters, nested segment objects, and no output schema, the description covers the critical operational details: segment filter semantics, date/time-zone rules, data scope, and quota implications. It could be slightly more complete by mentioning the limit parameter, but the schema covers that adequately.

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

Parameters4/5

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

Schema coverage is 71%, so the schema carries most parameter meaning, but the description adds value: it clarifies date format constraints, startDate <= endDate, time-zone handling for whole days, supported segment filters (device, country), and provides a nested example. It does not explain the limit parameter, which is left to the schema.

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

Purpose5/5

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

The description immediately states a specific verb and resource: compare two visitor segments side-by-side with daily time series. It gives a concrete example and mentions the data scope, making it easy to distinguish from siblings like get_analytics_summary or query_timeseries.

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

Usage Guidelines3/5

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

It explains how to define segments and gives examples, but never states when to use this tool instead of query_timeseries, get_analytics_summary, or get_analytics_detail. The overlap with get_analytics_summary is mentioned for data coverage, not as an alternative, so the usage guidance is implied rather than explicit.

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

query_timeseriesQuery traffic over timeA
Read-onlyIdempotent
Inspect

Daily pageviews and unique visitors for one landing page, optionally split by a dimension (device type, country, referrer, page path, UTM source/medium/campaign) and filtered to one device or country.

Use when the user asks how traffic moved day by day, or which device, country, or source drove a change. For a one-call overview use get_analytics_summary; for period-over-period comparison use get_analytics_detail. Each row has date, dimensionValue ("all" when no dimension is set), pageviews, and visitors. Visitors are unique per day, so don't add them up across days. Data covers the last 3 months and excludes known bots and vulnerability scanners, the same as get_analytics_summary. Scans count toward the monthly analytics scan quota and overage billing where applicable. Dates must be valid calendar dates in YYYY-MM-DD format, and startDate must be on or before endDate. Dates are days in the workspace's time zone, UTC when the workspace has none set, and startDate and endDate are whole days in the zone used. Pass timeZone, an IANA name such as America/New_York, for days in another zone; it changes only this response, never the workspace's time zone. The result's timeZone field names the zone used, and timeZoneSource says where it came from (argument, workspace, or default). A row for today's date in that zone counts only the hours so far. When timeZonePending is set, the workspace is switching to that zone once its history is recomputed. Supported filters are device (mobile, desktop, tablet) and country (two-letter code such as JP or US).

Combine results with detect_trend to confirm trends.

Examples:

  • Basic traffic: query_timeseries(siteId, "2026-09-01", "2026-09-28")

  • By device: query_timeseries(siteId, "2026-09-01", "2026-09-28", dimension="device")

  • By UTM source: query_timeseries(siteId, "2026-09-01", "2026-09-28", dimension="utm_source")

  • Mobile only: query_timeseries(siteId, "2026-09-01", "2026-09-28", filters={device:"mobile"})

NameRequiredDescriptionDefault
limitNoMaximum rows to return. Defaults to 100, max 500.
siteIdYesThe ID of the page to query
endDateYesEnd date (YYYY-MM-DD)
filtersNoOptional filters to narrow results. Supported keys: device, country
timeZoneNoIANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.
dimensionNoOptional dimension to break down results by
startDateYesStart date (YYYY-MM-DD)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description layers on genuine behavioral context: 3-month data window, bot/scanner exclusion, scan-quota and overage billing, visitors being non-additive across days, partial rows for today, and timeZonePending transitions. These are exactly the constraints an agent cannot get from 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.

Conciseness4/5

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

Purpose and sibling routing are front-loaded, and the return-row shape and examples are well ordered. The timezone paragraph is long and packs several edge cases (timeZoneSource, timeZonePending, partial today) that could be tightened, but each sentence still carries information.

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

Completeness5/5

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

No output schema exists, and the description compensates fully by describing each returned row field (date, dimensionValue, pageviews, visitors), the non-additive visitors caveat, and the timeZone/timeZoneSource/timeZonePending response fields. An agent has everything needed to call and interpret the tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above baseline by enumerating device values (mobile, desktop, tablet) and country codes (JP, US) that the schema does not list, explaining the 'all' dimensionValue, and detailing whole-day/timezone semantics for startDate and endDate. The limit parameter is left entirely to the schema, which keeps it from a 5.

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

Purpose5/5

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

States a specific verb and resource (daily pageviews and unique visitors for one landing page) plus the exact optional dimensions and filters. It explicitly names the sibling tools it is not (get_analytics_summary, get_analytics_detail) and the distinction is clear without opening a schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use triggers ('how traffic moved day by day', 'which device, country, or source drove a change'), names the alternatives for overview and period-over-period comparison, and closes with four concrete invocation examples. Nothing about tool selection is left to inference.

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

remove_answer_check_promptsRemove AI answer check questionsA
DestructiveIdempotent
Inspect

Use this tool when the user wants to delete questions from their AI answer check (ChatGPT, Perplexity, Gemini, Google AI Overviews): 「この質問はもう聞かなくていい」「AI の回答チェックの質問を消して」, "stop checking this question", "delete these questions".

Deletes saved questions of the workspace's AI answer check, by id (get_answer_check_results' prompts) or by exact text. The results of every deleted question go too: its answers, whether they named the brand, the links they cited, and its history are no longer shown in the answer check's results and can't be brought back. Adding the same text again later starts a new question with no results. Checks already used aren't given back. Ask the user before deleting a question that has results.

  • Other saved questions stay as they are, with their results. Brand names and domains don't change.

  • An id or text that isn't a saved question deletes nothing (not_saved).

  • Two sites can save the same words: a text matching more than one deletes nothing (ambiguous_prompt). Send the id, or the host argument.

  • To change a question's wording: delete the old text here, then add the new text with update_answer_check_prompts.

  • expectedBrandId: with get_brand's id, a connection that now works on another workspace changes nothing (brand_mismatch). Returns changes (removed, kept) and the saved state, as get_answer_check_results does with no filter.

NameRequiredDescriptionDefault
hostNoOne of the workspace's sites, as get_brand's sites list it, such as 'www.sakura-cafe.com': only that site's questions are deleted or stay. Left out: the whole workspace's.
promptsYesSaved questions to delete, by id (get_answer_check_results' prompts) or by exact text; their results go with them
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the bar is lower. The description adds real value the annotations cannot: exactly what is destroyed (answers, brand-mention flags, cited links, history), that it is unrecoverable, that re-adding the same text starts with no results, and that checks already consumed aren't refunded. However, it does not mention required auth/permissions, rate limits, or batch-failure behavior (partial vs all-or-nothing when some prompts are invalid).

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

Conciseness4/5

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

Front-loaded with the trigger sentence, followed by a compact bullet list of edge cases; the Japanese examples earn their space by disambiguating intent. It is on the long side for a delete tool and a few clauses (e.g., the host bullet) repeat schema wording, keeping it shy of a 5.

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

Completeness4/5

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

No output schema exists, and the description covers it: it explains the return shape (removed/kept changes plus the saved state, like get_answer_check_results with no filter). Combined with idempotency and destructiveness annotations, the calling contract is clear; only auth/permission expectations are missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns +1 by tying parameters to outcome semantics: prompts by id (from get_answer_check_results' prompts) or exact text, host scoping, and expectedBrandId producing brand_mismatch on workspace switch. It also supplies error codes (not_saved, ambiguous_prompt, brand_mismatch) that are not in the schema, though several phrases (id-or-text, host description) largely restate the schema text.

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

Purpose5/5

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

States a specific verb (delete) and resource (saved questions of the workspace's AI answer check) immediately, and explicitly distinguishes itself from get_answer_check_results (source of ids) and update_answer_check_prompts (add/rename). An agent can route between the three siblings without opening schemas.

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

Usage Guidelines5/5

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

Front-loads a when-to-use trigger with multilingual example utterances, then gives concrete exclusions and alternatives: to change wording, delete here and re-add via update_answer_check_prompts; to disambiguate, send the id or host. It even adds a human-in-the-loop rule (ask before deleting a question with results).

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

remove_domainRemove custom domainA
Destructive
Inspect

Use this tool when the user wants to remove or disconnect a custom domain (独自ドメインを外す, ドメインの接続を解除, ホームページ・Webサイト・ランディングページのドメインをやめる) from Convika.

Removes one connected site (such as www.example.com) from this workspace. Every page URL on it stops opening (404) at once, and its HTTPS certificate is released; the pages themselves stay, at their paths on the workspace's {name}.convika.page site. Pages whose main URL was on it fall back to their convika.page URL as their main URL (some only from their next publish). Before calling it:

  • Call list_domain_routes and tell the user which URLs will stop opening, then get their explicit confirmation.

  • If a root domain (example.com) redirects to this www site, tell the user to delete the root's A record at their DNS company too. The result lists stoppedUrls. To stop only one path, use disable_domain_route instead.

NameRequiredDescriptionDefault
domainYesThe custom domain's id or hostname, such as www.example.com

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say destructive/openWorld/non-idempotent; the description goes well beyond that by spelling out exactly what breaks (every page URL 404s immediately, HTTPS cert released), what survives (pages remain at their {name}.convika.page paths), and the main-URL fallback behavior, including that some pages only update on next publish.

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

Conciseness4/5

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

Front-loaded trigger sentence, then effects, then a 'Before calling it' checklist, then the alternative — a well-structured progression. It is longer than strictly needed (the parenthetical Japanese trigger list and the repeated domain examples add bulk), but each block carries distinct information.

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

Completeness5/5

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

There is no output schema, and the description compensates by noting the result lists stoppedUrls. Combined with consequences, prerequisites, and the sibling alternative, an agent has everything needed to invoke this destructive tool safely.

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

Parameters3/5

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

Schema coverage is 100% and the single 'domain' parameter already documents that it accepts an id or hostname such as www.example.com. The description adds scope ('one connected site' from this workspace) but no new syntax or format guidance, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('remove or disconnect a custom domain ... from Convika'), scopes it to one connected site, and lists multilingual user phrasings that map to the intent. It also distinguishes itself from the sibling disable_domain_route by naming it explicitly.

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

Usage Guidelines5/5

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

Gives explicit preconditions (call list_domain_routes and surface the affected URLs, obtain explicit user confirmation, warn about the root domain's A record) plus a clear routing rule: use disable_domain_route to stop a single path instead. Nothing about when/when-not is left to inference.

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

rollback_siteRoll back pageA
Destructive
Inspect

Instantly revert a live landing page to a previous version.

Use this when the user wants to undo a recent change or restore an earlier version of their page.

  • Call get_site first to see available version numbers

  • Only affects the production (live) slot

  • Versions beyond the plan's retention limit are pruned and unavailable (Free: 10, Pro: 50, MAX: 200)

NameRequiredDescriptionDefault
siteIdYesThe ID of the page to roll back
versionNumberYesThe version number to roll back to

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false, and openWorld=true. The description adds meaningful context beyond annotations: instant effect, production-only scope, and plan-based version retention limits. It doesn't cover reversibility of the rollback or auth requirements, but the added value is substantial.

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

Conciseness5/5

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

Front-loads the action, then provides usage guidance and bulleted constraints. Every sentence earns its place; no redundancy or filler.

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

Completeness5/5

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

Given annotations already cover safety (destructive, openWorld) and schema covers parameters fully, the description completes the picture with when-to-use, prerequisites, and retention limits. No output schema means return values need not be explained, and nothing essential is missing.

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

Parameters4/5

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

Schema already documents siteId and versionNumber at 100% coverage. The description adds crucial meaning: versions beyond retention limits (Free: 10, Pro: 50, MAX: 200) are pruned and unavailable, directly informing the valid range and availability of versionNumber. This goes beyond schema constraints.

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

Purpose5/5

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

States a specific verb (revert/rollback) and resource (live landing page version), clearly distinguishing it from siblings like publish_site, save_page_content, or update_site. An agent can identify the tool's function immediately.

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

Usage Guidelines4/5

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

Explicitly says when to use it ('undo a recent change or restore an earlier version') and gives a prerequisite ('Call get_site first'). Also notes it only affects the production slot and lists retention limits. No explicit when-not or named alternatives beyond get_site, but the context is strong.

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

run_answer_checkRun AI answer checkAInspect

Use this tool when the user wants to ask the AIs now whether they mention or link to their brand (ホームページ, Webサイト, ランディングページ): 「AI に聞いてみて」「ChatGPT でうちの名前が出るか今すぐ確かめて」, "run the AI answer check", "check again now".

Asks the workspace's saved questions (update_answer_check_prompts) on ChatGPT, Perplexity, Gemini, and Google AI Overviews. One question on one AI is 1 check: a run of q questions on e AIs uses q × e checks, taken before anything is asked, first from the month's included checks (Pro 100, MAX 500, Free 0; Pro from a reverse trial or included with Made for you has none), then from packs the user bought on the dashboard, oldest first. Only a check whose answer comes back is used: one that errors or comes back empty (such as no AI Overview for the search) is given back.

  • promptIds: ids from get_answer_check_results' prompts; leave it out to ask every saved question. engines: some of chatgpt, perplexity, gemini, overview; leave it out for all four.

  • idempotencyKey: a new id (such as a UUID) for each run the user asks for. If a call times out or fails with no reply, call again with the same key: Convika returns the run it already started (repeated: true) and uses nothing more.

  • Before running, tell the user how many checks the run uses (q × e) and what get_answer_check_results' balance.left says is left; run when they agree.

  • Answers come in over a few minutes (up to about 12 per check); read them later with get_answer_check_results. A workspace has one run at a time: never call this again to wait for answers.

  • not_enough_answers: the run needs more checks than are left. Tell the user the numbers, and that packs are bought on the dashboard's AI & search screen, or ask fewer questions or AIs. run_in_progress: an earlier run is still asking; nothing was used; read its answers with get_answer_check_results and run again once running is 0. check_unavailable: Convika can't ask right now; nothing was used. no_brand / no_prompts: save them first with update_answer_check_prompts.

  • expectedBrandId: with get_brand's id, a connection that now works on another workspace asks nothing and uses no checks (brand_mismatch). Returns the run (answers, fromIncluded, fromPacks, all counted in checks; repeated when the key named an earlier run) and the balance left.

NameRequiredDescriptionDefault
enginesNoThe AIs to ask; leave out for all four
promptIdsNoSaved question ids to ask; leave out to ask all of them
idempotencyKeyNoA new id for this run, such as a UUID; send the same one again only to retry a call that got no reply
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, it discloses a lot: cost accounting (q × e checks taken up front from monthly quota, then purchased packs oldest first), refunds for errored or empty answers, a one-run-per-workspace concurrency limit, latency of up to ~12 minutes, and the meaning of each error code. It also explains idempotency-key retry semantics, which the annotations' idempotentHint=false would otherwise leave unclear. This is exactly the context that annotations cannot carry.

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

Conciseness3/5

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

The trigger phrases and cost rule are front-loaded well, but the paragraph is dense and over-long: billing, refunds, error codes, and idempotency all run together in one block. Some sentences duplicate the schema text ('leave it out for all four'), which does not earn its place.

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

Completeness5/5

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

There is no output schema, so the description must explain returns, and it does: the run object with answers, fromIncluded, fromPacks, repeated, plus the remaining balance. Error states and the pre-run confirmation requirement are all covered, so an agent can call this correctly without further inference.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds cross-tool provenance for promptIds (the ids from get_answer_check_results' prompts) and the brand_mismatch consequence for expectedBrandId. It loses a point because the engines and promptIds default wording largely restates the schema descriptions verbatim.

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

Purpose5/5

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

States a specific verb and resource: it asks the workspace's saved questions on ChatGPT, Perplexity, Gemini and Google AI Overviews. It is clearly distinguished from the sibling tools it could be confused with, get_answer_check_results (reads answers later) and update_answer_check_prompts (saves questions first).

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

Usage Guidelines5/5

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

It gives explicit trigger phrases, including the Japanese ones, and states when to call it versus when to read results later, and it warns against calling it again to wait for answers. It also names the prerequisite siblings: update_answer_check_prompts for saving questions, and get_answer_check_results for the prompts and balance.

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

save_page_contentSave page contentAInspect

Save a new version of a Convika landing page's HTML. ページ内容の保存・更新・デザイン変更。

Each call adds a new version. The live page and the current preview link don't change until you call create_preview (and publish_site, when the user asks), so call create_preview after saving for the user to review.

Version history: each plan keeps a limited number of saved versions (Free: 10, Pro: 50, MAX: 200; Enterprise: unlimited). When a save goes over that limit, the oldest saved version is deleted permanently and can't be restored with rollback_site. The live version and the version behind the current preview link are never deleted.

Workflow: create_site (if new) → save_page_content → create_preview. Use publish_site only after explicit user approval to go live. Adding a form to a new page: create_landing_page_preview → create_form → save_page_content with the form embed → create_preview.

Use "sections" to describe each in your HTML. Each section needs a "description" (what it does and why, at least 20 characters) and a "sequencePosition" (0-indexed, matching order). The "patterns" parameter is also accepted for backward compatibility.

HTML guidelines:

  • Complete HTML document (...) with Tailwind CSS v3

  • Include in :

  • Each section MUST be wrapped in a tag (for content tracking)

  • css parameter: only for styles Tailwind cannot express

  • js parameter: Pro plan and above only

  • If the page has cta_click goals (check with list_goals), add data-cta="primary" to the main CTA buttons/links for accurate conversion tracking

NameRequiredDescriptionDefault
jsNoJavaScript for interactive elements (Pro plan and above only)
cssNoCustom CSS for styles that cannot be expressed with Tailwind utilities
htmlYesComplete HTML document using Tailwind CSS v3 utility classes. Must include Tailwind CDN script in <head>. The page (html, css, and js together) can be up to 2 MB.
siteIdYesThe ID of the page to save content to
patternsNoPatterns used in this page. Accepted for backward compatibility — prefer sections instead.
sectionsNoSections in the page. Each describes a <section> in the HTML with its purpose, position, and optional layout geometry used for optimization and DCNv3 features.
changelogNoDescription of changes in this version
designOverridesNoOptional bounded design knob overrides. Supported keys: ctaEmphasis, visualDensity, contrastStrength, motionIntensity, cornerRoundness, shadowDepth, trustSignalDensity, proofProminence.
designProfileIdNoOptional design profile ID.
designRationaleNoShort explanation for why this design profile or override set was chosen.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say readOnly=false, idempotent=false, destructive=false; the description goes well beyond them by explaining that every call appends a version (why it is not idempotent), that plan quotas (Free 10 / Pro 50 / MAX 200 / Enterprise unlimited) cause the oldest version to be permanently deleted with no rollback, and that the live and preview versions are never pruned. This nuance actually reconciles the destructive=false hint rather than contradicting it, since the served page is never destroyed.

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

Conciseness4/5

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

Front-loaded with purpose and preview semantics, then organized under clear headers (Version history, Workflow, HTML guidelines). It is on the long side and carries some low-value ballast — the Japanese tagline 'ページ内容の保存・更新・デザイン変更。' and the niche form-page workflow — but every other line is actionable.

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

Completeness5/5

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

For a 10-parameter mutation tool with nested objects and no output schema, the description covers everything an agent needs: version quota and pruning consequences, why nothing is visible until create_preview, HTML document requirements (doctype, Tailwind CDN, <section> wrapping), and the data-cta tracking requirement for conversion goals. Nothing material is left unstated.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents js, css, sections, patterns, designOverrides, etc.; most of the description's parameter notes (css only for non-Tailwind styles, js Pro+, sections need description ≥20 chars and 0-indexed sequencePosition) repeat the schema verbatim. The only genuine addition is tying 'sections' to the actual <section> tags and the backward-compatibility preference for sections over patterns, which is marginal. Baseline 3 is appropriate.

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

Purpose5/5

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

Opens with a specific verb + resource + object: 'Save a new version of a Convika landing page's HTML.' It also immediately distinguishes itself from siblings by stating that the live page and preview link do not change until create_preview/publish_site are called, so an agent can separate this from create_preview, publish_site, and create_landing_page without opening any schema.

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

Usage Guidelines5/5

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

Gives an explicit ordering (create_site → save_page_content → create_preview), an explicit gate for the risky sibling ('Use publish_site only after explicit user approval to go live'), and a separate branch for form pages (create_landing_page_preview → create_form → save_page_content → create_preview). When-to-use and when-not-to-use are both spelled out.

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

set_goalsSet conversion goalsA
Idempotent
Inspect

Set conversion goals for a landing page. Goals define what counts as a "conversion" — the primary actions you want visitors to take. You can set multiple goals per page.

Conversion rate is calculated from unique visitors who completed at least one configured goal. Each goal is still tracked separately in analytics, and improvement suggestions adapt to goal types.

Examples:

  • User says "カフェの予約ページを作って" → goals: [{ goalType: "cta_click", label: "予約サイトへ" }]

  • User says "資料請求と LINE 登録ができるページ" → goals: [ { goalType: "form_submission", label: "資料請求フォーム" }, { goalType: "cta_click", label: "LINE登録" } ]

IMPORTANT: Always call this after create_site when the page purpose is clear. If the user mentions forms, inquiries, signups → include form_submission goal. If the user mentions external links, bookings, LINE, phone, EC store → include cta_click goal. Calling this replaces all existing goals for the page.

NameRequiredDescriptionDefault
goalsYesList of conversion goals (1-5)
siteIdYesThe ID of the page to set goals for

TDQS

A3.9/5.0
Behavior1/5

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

The annotations declare destructiveHint=false, but the description states 'Calling this replaces all existing goals for the page,' which is a destructive overwrite of existing goal configuration. This is a direct contradiction with the annotation, even though the description otherwise provides useful behavioral context about conversion calculation and tracking.

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

Conciseness4/5

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

The description is front-loaded with purpose and usage rules, then uses examples to clarify goal selection. It is somewhat long but well-structured, and the examples and replacement warning earn their place.

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

Completeness4/5

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

For a two-parameter mutation tool with a rich input schema and no output schema, the description covers purpose, prerequisites, goal-type selection, and replacement behavior. The main gap is the annotation contradiction and the absence of an explicit alternative such as list_goals for reading existing goals.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters and nested goal fields. The description adds value by giving concrete examples that map user utterances to goalType and label values, and by explaining when to choose form_submission versus cta_click.

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

Purpose5/5

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

States a specific verb and resource: set conversion goals for a landing page. It defines what a goal is and clarifies that multiple goals can be set per page, making the tool's purpose immediately clear.

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

Usage Guidelines5/5

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

Explicitly says to call this after create_site when the page purpose is clear, and gives concrete rules for when to include form_submission versus cta_click based on user intent. It also warns that calling it replaces all existing goals, which is critical usage context.

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

set_site_urlSet page URLA
Idempotent
Inspect

Assign a full URL to a Convika landing page, including custom-domain paths such as https://www.example.com/ or https://www.example.com/lp2.

Use this when the user asks to create, move, preview, or publish a page at a specific URL. Prefer this over setup_custom_domain when a path is included.
- A root URL such as https://example.com/lp2 is connected as https://www.example.com/lp2: www.example.com is the site, and example.com redirects to it (301, path kept) once the user adds the records in guidance.rootRedirect (A @ to Convika's IPv4, CNAME www). If example.com already shows another site, Convika connects only www and leaves example.com alone; guidance.rootRedirect says so. If the response has guidance.rootNotServed instead, example.com won't open the page: tell the user to share the www URL.
- If the site is new, Convika creates the custom-domain claim and returns the CNAME routing record plus TXT ownership record.
- If the site is already connected to this workspace, Convika only adds the path route. An active site needs no DNS work. A site still pending verification keeps the CNAME and TXT values from its first setup: the response repeats them, and the TXT value stays the same across calls.
- invalid_hostname means the site can't be used as a custom domain (for example, reserved names such as anything.example.com). Ask the user for a site on a domain they own. It is not a DNS delay and not a Convika-side fault.
- If another workspace has a pending claim, Convika can still start DNS control verification for this workspace; pending claims are not ownership.
- If another workspace actively manages the site, do not take over automatically. Explain the options: ask for an invite, use another domain, or explicitly start DNS control verification and activate handover.
- Path routing is exact: /lp2 and /lp2/ normalize to the same route, but /lp2/thanks is a different route.
- If guidance.existingSite is present, another site shows there now and connecting would replace that whole site. Tell the user before any DNS change, as the text says.
- After this tool succeeds, use create_preview; the preview response can use the assigned URL path.
NameRequiredDescriptionDefault
urlYesThe full URL to assign, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. Query strings and hashes are ignored.
siteIdYesThe ID of the page to assign the URL to
makePrimaryNoWhether this URL should become the page's canonical/primary URL. On a domain not connected yet, it becomes primary once the domain connects (route.mainOnConnect true, isPrimary false until then).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (non-read-only, idempotent, non-destructive); the description adds substantial undisclosed behavior: returned CNAME/TXT records for new sites, 301 root redirect semantics, path-level idempotency of already-connected sites, stable TXT values across calls, and multi-workspace claim/handover states. It also discloses a consequence the annotations do not (guidance.existingSite means connecting would replace a whole site) and instructs the agent to warn the user first.

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

Conciseness4/5

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

The first two sentences front-load what the tool does and when to prefer it, and the bullets are each tied to an actionable condition rather than filler. It is long (ten bullets) and a few edge cases (pending claim by another workspace) read as documentation detail rather than selection guidance, costing a point.

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

Completeness5/5

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

There is no output schema, and the description compensates by naming the response fields the agent must branch on (guidance.rootRedirect, guidance.rootNotServed, guidance.existingSite) and the follow-up tool. For a DNS-affecting mutation with cross-workspace edge cases, nothing needed to call or interpret it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so all three parameters are already documented, including makePrimary's deferred-primary behavior on unconnected domains. The description goes beyond the schema with route semantics — '/lp2' and '/lp2/' normalize to the same route but '/lp2/thanks' is distinct — which is meaningful invocation-relevant behavior rather than restatement.

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

Purpose5/5

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

Opens with a specific verb+resource: 'Assign a full URL to a Convika landing page, including custom-domain paths', with two concrete URL examples. It also names the sibling it should not be confused with (setup_custom_domain) and the condition that separates them, so the agent can route without opening schemas.

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

Usage Guidelines5/5

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

Explicit when-to-use ('when the user asks to create, move, preview, or publish a page at a specific URL'), an explicit alternative with a discriminator ('Prefer this over setup_custom_domain when a path is included'), and a follow-up step ('After this tool succeeds, use create_preview'). Branch-specific guidance is also given for error codes and blocked scenarios.

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

setup_custom_domainConnect custom domainA
Idempotent
Inspect

Connect the user's own domain (e.g. www.example.com, example.com, or landing.example.com) to a Convika landing page.

Use when the user wants their page accessible on their own domain instead of {subdomain}.convika.page (独自ドメイン, 自分のドメインでホームページ・ランディングページを公開). Returns the CNAME record for routing and TXT record for ownership verification. After DNS setup, SSL is automatically provisioned.

  • Available on all plans. Free: 1 custom domain, Pro/MAX: unlimited.

  • Standard flow: connect a www site first, then ask the user to add the returned CNAME and TXT records.

  • example.com and www.example.com connect the same pair: www.example.com is the site that serves the page, and example.com redirects to it (301, path and query kept) once its A record points at Convika. guidance.rootRedirect lists the records to add (A @ to Convika's IPv4, CNAME www, TXT) and any to delete. The pair counts as one domain. If example.com already shows another site, Convika connects only www and leaves example.com alone (guidance.rootRedirect says so). If the response has guidance.rootNotServed instead, example.com won't open the page: tell the user to share the www URL. Do not start a DNS-provider discussion during initial setup.

  • If the tool returns domain_provider_error, tell the user this is a Convika-side provider provisioning failure. Do not tell the user to wait for DNS propagation or change DNS records until Convika fixes the provider error.

  • If the tool returns invalid_hostname, the site itself can't be used (for example, reserved names such as anything.example.com). Ask the user for a site on a domain they own and call this tool again with it.

  • A value with a path (www.example.com/lp) returns path_not_supported: call set_site_url with the full URL instead.

  • If guidance.existingSite is present, another site shows there now and connecting would replace that whole site. Tell the user before any DNS change, as the text says.

  • Call get_domain_status to check verification progress after DNS setup

NameRequiredDescriptionDefault
siteIdYesThe ID of the page to add a custom domain to
hostnameYesThe custom domain hostname (e.g. 'www.example.com' or 'landing.example.com'). A root such as 'example.com' connects 'www.example.com'.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say non-readOnly, idempotent, non-destructive; the description adds the substantive behavior: it returns CNAME + TXT records, SSL is auto-provisioned afterward, plan quotas (Free 1, Pro/MAX unlimited), the www/apex pairing and 301 redirect semantics, and named failure modes (domain_provider_error, invalid_hostname, path_not_supported, guidance.existingSite). One mild tension: it warns that connecting may 'replace that whole site' while destructiveHint=false — but this is domain-routing replacement surfaced through guidance.existingSite with a required user warning, not data deletion, so it does not rise to a contradiction.

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

Conciseness4/5

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

Front-loaded with purpose and return values, then organized as scannable bullets keyed to error codes and guidance fields. It is long for a 2-parameter tool and some clauses (redirect path/query preservation, 'as the text says') are detail-heavy, but nearly every line maps to a real decision the agent must make.

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

Completeness5/5

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

There is no output schema, and the description compensates fully: it enumerates the returned records (CNAME, TXT) and the guidance fields (rootRedirect, rootNotServed, existingSite) with instructions for each. Combined with error-code handling and the verification follow-up, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by explaining that a root such as example.com connects www.example.com and that the pair counts as one domain, plus the path_not_supported → set_site_url rule. It does not restate siteId semantics, but the schema already covers that adequately.

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

Purpose5/5

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

States a specific verb and resource ('Connect the user's own domain ... to a Convika landing page') and immediately contrasts with the default {subdomain}.convika.page hosting. It also names the neighboring tools it is not (set_site_url for path-bearing values, get_domain_status for verification), so an agent can route correctly without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('use when the user wants their page on their own domain'), when-not/alternative routing ('a value with a path returns path_not_supported: call set_site_url instead'), and a follow-up step ('call get_domain_status after DNS setup'). It even includes negative guidance ('do not start a DNS-provider discussion during initial setup'), which is rare and useful.

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

start_domain_control_verificationStart domain ownership checkA
Idempotent
Inspect

Start explicit DNS control verification for a custom-domain URL that is managed or pending in another Convika workspace.

Use this only after telling the user that:
- Existing URLs on the site will remain served if handover is later activated.
- Existing page data, forms, analytics, and history will not move to this workspace.
- New URL creation on the site requires explicit handover activation after DNS TXT verification.
This tool returns a TXT record. The user must add that TXT record at their DNS provider.
Only for sites another workspace holds — set_site_url returns domain_control_verification_required for those. For a site no other workspace holds, or one this workspace already has, this tool starts nothing and returns domain_control_verification_not_needed; use set_site_url (full URL) or setup_custom_domain (hostname) instead.
NameRequiredDescriptionDefault
urlYesThe full custom-domain URL, such as https://www.example.com/lp2
siteIdYesThe page that should receive the URL after handover activation

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial context beyond the annotations: it explains that the tool returns a TXT record, that the user must add it at their DNS provider, and that new URL creation requires explicit handover activation after verification. It also discloses downstream consequences and the specific return statuses domain_control_verification_required and domain_control_verification_not_needed, which an agent could not infer from the schema or annotations alone.

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

Conciseness5/5

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

The purpose is front-loaded, and the following bullet list is used to present user-facing prerequisites that are directly relevant to correct invocation. Despite covering several constraints, every sentence earns its place by clarifying when the tool applies, what it returns, or which alternative to use.

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

Completeness5/5

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

For a complex domain-handover verification operation with no output schema, the description supplies the necessary preconditions, return behavior, user action required, inapplicable cases, and alternative tools. Combined with annotations covering safety and idempotency, nothing essential for correct invocation appears to be missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both siteId and url are already documented in the input schema. The description contextualizes the URL as a custom-domain URL managed or pending in another workspace, but it does not add syntax, format, or validation details beyond the schema baseline.

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

Purpose5/5

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

The description states a specific verb and resource: start explicit DNS control verification for a custom-domain URL managed or pending in another Convika workspace. It clearly distinguishes the operation from siblings such as set_site_url, setup_custom_domain, and activate_domain_handover by naming the exact scenario it serves.

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

Usage Guidelines5/5

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

It gives explicit when-to-use constraints, including the prerequisite that the user must first be told about URL continuity, data non-migration, and handover activation requirements. It also names when not to use it, stating that for sites no other workspace holds or that this workspace already has, the tool returns domain_control_verification_not_needed and directs the agent to set_site_url or setup_custom_domain instead.

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

unpublish_siteUnpublish pageA
Destructive
Inspect

Take a live landing page offline. The page will no longer be publicly accessible.

Use when the user wants to temporarily or permanently remove a page from the internet. All content and versions are preserved — call publish_site anytime to bring it back online.

NameRequiredDescriptionDefault
siteIdYesThe ID of the page to unpublish

TDQS

A4.6/5.0
Behavior5/5

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

The description adds critical behavioral context beyond the annotations. Specifically, it states that 'All content and versions are preserved,' which mitigates the perceived risk of the destructiveHint=true annotation, and confirms the action is reversible via 'publish_site.'

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

Conciseness4/5

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

The description is well-structured, front-loading the primary function and consequence. The second paragraph, however, is slightly verbose, though necessary to convey the critical usage context and reversibility.

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

Completeness5/5

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

The tool is a destructive mutation that requires knowing the impact (offline status) and the recovery method. The description covers all these necessary pieces of information, making it highly complete.

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

Parameters3/5

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

With 100% schema coverage, the schema defines the parameter fully. The description does not need to add semantic meaning to the single required parameter, landing on the baseline score.

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

Purpose5/5

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

The description clearly defines the action ('Take a live landing page offline') and the resulting state ('no longer be publicly accessible'). It establishes a clear scope for the tool.

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

Usage Guidelines5/5

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

It provides explicit guidelines on when to use the tool (temporarily or permanently removing a page) and implies the correct alternative workflow by referencing 'publish_site' to reverse the action.

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

update_answer_check_promptsSet AI answer check questionsA
Idempotent
Inspect

Use this tool when the user wants to set up checking whether ChatGPT, Perplexity, Gemini, or Google AI Overviews mention their brand or link to their site (ホームページ, Webサイト, ランディングページ): 「ChatGPT でうちの名前が出るか調べたい」「AI の回答に載っているか確かめたい」, "track whether AI answers recommend us".

Saves the workspace's AI answer check: its questions, the brand names to look for in the answers, and its domains outside Convika (外部サイト) to look for in the cited links. Saving asks nothing: run_answer_check asks the saved questions when the user wants. Questions kept per plan: Free: 10, Pro: 50, MAX: 200. Each question up to 200 characters, about the user's own brand or market (what their customers would ask an AI), with no URLs; harmful questions are refused. Up to 3 brand names (other spellings, such as the Japanese name) and 3 domains: the workspace's external sites (外部サイト), such as a store on another service. Every site the workspace's pages are served on (their convika.page and older convika.com URLs, and its custom domains) counts as its own without being saved. convika.page, convika.com, and their URLs are refused (shared_domain), since every Convika page uses them.

  • prompts adds questions and changes saved ones: a question with a saved one's text changes that one (its target page), and any other text is a new question at the end. Questions left out stay as they are, with their results, so prompts holds only the questions to add or change. Convika reads the whole saved list first and merges.

  • This tool deletes nothing. remove_answer_check_prompts deletes saved questions, with their results. A question's wording changes by removing the old text there and adding the new one here, which starts with no results.

  • brands and domains, when given, replace the saved ones; leave them out to keep them.

  • Target pages: each question can point at the page meant to answer it. Give {text, targetPath} with the page's path, such as "/guides/how-to-choose" (its full URL when different pages use that path on two of the workspace's sites), or {text, targetPageId} with its siteId. Convika finds a path among get_brand's pages. {text, targetPageId: null} clears a question's target page. A question given as text alone keeps the page it already has, and a new one that matches a saved suggestion takes the page it was suggested from.

  • A targetPath with no page yet saves its question with no target page and comes back in unresolvedTargets. Once a page is at that path (create_pages, or create_page for one), sending that question again with its targetPath links it. A targetPath that names no single page of the workspace saves nothing (invalid_target).

  • A run needs at least one brand name.

  • host: to work on one site of a workspace with several, name it as get_brand's sites list it. Convika then reads and merges that site's questions alone, a path in targetPath is a page of that site, and a page on another site is refused (unknown_page). The brand names given apply to that site, and the other sites keep theirs. A site this workspace doesn't have saves nothing (unknown_site). Left out, the call works on the whole workspace.

  • expectedBrandId: with get_brand's id, a connection that now works on another workspace changes nothing (brand_mismatch). Returns changes (added, updated, removed, kept) and the saved state, as get_answer_check_results does with no filter: the first questions that fit in about 6,000 tokens.

NameRequiredDescriptionDefault
hostNoOne of the workspace's sites, as get_brand's sites list it, such as 'www.sakura-cafe.com': the call works on that site's questions and brand names alone. Left out: the whole workspace.
brandsNoBrand names to look for in the answers, such as ['Sakura Cafe', 'さくらカフェ']
removeNoNo longer used: deleting questions moved to remove_answer_check_prompts. A call with remove saves nothing.
domainsNoThe workspace's external sites (外部サイト), such as ['shop.sakura-cafe.com']; subdomains count too. Its Convika sites count without being listed.
promptsNoOnly the questions to add or change: text such as 'best landing page builder for a café', or {text, targetPath} to point a question at its page. Saved questions left out stay.
expectedBrandIdNoThe workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavior: prompts are merged rather than replacing the saved list, brands and domains replace when provided, plan limits and character limits apply, harmful questions are refused, Convika domains are refused as shared_domain, and target-path errors surface as unresolvedTargets or invalid_target. It also explains host scope, expectedBrandId mismatch behavior, and what the return payload contains.

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

Conciseness4/5

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

The description is front-loaded with the user intent and then organizes details into useful bullets, but it is quite long and dense for a tool description. The length is largely justified by the complexity of merge, target-page, host, and error semantics, though the lack of headings or tighter grouping makes it slightly harder to scan than an ideal 5 would be.

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

Completeness5/5

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

For a complex mutation tool with no output schema, the description is complete enough to invoke correctly: it covers merge behavior, deletion boundaries, limits, refusals, target-page resolution, host scoping, expectedBrandId, and the returned changes and saved state. An agent has the context needed to avoid the main failure modes.

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

Parameters5/5

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

Although schema coverage is already 100%, the description adds substantial meaning beyond the schema: it explains how prompts merge with existing questions, how targetPath and targetPageId resolve or clear targets, when unresolvedTargets occurs, how host scopes the operation to one site, and why expectedBrandId prevents cross-workspace changes. These are behavioral parameter semantics that the schema alone does not fully convey.

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

Purpose5/5

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

The description opens with a specific verb-and-resource purpose: setting up AI answer checks for whether ChatGPT, Perplexity, Gemini, or Google AI Overviews mention the user's brand or link to their site. It also names the related siblings run_answer_check, remove_answer_check_prompts, and get_answer_check_results, so an agent can distinguish this tool from its alternatives.

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

Usage Guidelines5/5

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

It explicitly says when to use this tool versus related tools: saving asks nothing and run_answer_check asks the saved questions later, while this tool deletes nothing and remove_answer_check_prompts handles deletion. It also gives concrete user-intent examples in both English and Japanese, leaving little ambiguity about selection.

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

update_domain_settingsUpdate custom domain settingsA
Idempotent
Inspect

Use this tool when the user wants to stop or allow AI bots on their custom domain (独自ドメイン), such as "ChatGPT に読ませたくない", "AI の学習に使わせない", or "allow Perplexity again".

Turns a custom domain's AI-bot switches on or off, for all of this workspace's pages on that domain. Convika writes the change into the domain's robots.txt within about a minute; nothing on the pages changes. Each bot re-reads robots.txt on its own schedule (OpenAI says about 24 hours), so don't promise the user an immediate stop.

  • allowAiAnswerBots: OAI-SearchBot, Claude-SearchBot, PerplexityBot, DuckAssistBot, ChatGPT-User, Claude-User, Perplexity-User. Off, AI search and answers stop reading the site, so it may stop appearing in their answers.

  • allowAiTrainingBots: GPTBot, ClaudeBot, CCBot, Bytespider, Google-Extended, Applebot-Extended. Off asks them not to use the pages for training. Google-Extended doesn't affect Google Search. Tell the user, before and after:

  • The fetchers that open a page because a person asked (ChatGPT-User, Claude-User, Perplexity-User) may ignore robots.txt.

  • Googlebot and Bingbot can't be switched off: Google's AI Overviews read pages as Googlebot. To keep a page out of search results, publish it as a Private link (Pro) on the dashboard (「限定公開」 in Japanese); Free pages are public.

  • robots.txt is a request that well-behaved bots follow, not a block. Applies only to this workspace's pages on the domain. Free and paid plans alike. Call get_domain first if you don't know the domain's id or hostname. Change it only when the user asks.

NameRequiredDescriptionDefault
domainYesThe domain's id or hostname, such as www.example.com
allowAiAnswerBotsNotrue allows AI search and answer bots, false disallows them in robots.txt
allowAiTrainingBotsNotrue allows AI training bots, false disallows them in robots.txt

TDQS

A5/5.0
Behavior5/5

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

The description adds substantial context beyond the annotations: Convika writes robots.txt within about a minute, pages themselves do not change, bots re-read on their own schedules (OpenAI about 24 hours), and users should not be promised an immediate stop. It also explains which bots are affected, caveats about fetchers and Googlebot/Bingbot, and that robots.txt is a request rather than a block.

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

Conciseness5/5

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

The description is long but well structured: it front-loads the usage scenario, then explains the behavioral effect, then gives bot-specific details and user-facing warnings in bullets. Given the operational caveats and user communication requirements, every section serves a purpose.

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

Completeness5/5

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

For a mutation tool with no output schema, the description covers what is modified, timing, propagation, affected bots, limitations, prerequisites, and user messaging. An agent has enough information to invoke it correctly and set appropriate expectations.

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

Parameters5/5

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

Although the schema coverage is already 100%, the description meaningfully expands the boolean parameters by naming the exact bots controlled by allowAiAnswerBots and allowAiTrainingBots and explaining the consequences of turning them off. It also clarifies that the domain parameter applies only to this workspace's pages on that domain.

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

Purpose5/5

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

The description states a specific verb and resource: turning a custom domain's AI-bot switches on or off in robots.txt. It clearly distinguishes this mutation tool from read-oriented siblings like get_domain and get_ai_access by explaining exactly what it changes and what it does not change.

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

Usage Guidelines5/5

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

It explicitly says when to use the tool, including example user intents in English and Japanese, and states that get_domain should be called first if the domain id or hostname is unknown. It also includes a clear restriction: change it only when the user asks.

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

update_siteUpdate page settingsA
Idempotent
Inspect

Update a Convika page's display name or language setting. The subdomain cannot be changed after creation.

Use this when the user wants to rename a page or switch its locale (ja/en).

NameRequiredDescriptionDefault
nameNoNew display name for the page
localeNoNew language for the page content ('ja' or 'en')
siteIdYesThe ID of the page to update

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare it as a non-readonly, idempotent, non-destructive mutation, so the safety profile is covered. The description adds one genuinely useful constraint (subdomain is immutable after creation) but says nothing about permissions, failure modes, or whether omitted fields are left untouched.

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

Conciseness5/5

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

Two tight sentences: the capability and its constraint come first, the when-to-use trigger second. Every clause carries information and nothing is repeated from the schema.

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

Completeness4/5

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

For a small 3-parameter mutation with complete annotations and no output schema, the description covers scope, editable fields, and the key immutability constraint. Only return behavior and any permission requirements remain unstated, which is acceptable here.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter (siteId, name, locale) is already documented in the schema with enums and length bounds. The description only restates which fields are editable, adding no format or validation detail beyond the schema.

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

Purpose4/5

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

States a concrete verb (update) plus the exact editable fields (display name, language), and adds the negative scope that the subdomain cannot be changed. It doesn't explicitly contrast with close siblings like update_domain_settings or set_site_url, so it stops just short of full differentiation.

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

Usage Guidelines4/5

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

Gives an explicit when-to-use clause: renaming a page or switching its locale (ja/en). It also implicitly rules out subdomain changes, but never names an alternative tool or excludes any other scenario, so no 5.

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

Tool Schema Changelog

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

  1. 1 tool update
    • Changedset_site_url1 field changed
      • changedInput schema / properties / makePrimary / description
        Previous value: -"Whether this URL should become the page's canonical/primary URL."New value: +"Whether this URL should become the page's canonical/primary URL. On a domain not connected yet, it becomes primary once the domain connects (route.mainOnConnect true, isPrimary false until then)."
  2. 5 tool updates
    • Addedget_next_actions
    • Addedget_site_overview
    • Changedlist_pages1 field changed
      • addedOutput schema / properties / pages / items / properties / access
        Added value: +{
        +  "enum": [
        +    "public",
        +    "password",
        +    "private_link"
        +  ],
        +  "type": "string"
        +}
    • Changedremove_answer_check_prompts1 field changed
      • addedInput schema / properties / host
        Added value: +{
        +  "description": "One of the workspace's sites, as get_brand's sites list it, such as 'www.sakura-cafe.com': only that site's questions are deleted or stay. Left out: the whole workspace's.",
        +  "maxLength": 253,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedupdate_answer_check_prompts1 field changed
      • addedInput schema / properties / host
        Added value: +{
        +  "description": "One of the workspace's sites, as get_brand's sites list it, such as 'www.sakura-cafe.com': the call works on that site's questions and brand names alone. Left out: the whole workspace.",
        +  "maxLength": 253,
        +  "minLength": 1,
        +  "type": "string"
        +}
  3. 39 tool updates
    • Changedanalyze_site_performance1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to analyze"New value: +"The ID of the page to analyze"
    • Changedanalyze_source_quality1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to analyze"New value: +"The ID of the page to analyze"
    • Changedcreate_claim_code1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the landing page to bind to the claim link. Must be a site on your account."New value: +"The ID of the landing page to bind to the claim link. Must be a page on your account."
    • Changedcreate_form1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to create the form for"New value: +"The ID of the page to create the form for"
    • Changedcreate_landing_page9 fields changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
      • changedInput schema / properties / locale / description
        Previous value: -"Language for the site content. Defaults to 'en' (English)"New value: +"Language for the page content. Defaults to 'en' (English)"
      • changedInput schema / properties / name / description
        Previous value: -"Display name for the site (e.g. 'Spring Campaign 2026')"New value: +"Display name for the page (e.g. 'Spring Campaign 2026')"
      • changedInput schema / properties / path / description
        Previous value: -"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."New value: +"The page's path on the workspace's site, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."
      • changedInput schema / properties / primaryOffer / description
        Previous value: -"The main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the site; get_site returns it."New value: +"The main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the page; get_site returns it."
      • changedInput schema / properties / productSummary / description
        Previous value: -"What the page promotes, in one or two sentences. Saved on the site; get_site returns it."New value: +"What the page promotes, in one or two sentences. Saved on the page; get_site returns it."
      • changedInput schema / properties / subdomain / description
        Previous value: -"Only for the workspace's first page, while get_brand has no hostLabel: it names the brand's address, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that address: give them path instead. Never put a requested path such as /lp2 here."New value: +"Only for the workspace's first page, while get_brand has no hostLabel: it names the workspace's site, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that site: give them path instead. Never put a requested path such as /lp2 here."
      • changedInput schema / properties / targetAudience / description
        Previous value: -"Who the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the site; get_site returns it."New value: +"Who the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the page; get_site returns it."
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating it. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the page after creating it. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."
    • Changedcreate_landing_page_preview8 fields changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
      • changedInput schema / properties / locale / description
        Previous value: -"Language for the site content."New value: +"Language for the page content."
      • changedInput schema / properties / name / description
        Previous value: -"Display name for the site"New value: +"Display name for the page"
      • changedInput schema / properties / path / description
        Previous value: -"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."New value: +"The page's path on the workspace's site, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."
      • changedInput schema / properties / primaryOffer / description
        Previous value: -"The main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the site; get_site returns it."New value: +"The main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the page; get_site returns it."
      • changedInput schema / properties / productSummary / description
        Previous value: -"What the page promotes, in one or two sentences. Saved on the site; get_site returns it."New value: +"What the page promotes, in one or two sentences. Saved on the page; get_site returns it."
      • changedInput schema / properties / subdomain / description
        Previous value: -"Only for the workspace's first page, while get_brand has no hostLabel: it names the brand's address, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that address: give them path instead. Never put a requested path such as /lp2 here."New value: +"Only for the workspace's first page, while get_brand has no hostLabel: it names the workspace's site, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that site: give them path instead. Never put a requested path such as /lp2 here."
      • changedInput schema / properties / targetAudience / description
        Previous value: -"Who the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the site; get_site returns it."New value: +"Who the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the page; get_site returns it."
    • Changedcreate_page1 field changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
    • Changedcreate_pages1 field changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
    • Changedcreate_preview1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to preview"New value: +"The ID of the page to preview"
    • Changedcreate_site9 fields changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
      • changedInput schema / properties / locale / description
        Previous value: -"Language for the site content. Defaults to 'en' (English)"New value: +"Language for the page content. Defaults to 'en' (English)"
      • changedInput schema / properties / name / description
        Previous value: -"Display name for the site (e.g. 'Spring Campaign 2026')"New value: +"Display name for the page (e.g. 'Spring Campaign 2026')"
      • changedInput schema / properties / path / description
        Previous value: -"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."New value: +"The page's path on the workspace's site, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."
      • changedInput schema / properties / primaryOffer / description
        Previous value: -"The main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the site; get_site returns it."New value: +"The main offer or CTA promise, such as a free trial, demo, consultation, or purchase. Saved on the page; get_site returns it."
      • changedInput schema / properties / productSummary / description
        Previous value: -"What the page promotes, in one or two sentences. Saved on the site; get_site returns it."New value: +"What the page promotes, in one or two sentences. Saved on the page; get_site returns it."
      • changedInput schema / properties / subdomain / description
        Previous value: -"Only for the workspace's first page, while get_brand has no hostLabel: it names the brand's address, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that address: give them path instead. Never put a requested path such as /lp2 here."New value: +"Only for the workspace's first page, while get_brand has no hostLabel: it names the workspace's site, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that site: give them path instead. Never put a requested path such as /lp2 here."
      • changedInput schema / properties / targetAudience / description
        Previous value: -"Who the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the site; get_site returns it."New value: +"Who the page is for, in one sentence (e.g. 'office workers near Shibuya station'). Saved on the page; get_site returns it."
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating it. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the page after creating it. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."
    • Changedexport_form_submissions1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID that the form belongs to"New value: +"The ID of the page that the form belongs to"
    • Changedget_ai_access1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to read AI access for"New value: +"The ID of the page to read AI access for"
    • Changedget_analytics_detail1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to get detailed analytics for"New value: +"The ID of the page to get detailed analytics for"
    • Changedget_analytics_summary1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to get analytics for"New value: +"The ID of the page to get analytics for"
    • Changedget_domain_status1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to check domain status for"New value: +"The ID of the page to check domain status for"
    • Changedget_form_submissions1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID that the form belongs to"New value: +"The ID of the page that the form belongs to"
    • Changedget_page_structure1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID"New value: +"The ID of the page"
    • Changedget_search_performance1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to read Google Search performance for"New value: +"The ID of the page to read Google Search performance for"
    • Changedget_site1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to retrieve"New value: +"The ID of the page to retrieve"
    • Changedlist_goals1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID to list goals for"New value: +"The ID of the page to list goals for"
    • Changedlist_pages1 field changed
      • changedInput schema / properties / host / description
        Previous value: -"One of the brand's sites, such as 'www.example.com'; leave out for all"New value: +"One of the workspace's sites, such as 'www.example.com'; leave out for all"
    • Changedlist_sites1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of sites to return"New value: +"Maximum number of pages to return"
    • Changedmove_page1 field changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
    • Changedpublish_pages1 field changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
    • Changedpublish_site1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to publish"New value: +"The ID of the page to publish"
    • Changedquery_cta_performance1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID"New value: +"The ID of the page"
    • Changedquery_segments1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID"New value: +"The ID of the page"
    • Changedquery_timeseries1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID to query"New value: +"The ID of the page to query"
    • Changedremove_answer_check_prompts1 field changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
    • Changedrollback_site1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to rollback"New value: +"The ID of the page to roll back"
    • Changedrun_answer_check1 field changed
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
    • Changedsave_page_content1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to save content to"New value: +"The ID of the page to save content to"
    • Changedset_goals1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site ID to set goals for"New value: +"The ID of the page to set goals for"
    • Changedset_site_url2 fields changed
      • changedInput schema / properties / makePrimary / description
        Previous value: -"Whether this URL should become the site's canonical/primary URL."New value: +"Whether this URL should become the page's canonical/primary URL."
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to assign the URL to"New value: +"The ID of the page to assign the URL to"
    • Changedsetup_custom_domain1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to add a custom domain to"New value: +"The ID of the page to add a custom domain to"
    • Changedstart_domain_control_verification1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The site that should receive the URL after handover activation"New value: +"The page that should receive the URL after handover activation"
    • Changedunpublish_site1 field changed
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to unpublish"New value: +"The ID of the page to unpublish"
    • Changedupdate_answer_check_prompts3 fields changed
      • changedInput schema / properties / domains / description
        Previous value: -"The brand's addresses outside Convika (外部サイト), such as ['shop.sakura-cafe.com']; subdomains count too. Its Convika hosts count without being listed."New value: +"The workspace's external sites (外部サイト), such as ['shop.sakura-cafe.com']; subdomains count too. Its Convika sites count without being listed."
      • changedInput schema / properties / expectedBrandId / description
        Previous value: -"The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."New value: +"The workspace's id from get_brand. When the connection now works on another workspace (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch."
      • changedInput schema / properties / prompts / items / anyOf
        Previous value: -[
        -  {
        -    "maxLength": 200,
        -    "type": "string"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "targetPageId": {
        -        "anyOf": [
        -          {
        -            "maxLength": 100,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "That page's siteId instead of its path; null clears the target page"
        -      },
        -      "targetPath": {
        -        "description": "The path of the brand's page meant to answer it, such as '/guides/how-to-choose', or that page's full URL",
        -        "maxLength": 300,
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "The question",
        -        "maxLength": 200,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "text"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 200,
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "targetPageId": {
        +        "anyOf": [
        +          {
        +            "maxLength": 100,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "That page's siteId instead of its path; null clears the target page"
        +      },
        +      "targetPath": {
        +        "description": "The path of the workspace's page meant to answer it, such as '/guides/how-to-choose', or that page's full URL",
        +        "maxLength": 300,
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "The question",
        +        "maxLength": 200,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "text"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedupdate_site3 fields changed
      • changedInput schema / properties / locale / description
        Previous value: -"New language for the site content ('ja' or 'en')"New value: +"New language for the page content ('ja' or 'en')"
      • changedInput schema / properties / name / description
        Previous value: -"New display name for the site"New value: +"New display name for the page"
      • changedInput schema / properties / siteId / description
        Previous value: -"The ID of the site to update"New value: +"The ID of the page to update"
  4. 5 tool updates
    • Changedcreate_landing_page1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. Leave it out for a free path made from the name (the first page sits at /). Not together with url."New value: +"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."
    • Changedcreate_landing_page_preview1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. Leave it out for a free path made from the name (the first page sits at /). Not together with url."New value: +"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."
    • Changedcreate_site1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. Leave it out for a free path made from the name (the first page sits at /). Not together with url."New value: +"The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. For a page after the first, write one: 1 to 3 English words that say what the page is, even when the page is in Japanese (料金表 → /pricing). Left out, Convika makes a free path from the name (the first page sits at /). Not together with url."
    • Addedremove_answer_check_prompts
    • Changedupdate_answer_check_prompts4 fields changed
      • changedInput schema / properties / remove / description
        Previous value: -"Saved questions to delete, by id or by text; their results go with them"New value: +"No longer used: deleting questions moved to remove_answer_check_prompts. A call with remove saves nothing."
      • removedInput schema / properties / remove / items / minLength
        Removed value: -1
      • removedInput schema / properties / remove / maxItems
        Removed value: -200
      • removedInput schema / properties / remove / minItems
        Removed value: -1
  5. 12 tool updates
    • Changedcreate_landing_page5 fields changed
      • addedInput schema / properties / expectedBrandId
        Added value: +{
        +  "description": "The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. Leave it out for a free path made from the name (the first page sits at /). Not together with url.",
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • changedInput schema / properties / subdomain / description
        Previous value: -"Managed Convika fallback subdomain. Do not use this as a replacement for a user-requested custom URL path. Lowercase alphanumeric and hyphens only."New value: +"Only for the workspace's first page, while get_brand has no hostLabel: it names the brand's address, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that address: give them path instead. Never put a requested path such as /lp2 here."
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating it. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."
      • changedInput schema / required
        Previous value: -[
        -  "name",
        -  "subdomain"
        -]New value: +[
        +  "name"
        +]
    • Changedcreate_landing_page_preview4 fields changed
      • addedInput schema / properties / expectedBrandId
        Added value: +{
        +  "description": "The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. Leave it out for a free path made from the name (the first page sits at /). Not together with url.",
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • changedInput schema / properties / subdomain / description
        Previous value: -"Managed Convika fallback subdomain. Do not replace a requested path with this."New value: +"Only for the workspace's first page, while get_brand has no hostLabel: it names the brand's address, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that address: give them path instead. Never put a requested path such as /lp2 here."
      • changedInput schema / required
        Previous value: -[
        -  "name",
        -  "subdomain",
        -  "html"
        -]New value: +[
        +  "name",
        +  "html"
        +]
    • Addedcreate_page
    • Addedcreate_pages
    • Changedcreate_site5 fields changed
      • addedInput schema / properties / expectedBrandId
        Added value: +{
        +  "description": "The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "The page's path on the brand's address, such as '/guides/how-to-choose' or '/menu': lowercase letters, numbers, and hyphens between slashes. Leave it out for a free path made from the name (the first page sits at /). Not together with url.",
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • changedInput schema / properties / subdomain / description
        Previous value: -"Managed Convika fallback subdomain. Do not use this as a replacement for a user-requested custom URL path. Lowercase alphanumeric and hyphens only."New value: +"Only for the workspace's first page, while get_brand has no hostLabel: it names the brand's address, <subdomain>.convika.page, and this page sits at /. Lowercase letters, numbers, and hyphens. Later pages share that address: give them path instead. Never put a requested path such as /lp2 here."
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating it. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."
      • changedInput schema / required
        Previous value: -[
        -  "name",
        -  "subdomain"
        -]New value: +[
        +  "name"
        +]
    • Changedget_answer_check_results3 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "resultsShown.nextCursor from the last call, for the next questions",
        +  "maxLength": 200,
        +  "type": "string"
        +}
      • addedInput schema / properties / promptIds
        Added value: +{
        +  "description": "Question ids to show; leave out for all",
        +  "items": {
        +    "maxLength": 64,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 200,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / targetPageId
        Added value: +{
        +  "description": "Show only the questions that point at this page (its siteId)",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Addedget_brand
    • Addedlist_pages
    • Addedmove_page
    • Addedpublish_pages
    • Changedrun_answer_check1 field changed
      • addedInput schema / properties / expectedBrandId
        Added value: +{
        +  "description": "The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedupdate_answer_check_prompts7 fields changed
      • changedInput schema / properties / domains / description
        Previous value: -"The workspace's own domains, such as ['sakura-cafe.com']; subdomains count too"New value: +"The brand's addresses outside Convika (外部サイト), such as ['shop.sakura-cafe.com']; subdomains count too. Its Convika hosts count without being listed."
      • addedInput schema / properties / expectedBrandId
        Added value: +{
        +  "description": "The brand's id from get_brand. When the connection now works on another brand (the dashboard's active workspace was switched), the call changes nothing and answers brand_mismatch.",
        +  "maxLength": 100,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / prompts / description
        Previous value: -"The whole list of questions, in order, such as 'best landing page builder for a café'"New value: +"Only the questions to add or change: text such as 'best landing page builder for a café', or {text, targetPath} to point a question at its page. Saved questions left out stay."
      • addedInput schema / properties / prompts / items / anyOf
        Added value: +[
        +  {
        +    "maxLength": 200,
        +    "type": "string"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "targetPageId": {
        +        "anyOf": [
        +          {
        +            "maxLength": 100,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "That page's siteId instead of its path; null clears the target page"
        +      },
        +      "targetPath": {
        +        "description": "The path of the brand's page meant to answer it, such as '/guides/how-to-choose', or that page's full URL",
        +        "maxLength": 300,
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "The question",
        +        "maxLength": 200,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "text"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / prompts / items / maxLength
        Removed value: -200
      • removedInput schema / properties / prompts / items / type
        Removed value: -"string"
      • addedInput schema / properties / remove
        Added value: +{
        +  "description": "Saved questions to delete, by id or by text; their results go with them",
        +  "items": {
        +    "maxLength": 200,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 200,
        +  "minItems": 1,
        +  "type": "array"
        +}
  6. 1 tool update
    • Changedenable_orders1 field changed
      • addedInput schema / properties / itemModes
        Added value: +{
        +  "description": "Your reading of how each item is handed over, saved on the draft for the seller to check in setup. Leave an item out when the page doesn't say.",
        +  "items": {
        +    "properties": {
        +      "modes": {
        +        "description": "How the item is handed over: pickup, delivery, online, visit, or digital (one or more)",
        +        "items": {
        +          "enum": [
        +            "pickup",
        +            "delivery",
        +            "online",
        +            "visit",
        +            "digital"
        +          ],
        +          "type": "string"
        +        },
        +        "maxItems": 5,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "name": {
        +        "description": "The item's name as the page shows it",
        +        "maxLength": 100,
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "modes"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 100,
        +  "type": "array"
        +}
  7. 2 tool updates
    • Addedrun_answer_check
    • Changedupdate_answer_check_prompts1 field changed
      • changedInput schema / properties / prompts / maxItems
        Previous value: -50New value: +200
  8. 2 tool updates
    • Addedenable_domain_route
    • Addedremove_domain
  9. 3 tool updates
    • Changedcreate_landing_page1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2'; unless the reply has guidance.rootRedirect, example.com without www won't open the page (guidance.rootNotServed)."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."
    • Changedcreate_landing_page_preview1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/lp2' or 'www.example.com/lp2'. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2'; unless the reply has guidance.rootRedirect, example.com without www won't open the page (guidance.rootNotServed)."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/lp2' or 'www.example.com/lp2'. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."
    • Changedcreate_site1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2'; unless the reply has guidance.rootRedirect, example.com without www won't open the page (guidance.rootNotServed)."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2', and example.com redirects to www once its DNS points at Convika (guidance.rootRedirect has the records). If the reply has guidance.rootNotServed instead, example.com without www won't open the page."
  10. 15 tool updates
    • Changedcreate_form1 field changed
      • changedInput schema / properties / notifyEmail / pattern
        Previous value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    • Changedcreate_landing_page1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2'; unless the reply has guidance.rootRedirect, example.com without www won't open the page (guidance.rootNotServed)."
    • Changedcreate_landing_page_preview1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/lp2' or 'www.example.com/lp2'."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/lp2' or 'www.example.com/lp2'. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2'; unless the reply has guidance.rootRedirect, example.com without www won't open the page (guidance.rootNotServed)."
    • Changedcreate_site1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain."New value: +"Optional exact custom URL requested by the user, for example 'https://www.example.com/' or 'https://www.example.com/lp2'. If provided, Convika assigns this URL to the site after creating the fallback subdomain. A root URL such as 'https://example.com/lp2' goes on 'https://www.example.com/lp2'; unless the reply has guidance.rootRedirect, example.com without www won't open the page (guidance.rootNotServed)."
    • Addedenable_orders
    • Addedget_ai_access
    • Addedget_answer_check_results
    • Addedget_domain
    • Addedget_order_stats
    • Addedget_orders
    • Addedget_search_performance
    • Changedset_goals2 fields changed
      • changedInput schema / properties / goals / items / properties / goalType / description
        Previous value: -"'form_submission': visitors submit a form. 'cta_click': visitors click a CTA to an external destination."New value: +"'form_submission': visitors submit a form. 'cta_click': visitors click a CTA to an external destination. 'order': visitors place an order on the page's order form (after enable_orders and the seller's setup); analytics then report its orders and revenue, and the conversion total is an estimate (conversionsEstimated)."
      • changedInput schema / properties / goals / items / properties / goalType / enum
        Previous value: -[
        -  "form_submission",
        -  "cta_click"
        -]New value: +[
        +  "form_submission",
        +  "cta_click",
        +  "order"
        +]
    • Changedsetup_custom_domain1 field changed
      • changedInput schema / properties / hostname / description
        Previous value: -"The custom domain hostname (e.g. 'www.example.com' or 'landing.example.com'). Must be a subdomain, not a root/apex domain like 'example.com'."New value: +"The custom domain hostname (e.g. 'www.example.com' or 'landing.example.com'). A root such as 'example.com' connects 'www.example.com'."
    • Addedupdate_answer_check_prompts
    • Addedupdate_domain_settings
  11. 1 tool update
    • Changedcreate_form3 fields changed
      • addedInput schema / properties / fields / items / properties / options
        Added value: +{
        +  "description": "For select, radio, and checkbox: what the visitor picks from, each both the text shown and the answer stored (e.g. ['Cairo', 'Giza', 'Alexandria']). Required for select and radio; leave it out for other types.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 300,
        +  "type": "array"
        +}
      • changedInput schema / properties / fields / items / properties / type / description
        Previous value: -"Field type: text, email, or textarea"New value: +"Field type: text, email, textarea, tel (a phone or WhatsApp number), number, date (sent as YYYY-MM-DD), select (a dropdown), radio (pick one), or checkbox (tick any; without options, one box such as 'I agree')"
      • changedInput schema / properties / fields / items / properties / type / enum
        Previous value: -[
        -  "text",
        -  "email",
        -  "textarea"
        -]New value: +[
        +  "text",
        +  "email",
        +  "textarea",
        +  "tel",
        +  "number",
        +  "date",
        +  "select",
        +  "radio",
        +  "checkbox"
        +]
  12. 8 tool updates
    • Changedanalyze_site_performance1 field changed
      • addedInput schema / properties / timeZone
        Added value: +{
        +  "description": "IANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
    • Changedanalyze_source_quality1 field changed
      • addedInput schema / properties / timeZone
        Added value: +{
        +  "description": "IANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
    • Changedget_analytics_detail1 field changed
      • addedInput schema / properties / timeZone
        Added value: +{
        +  "description": "IANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
    • Changedget_analytics_summary1 field changed
      • addedInput schema / properties / timeZone
        Added value: +{
        +  "description": "IANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
    • Changedget_portfolio_analytics1 field changed
      • addedInput schema / properties / timeZone
        Added value: +{
        +  "description": "IANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
    • Changedquery_cta_performance1 field changed
      • addedInput schema / properties / timeZone
        Added value: +{
        +  "description": "IANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
    • Changedquery_segments1 field changed
      • addedInput schema / properties / timeZone
        Added value: +{
        +  "description": "IANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
    • Changedquery_timeseries1 field changed
      • addedInput schema / properties / timeZone
        Added value: +{
        +  "description": "IANA time zone name for the days in this response, such as America/New_York, Europe/Berlin, or Asia/Tokyo. Leave it out for the workspace's time zone (UTC when none is set). It affects only this response: the workspace's time zone stays as it is, and only the workspace's owner changes it, in the dashboard's Settings. Abbreviations such as EST and offsets such as +09:00 aren't accepted.",
        +  "maxLength": 64,
        +  "type": "string"
        +}

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.