Ginta
Server Details
AI website builder: build, publish and edit websites from Claude, ChatGPT or Claude Code.
- Status
- Healthy
- Uptime
- 99.5% over 22 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- Ginta
TDQS
Scored across 19 tools
Most tools map to distinct resources+actions (sites, messages, domains, modules, secrets, analytics). There is some overlap between attach_image, upload_files, and update_site/create_site for handling images and files, but the descriptions give enough guidance to steer selection.
Every tool follows a clean snake_case verb_noun pattern (get_*, list_*, create_*, update_*, manage_*, restore_*, preview_*, check_*, connect_*, attach_*, upload_*). No mixed conventions.
19 tools is slightly heavy but justified by the broad platform scope (sites, files, modules, messaging, domains, admins, secrets, analytics). Each tool covers a distinct functional area rather than duplicating effort.
Full lifecycle is covered: create, read, update, delete (via manage_site), restore, preview, plus analytics, domains, messaging, modules, admins, secrets, connections, and uploads. No obvious dead ends for a website-builder workflow.
Available Tools
19 toolsattach_imagePut the owner's photo or logo onlineAInspect
Use for the owner's own photos and logo (pages, menu, shop, gallery, blog). action "drop_link" (with site_id) makes a link where the owner drops many photos from a phone or computer (one website, one hour, no sign-in); action "dropped" then lists each photo's name and /_g/u/… path. Default: copies one image from a public link (url), or one small image as data_base64.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public http(s) link to the image file. | |
| action | No | save (default): one image from url or data_base64. drop_link: a link where the owner drops many photos from a phone or computer (one website, 1 hour). dropped: the photos dropped for the website, with paths. | |
| site_id | No | drop_link and dropped: the website (see list_sites). | |
| filename | No | Original file name, e.g. "logo.png". | |
| data_base64 | No | The image file itself, base64-encoded (instead of url). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Saving one image: its full address. |
| path | No | Saving one image: the path to use in HTML or module data, e.g. /_g/u/abc.webp. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| type | No | Image type. |
| bytes | No | |
| width | No | |
| height | No | |
| photos | No | dropped: every photo dropped for the website, oldest first. |
| site_id | No | drop_link / dropped: the website. |
| drop_url | No | drop_link: the link to give the owner (works once, for this website, until expires_at). |
| expires_at | No | drop_link: when the link stops working (ISO time). |
| max_photos | No | drop_link: photos one link takes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag it as non-read-only, open-world, non-idempotent and non-destructive, so the safety bar is partly covered. The description adds real behavioral detail beyond that: the drop link is scoped to one website and expires in an hour, requires no sign-in, and 'dropped' returns each photo's name and a /_g/u/… path. It does not say what happens to an existing image on overwrite or what the default save returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then walks the actions in a single dense paragraph. Every clause carries information, though the run of parentheticals and semicolons makes it harder to scan than a short bulleted action list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out, and the annotations carry the safety profile. The description covers all three action paths, the site scoping, the link's lifetime and the no-sign-in property — enough for an agent to choose a path and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines url, action, site_id, filename and data_base64, including that site_id applies only to drop_link/dropped. The description reinforces the site_id prerequisite and hints that data_base64 should be a 'small' image, but adds little else in the way of format or constraint meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource — putting the owner's own photo or logo online — and enumerates the surfaces it serves (pages, menu, shop, gallery, blog). The three action modes are each given a distinct meaning. It does not, however, distinguish itself from the sibling upload_files, which an agent could plausibly confuse with this.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use it (owner's own photos and logo, not third-party imagery) and ties each action to a scenario: drop_link for bulk phone/computer uploads, dropped for retrieving what was dropped, default for a single image. It lacks an explicit exclusion rule such as 'use upload_files instead for X'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_nameCheck if a site name is freeARead-onlyIdempotentInspect
Use before create_site when the user wants a specific address (https://.ginta.page); suggests alternatives if taken. "Bella Roma" becomes "bella-roma".
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Wanted name, e.g. the business name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | The name as a site id (lowercase, hyphens). |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| reason | No | Why not, if taken or not allowed. |
| available | Yes | Whether https://<name>.ginta.page is free. |
| suggestions | No | Free alternatives. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds behavior beyond them: it surfaces alternatives when the name is taken and discloses the slugification rule applied to input, though it says nothing about rate limits or whether the check reserves the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no waste: the usage directive and sibling reference come first, followed by a concrete normalization example. Every clause carries information 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only check with an output schema and rich annotations, the description covers the remaining gaps: when to call it, how the input is normalized, and what happens on a taken name. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a 3 is the baseline; the description goes beyond it by explaining normalization semantics — "Bella Roma" becomes "bella-roma" — which tells the agent how raw user input is transformed before lookup. Format details like the 80-char max stay in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (check) and resource (a site name at https://<name>.ginta.page) and implicitly contrasts with the create_site sibling. The agent can immediately tell this is a pre-flight availability check rather than a mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use before create_site when the user wants a specific address" gives an explicit trigger condition and correct sequencing relative to the sibling write tool. It does not state an explicit negative case (e.g., skip this if no custom address is wanted), so it falls short of the strongest tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_domainConnect the user's own domain (or check it)AInspect
Use when the user wants their own domain (e.g. "bakery.com") on a site, or asks whether it works yet: with domain it connects it (bakery.com shows the site, www.bakery.com redirects to it) and returns the exact DNS steps for their provider to relay (a record for the domain, a CNAME for www, and a TXT record proving the domain is theirs: the site is not served until it is seen); without domain it checks the status (pending, verifying, active) and whether https://bakery.com opens.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | The domain, e.g. "bakery.com" or "shop.bakery.com". Omit to check the current one. | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). | |
| with_www | No | Only if the user wants www.bakery.com as the main address (bakery.com then redirects to it). Default: bakery.com is the main address. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| domain | No | The domain: state (pending, verifying, active, error), records and the steps for its DNS provider; null = none. |
| enabled | No | Whether connecting domains is open. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare write/openWorld/not-idempotent; the description adds the substantive behavior: it returns exact DNS steps, requires an A record, a www CNAME and a proving TXT record, and states the site is not served until verification is observed. It does not address re-running the connect for a different domain, how to undo a connection, or propagation timing, which keeps this below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the triggering condition, then the two argument-driven modes and their consequences in a single dense but well-ordered sentence plus a closing clause. Every clause carries distinct information (trigger, action, returned DNS records, gating rule, check mode).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool whose output schema already documents returns, the description covers prerequisites, the verification gate, the www variant, and the check mode, which is enough to call it correctly. Residual gaps are lifecycle questions (changing or removing a domain) rather than invocation correctness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: omitting `domain` switches to status-check mode, and `with_www` flips which hostname is primary and which redirects, illustrated with bakery.com/www.bakery.com. `site_id` is left to the schema, which already documents it well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (connect the user's own domain to a site) and explicitly covers the second, distinct behavior (status check) selected by the presence or absence of `domain`. The mode split is spelled out with a concrete example, so an agent knows exactly what it is calling for either case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger: "Use when the user wants their own domain on a site, or asks whether it works yet," and the argument-based branch (with `domain` = connect, without = check) functions as an implicit when-to-use rule. It never names alternatives among siblings such as manage_connections or preview_site, so there is no explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sitePublish a new websiteAInspect
Publishes a NEW website in the user's account and returns its URL; building one takes about 1–3 minutes. Takes the files you designed (index.html required; see get_guide), or no files to get an upload link for a build. Pages should hold only real details the user gave (phone numbers, addresses, prices, reviews). note is required: what you built and why. Photos: /_g/photo?q= gives real photos; image URLs written from memory are often fake, and ones that don't load are replaced.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Site name for the URL (optional; random if omitted). | |
| note | Yes | REQUIRED. 1–2 plain sentences: what you changed and why, e.g. "Rebuilt the menu page, added lunch prices, moved contact to the footer." The owner sees it in Ginta's editor; Ginta's own AI reads it. | |
| files | No | All files of the site (index.html required). Omit to get an upload link for a .zip build instead. | |
| fonts | No | Font families used, e.g. "Anton / Work Sans". | |
| aesthetic | No | The look from your brief in a few words, e.g. "warm bakery, big photos of the bread". | |
| notify_email | No | Only if form messages should go to another address than the owner's Ginta account email (the default, every plan). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The new site's address. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| check | No | Ginta's visitor check of the site: forms, parts, links. |
| upload | No | When no files were sent: the upload link for a .zip build. |
| notices | No | Sentences to tell the owner word for word. |
| site_id | Yes | The new site's id. |
| version | No | The live version (1). |
| warnings | No | Things to look at. |
| notify_email | No | Another address for form messages, if set (masked). |
| images_swapped | No | Outside images that didn't load and were replaced with Ginta photos. |
| owner_next_steps | No | Once per account: what the owner gets with a plan and how to start it. Follow its instruction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/non-destructive/open-world/idempotent=false profile, and the description adds genuinely new behavior: builds take about 1–3 minutes, the photo endpoint /_g/photo?q=... returns real images, and image URLs that fail to load are replaced. Content policy ("pages should hold only real details the user gave") is also disclosed. It does not cover failure modes such as name collisions, which check_name exists for.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return value are front-loaded, then constraints follow, so the agent gets the essentials first. The paragraph is dense and jumps between file requirements, content policy, note, and photo URLs, which makes it harder to scan than a short bulleted structure would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter publishing tool that already has full schema coverage and an output schema, the description covers the remaining agent-relevant unknowns: latency, the two input modes, required content, and the fake-image trap. Nothing essential to invoking it correctly is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline would be 3; the description earns above that by adding meaning the schema does not, notably that omitting files switches the tool into an upload-link mode rather than being a no-op, why note is mandatory (the owner and Ginta's AI read it), and the accepted photo URL pattern for image paths.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Publishes a NEW website in the user's account and returns its URL" gives a specific verb (publishes), a specific resource (website), and an explicit scope marker (NEW) that separates it from the update_site / manage_site siblings. It also states the primary outcome (the returned URL), so an agent knows what a successful call yields without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states both invocation modes clearly: pass the files you designed (index.html required) or omit files to receive an upload link for a .zip build, and it routes to get_guide for details. What is missing is an explicit exclusion against the obvious alternative — nothing says to use update_site instead when the site already exists, leaving that inference to the word "NEW".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_guideRead the Ginta building guideARead-onlyIdempotentInspect
Returns Ginta's building guide: how Ginta sites work, the design brief, functional blocks and SEO. Use before building or editing a site. topic "developers" = file uploads, builds, redirects and API connections only; "modules" = the live parts.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Default all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| chars | Yes | Length of the guide text (in text). |
| topic | Yes | The topic returned (all, design, blocks, editing, seo, modules, developers). |
| docs_url | Yes | Ginta's documentation with examples. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the agent knows this is a safe, repeatable, self-contained read; the description adds nothing about caching, versioning, or size of the returned guide. Its only behavioral-adjacent content is the topic mapping, which is parameter semantics rather than behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the return value, then the trigger, then the enum disambiguation. Nothing is padded; the semicolon-separated topic gloss keeps the mapping compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be described, and the one optional parameter has a default. The only shortfall is that five of the seven enum values rely on the reader's inference rather than being glossed like "developers" and "modules".
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but the schema text is only "Default all.", so the description carries real weight by decoding two non-obvious enum values: "developers" (uploads, builds, redirects, API connections) and "modules" (live parts). It leaves the remaining five values (all, design, blocks, editing, seo) undescribed, assuming their self-evidence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Returns Ginta's building guide") and enumerates the covered subject areas: site model, design brief, functional blocks, SEO. That scope is unmistakably documentation, so an agent can separate it from data-fetching siblings like get_site, get_stats or list_sites without inspecting any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use before building or editing a site" gives explicit timing and ties the tool to a concrete task class (create_site / update_site / manage_site work). There is no when-not guidance or note about whether repeated reads are needed, but the positive trigger is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messageOpen one message in fullARead-onlyIdempotentInspect
Use when the owner wants to reply to, call or deliver to one visitor: returns one message, order, booking, sign-up or quote request (id from get_messages) with the visitor's full contact details. They are the visitor's personal data, for the site's owner.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). | |
| message_id | Yes | The message's id from get_messages. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| message | Yes | The message in full. |
| site_id | Yes | The site id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world behavior. The description adds important context beyond annotations: the returned record contains the visitor's personal data, intended for the site's owner. It does not mention auth requirements explicitly, but the owner framing covers the access scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that begins with the usage condition and then covers return content and privacy. It is slightly long but every clause contributes useful information; no filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, 100% schema coverage, existing output schema, and rich annotations, the description provides sufficient context: when to use, what is returned, and the personal-data sensitivity. Minor gaps like error behavior are reasonable to omit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both site_id and message_id are already documented in the schema. The description reinforces that message_id comes from get_messages, but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'returns one message, order, booking, sign-up or quote request' with 'the visitor's full contact details'. It also distinguishes itself from the sibling get_messages by naming it as the source of the id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-to-use condition: 'Use when the owner wants to reply to, call or deliver to one visitor.' This implies a retrieval-then-contact workflow. It does not explicitly state when not to use it or name alternatives beyond the id source, but the context is largely clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messagesRead the site's messagesARead-onlyIdempotentInspect
Use when the user asks for their messages, enquiries, orders or bookings: what visitors sent through the site's forms and Parts (shop orders and questions, quote requests, bookings, event sign-ups), newest first, as in Ginta's Messages. Visitors' emails, phone numbers and addresses are masked; get_message shows one message in full. Marking them read or deleting a form message: manage_site. Acting on an order, booking or sign-up: manage_module.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many (default 50). | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| total | Yes | All messages and Part entries of the site. |
| site_id | Yes | The site id. |
| submissions | Yes | Messages, newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered; the description still adds real behavioral context the annotations cannot: results are ordered newest first and visitor emails, phone numbers and addresses are masked, which materially affects how an agent should interpret and relay results. It stops short of describing pagination behavior or how the limit interacts with the newest-first ordering, which is the only notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage trigger, then behavior (ordering, masking), then sibling routing; no sentence is redundant. The long parenthetical enumerations and the reference to Ginta's Messages add slight density, but they carry genuine disambiguation value rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with an output schema (so return shape needn't be explained) and full annotation coverage, the description supplies everything an agent needs: trigger conditions, scope, ordering, PII masking, and where to go for the full record or for mutations. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (site_id with a URL-derived example, limit with default 50 and a 1-200 bound) are fully documented in the schema itself. The description adds no parameter-level meaning beyond the schema — the ordering note describes results, not an input — so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read the site's messages), enumerates the concrete content types it covers (shop orders, quote requests, bookings, event sign-ups) and explicitly distinguishes itself from get_message, manage_site and manage_module. An agent can identify exactly what comes back without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ("Use when the user asks for their messages, enquiries, orders or bookings") and names three alternatives with the conditions that select them: get_message for a single full message, manage_site for mark-read/delete, manage_module for acting on an order or booking. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_siteRead a site: files and versionsARead-onlyIdempotentInspect
Use before editing an existing site, or when the owner wants their code: returns its files (text contents; images and fonts as a list with their addresses), and with history: true its saved versions for restore_version. Pass paths to read only some files. (In Ginta's editor, owners on every plan can also see and edit the files in the Code tab and download everything as a .zip.)
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | Only these files (default: all text files, if the site isn't too large). | |
| history | No | Also list the last 20 saved versions. | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The site's address. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| files | Yes | Text files returned (their contents are in text). |
| assets | Yes | Images, fonts and other binary files. |
| site_id | Yes | The site id. |
| version | Yes | The live version. |
| complete | Yes | false = the site is too large; ask for specific paths. |
| versions | No | Saved versions (with history: true). |
| total_bytes | Yes | Size of all files. |
| notify_email | Yes | Form messages go to another address than the account email, shown masked (null = the account email). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds real context beyond them: images and fonts are returned as references rather than bytes, history yields 'saved versions for restore_version', and there is a size caveat on default file retrieval. The trailing note about the editor's Code tab is mildly promotional rather than behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The usage trigger is front-loaded, and the return-shape clause follows immediately. It is appropriately sized for a three-parameter read tool. The parenthetical about seeing files in the Code tab and downloading a .zip is tangential to invoking this tool and costs a little tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, yet the description already characterizes them. Usage, narrowing via paths, the history option, and the restore_version relationship are all present. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 even without description help. The description nonetheless adds meaning the schema does not: it frames the history flag as the input that pairs with restore_version, and reinforces paths as a partial-read mechanism. It does not explain the default size threshold that governs behavior when paths is omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads a site and returns its files plus, optionally, saved versions. It goes further than the title by specifying that text files come back with contents while images and fonts come back as a list of addresses, which lets an agent distinguish this from list_sites, get_stats, or preview_site.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use before editing an existing site, or when the owner wants their code') and a narrowing instruction ('Pass paths to read only some files'). It also links the history flag forward to restore_version. It lacks an explicit when-not or a direct pointer to sibling reads like list_sites, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsVisitors, speed and SEO of a siteARead-onlyIdempotentInspect
Use when the user asks how many visitors their site gets or how fast and well-built it is: views per day (30 days), top pages, referring websites, and the phone scores (performance, accessibility, best practices, SEO) with the issues to fix.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| speed | Yes | The latest phone speed check (PageSpeed scores and issues). |
| visitors | Yes | Page views in the last 30 days. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive behaviour, so the safety profile is covered. The description adds genuinely useful behavioural context beyond them: the fixed 30-day aggregation window and the specific metric families returned. It does not discuss data freshness, rate limits, or permission requirements, so it is not fully complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the usage trigger and followed by the returned metric inventory. No filler, no repetition of the title, and every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover safety, so the description need only frame intent and content, which it does. The 30-day window and metric list give enough to decide to call it. Minor gaps remain around result freshness and any limits on historical data available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single required parameter at 100% schema description coverage, the schema already explains site_id with a concrete URL example and a pointer to list_sites. The description adds no further meaning about that parameter. Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource and scope concretely: views per day over 30 days, top pages, referring websites, and phone scores for performance, accessibility, best practices and SEO. It is clearly distinguishable from sibling tools like get_site or list_sites by the metrics it returns. It stops short of explicitly naming a contrasting sibling, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It opens with an explicit trigger condition: 'Use when the user asks how many visitors their site gets or how fast and well-built it is.' That maps user intent to this tool well. There is no when-not guidance or named alternative for adjacent questions (e.g. site metadata), which keeps it below 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesThe user's websites, plan and limitsARead-onlyIdempotentInspect
Use when you need a site_id, or the user asks about their websites, plan, limits, credits or page views. Lists every site with its URL and form message count, plus what the plan allows.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| sites | Yes | Every website of the account. |
| account | Yes | Plan, limits and usage of the signed-in account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description's extra content is a summary of returned data, which the output schema also covers, so it adds only marginal behavioral context such as the completeness guarantee that all sites are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the usage trigger front-loaded before the payload description. There is no filler, no restatement of the title, and every clause carries information an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A zero-parameter, read-only listing tool with full annotation coverage and an output schema needs only a clear when-to-use and a note on contents. Both are present, so nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The mention that it is used when a site_id is needed hints at how the result feeds other tools, which is a small useful addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists every site') and enumerates the payload ('URL and form message count, plus what the plan allows'). The 'every site' scope implicitly but clearly distinguishes it from the single-site sibling get_site.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use when you need a site_id, or the user asks about their websites, plan, limits, credits or page views'), which is strong and covers the main call sites. It stops short of naming a when-not condition or pointing to alternatives such as get_site when only one site's detail is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_adminsWho can manage a website at its /adminADestructiveInspect
Use when the owner says who should keep the website up to date (e.g. "add maria@salon.lt as admin"), for example after building a site with parts the owner fills in. Admin users sign in at /admin with their email and a password (no Ginta account) and change its lists, menu, bookings… and read its messages; never the design or code. add: with a password the owner chose, or without one (they get an email to choose their own). set_password: for an admin user, or the owner's own email to give the owner a password for this site. send_setup_link: a new "choose your password" email.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Their email address (every action but list). | ||
| action | Yes | What to do: list the admin users, add or remove one, set_password, or send_setup_link (a new choose-your-password email). | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). | |
| password | No | Only if the owner gave one (8+ characters; add, set_password). Never invent one; never repeat it in the chat. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sent | No | Whether an email went out. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| No | The email acted on. | |
| limit | No | list: admin users allowed on this plan. |
| admins | No | list: the admin users. |
| admin_url | No | The website's /admin address. |
| has_admin | No | Whether the site has anything to manage at /admin. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is known. The description adds real behavioral value beyond that: admins authenticate with email+password rather than a Ginta account, they can edit content but never design or code, and add-without-password triggers an invitation email while send_setup_link sends a fresh one. It does not explain the consequences of remove (does access drop immediately?), what set_password does to an existing password, or any rate/repeat limits — with destructive operations present, those gaps keep it at 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition, then the behavioral context, then per-action notes — a sensible order with no filler. The per-action clauses are crammed into one run-on paragraph, which makes scanning harder than a short bulleted list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema and full annotation coverage, the description supplies what structured fields cannot: who these admins are, how they log in, what they may change, and which action sends email. The main omission is the effect of remove and whether password changes propagate immediately, which matters for a tool flagged destructive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by tying parameters to actions: password is optional on add and means the owner supplied one, email applies to every action except list, and set_password accepts either an admin's address or the owner's own email. That resolves the ambiguity an agent would otherwise face when choosing between add and send_setup_link.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (the set of admin users behind /admin) and the operations (list, add, remove, set_password, send_setup_link), and it scopes what those admins can touch — lists, menu, bookings, messages — while explicitly excluding design and code. It never states the purpose in a single crisp opening clause (that lives in the title), and it doesn't name a sibling it is distinct from, so an agent must infer that manage_site/manage_module are different concerns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong triggering guidance: "Use when the owner says who should keep the website up to date" with a concrete example and the situation "after building a site with parts the owner fills in." Each action variant gets its own cue (add with vs. without a password, set_password for an admin or the owner's own email, send_setup_link for a new choose-your-password email). No explicit when-not-to-use or named alternative tool appears.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_connectionsLet a site call an API with a secretADestructiveInspect
Use when the site's JavaScript must call an outside API: save a connection (name, https base URL, which secret, how it's sent), and the page calls fetch("/_ginta/api//"); Ginta adds the key and forwards to that base URL only. list shows connections and this month's calls.
| Name | Required | Description | Default |
|---|---|---|---|
| auth | No | How the key is sent: "bearer" (Authorization: Bearer, default), "header" (auth_name = the header, e.g. X-API-Key) or "query" (auth_name = the parameter, e.g. appid). | |
| name | No | Connection name, e.g. "weather" (save, delete). | |
| action | Yes | What to do: list the connections, save (add or change) one, or delete one. | |
| secret | No | Name of the secret to attach (from manage_secrets). Omit for public APIs. | |
| methods | No | Allowed methods (default GET and POST). | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). | |
| base_url | No | The API's https base URL, e.g. "https://api.openweathermap.org/data/2.5". | |
| auth_name | No | Header or query parameter name for auth header/query. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | save/delete: the connection's name. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| site_id | Yes | The site id. |
| connections | No | list: the connections. |
| usage_this_month | No | list: calls this month. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is supplied. The description adds genuinely non-obvious behavior: Ginta injects the key so the page never sees it, and forwarding is restricted to that base URL only — a meaningful security boundary. It still does not say what deletion removes or whether it affects live traffic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The guidance is front-loaded in the opening clause and the total length is small. The single dense sentence with embedded fetch() syntax is slightly hard to parse, and the escaped quotes add noise, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the list action's output is still helpfully summarized (connections plus this month's calls). With 8 parameters and three actions, the only real omission is delete semantics, which the action enum's own description partially covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the auth enum and methods default. The description only echoes a subset (name, base URL, secret, how it's sent) and adds the useful detail that the connection name becomes the URL path segment. That is baseline-level added meaning, not a substitute for schema detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource and operation (save a connection with name, https base URL, secret, and auth style) and explains the resulting proxy endpoint pattern. It clearly covers save and list, but never describes what the 'delete' action does, so the multi-action scope is only partially stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when the site's JavaScript must call an outside API" gives an explicit triggering condition, which is strong. However, it offers no exclusions or sibling comparison (e.g. manage_secrets is only referenced indirectly through the secret parameter), and the delete action's use case is unaddressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_moduleLive parts: menu, bookings, shop, blog…ADestructiveInspect
Use to set up or change the live parts the owner manages, without rewriting pages: menu, bookings, shop (catalog), blog, gallery, events, quote form, announcements, reviews and lists (collections), and the bookings, orders, sign-ups, quote requests and reviews they receive. Omit module to see the parts and what the plan includes; action "help" lists a module's actions and fields (no site_id needed). Some actions email the business's customers (a cancelled or moved booking, an order update).
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | The action's fields (see help), e.g. for menu setup {"sections": [...]}. Unknown fields are refused. | |
| action | No | What to do, e.g. "setup", "get", "list", "save_item"; "help" lists the actions and their fields. | |
| module | No | Which module (omit to list them all). | |
| site_id | No | The site id (see list_sites). Not needed for action "help" or to list the modules. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint/openWorldHint annotations, the description discloses a genuinely important side effect: some actions email the business's customers (cancelled or moved bookings, order updates). That is behavior an agent cannot infer from annotations or schema. It stops short of describing what data is destroyed by destructive actions, which is the biggest residual gap given destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by the discovery path and then the side-effect warning. The long module enumeration is dense but earns its place by implying the enum's scope; a reader can scan the first sentence and act.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need no explanation, and the discovery flow plus email side effect are covered. For a destructive, non-idempotent, open-world dispatcher spanning ten modules, the description never says what deletion or overwriting means here, which is a real gap. Adequate for navigation, thin on risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters already carry descriptions including the omit-module and help/no-site_id behaviors. The description restates those rules and adds only the detail that the module listing includes plan inclusions; it adds little on `data` or `action` values beyond pointing at "help".
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: "set up or change the live parts the owner manages," then enumerates the concrete modules (menu, bookings, shop, blog, gallery, events, quote, announcements, reviews, collections). The scope is distinguishable from page-editing siblings via "without rewriting pages." However, the actions themselves remain opaque (only examples like setup/get/list/save_item appear in the schema, not the description).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear discovery workflow: omit `module` to see the parts and plan inclusions, and use action "help" to list a module's actions and fields. It does not name an alternative sibling (e.g. manage_site, update_site) or state when-not to use this dispatcher, so routing to it versus page-level tools is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_secretsAPI keys of a site (write-only)ADestructiveInspect
Use when the site's code needs an API key (weather, CRM, maps…): list shows the names only, delete removes one, set stores one encrypted. The owner saves a key's value in Ginta's own key box (the website's Settings → More → Keys and connections), so it never goes through the chat; set without value returns that link. Values can never be read back, by you or anyone; use them through manage_connections.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Secret name in capitals, e.g. "WEATHER_API_KEY" (set, delete). | |
| value | No | Leave out: the owner saves the value in Ginta's key box (the link this returns). Only for a key the user already chose to send here themselves; never ask for one in the chat and never invent one. | |
| action | Yes | What to do: list the names, set (save or replace) one, or delete one. | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | set/delete: the secret's name. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| deleted | No | |
| secrets | No | list: names only, never values. |
| site_id | Yes | The site id. |
| replaced | No | |
| key_box_url | No | set without value: where the owner saves the key in Ginta. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint/readOnlyHint annotations, the description discloses the key behavioral fact an agent cannot infer: values are write-only and can never be read back by anyone, and set without a value returns an out-of-band owner link instead. It is slightly less explicit about what delete destroys (whether the name or the stored value) than it could be, given destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It front-loads the trigger ('Use when…') and then enumerates the three actions compactly, with no filler sentences. The middle sentence about the owner's key box is dense and slightly nested, but every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, multi-action, write-only tool with four parameters and an output schema, the description covers the trigger, per-action behavior, the out-of-band value path, and the follow-up tool. Nothing an agent needs in order to call it without leaking secrets is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents name format, the site_id derivation, the action enum, and the instruction to omit value. The description largely restates the omit-value path ('set without value returns that link'), adding little meaning the schema does not already carry, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (a site's API keys) and spells out each of the three actions — 'list shows the names only, delete removes one, set stores one encrypted' — so an agent knows exactly what the tool does per action value. It also separates itself from the sibling manage_connections by saying keys must be 'use[d] through manage_connections'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening clause gives an explicit trigger — 'Use when the site's code needs an API key (weather, CRM, maps…)' — and the closing sentence routes consumption to the alternative tool, manage_connections. It also states hard exclusions ('never ask for one in the chat and never invent one') that prevent a common misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_siteDelete, rename or move a websiteADestructiveInspect
Use for a whole website, as in its Settings in Ginta: delete it for good, rename it in Ginta, move it to a new Ginta address (old ones redirect), move it to another Ginta account (send or cancel a request; the other person accepts in Ginta), who can see it (public, private with a password, or offline), the "Made with Ginta" badge, form emails on/off, remove its own domain, mark its messages read (forms and Part entries), delete a form message, or send its new entries to another app (Zapier, Make: webhook). delete and remove_domain first answer what would be lost; they run only with confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| on | No | form_emails: true = email each new message (forms, orders, questions, quote requests, bookings, sign-ups), false = keep them in Ginta's Messages only. | |
| url | No | webhook set: the https address the other app gives, e.g. a Zapier "Catch Hook" or a Make "Custom webhook". | |
| move | No | move: send a request to another Ginta account (with email), or cancel the waiting one. | |
| name | No | rename: the website's name in Ginta ("" = from its home page title). Never changes its pages. | |
| badge | No | badge: show, hide (paid plans), brand (the agency's own "Made by …"), or account (follow the account's setting). | |
| No | move send: the other person's Ginta account email. | ||
| action | Yes | What to do (see the description). | |
| address | No | address: the new Ginta address, e.g. "sugar-and-crumb" for https://sugar-and-crumb.ginta.page (check_name says if it's free). | |
| confirm | No | delete, remove_domain, move send: true only after the owner clearly said yes to what the first answer listed. | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). | |
| webhook | No | webhook: status (default), set (with url), clear, or test (sends a made-up entry). | |
| password | No | visibility private: the password visitors type (needed the first time; a new one signs everyone out). Never repeat it. | |
| all_sites | No | badge: true = show/hide it on every website of the account (paid plans), also new ones. | |
| message_id | No | delete_message: a form message's id from get_messages (kind message; Part entries stay in their Part). | |
| visibility | No | visibility: public (everyone), private (visitors need a password) or offline ("isn't available right now"; nothing is deleted). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | The site's address (address: the new one). |
| move | No | move: the request sent (to whom, until when, whether card payments pause after it) or canceled. |
| name | No | rename: the name in Ginta (null = from the home page's title). |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| badge | No | badge: whether the badge shows now and why. |
| action | Yes | The action that ran. |
| marked | No | mark_read: messages marked read. |
| address | No | address: the new Ginta address. |
| deleted | No | delete / delete_message: done. |
| site_id | Yes | The site id. |
| webhook | No | webhook: where new entries go (url null = nowhere), whether it's on, today's limit, the last send and error; secret only once, when first set. |
| visibility | No | visibility: who can see it now (public, private or offline). |
| form_emails | No | form_emails: whether new messages are emailed. |
| has_password | No | visibility: whether a private password is set (the password itself is never returned). |
| previous_url | No | address: the old address, which now redirects to the new one. |
| removed_domain | No | remove_domain: the domain removed. |
| badge_hidden_on_all_sites | No | badge with all_sites: the account's setting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Against annotations that already declare destructiveHint=true and idempotentHint=false, the description adds real operational context: destructive calls first return what would be lost, they require confirm: true, moves require the other account's acceptance, moving redirects old addresses, and offline visibility deletes nothing. This is meaningful disclosure beyond the structured hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scope is front-loaded well, but the first sentence is a long run-on that lists all eleven actions, duplicating the action enum in the schema. The highest-value sentence — the confirm gate for destructive actions — is buried at the end rather than surfaced early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, multi-action mutation tool that already has annotations and an output schema, the description covers the risky paths (delete, remove_domain, move send) and the semantics of several actions. It leaves the boundary with update_site unexplained, which is the main residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines all 15 parameters, and the description largely re-enumerates the same action list. It does add a few facts the schema does not, notably that old Ginta addresses redirect after a move and that a new password signs everyone out. Baseline 3 is appropriate because the schema carries most of the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete scope statement ("Use for a whole website, as in its Settings in Ginta") and enumerates the specific operations it performs: delete, rename, address, move, visibility, badge, form_emails, remove_domain, mark_read, delete_message, webhook. That is a specific verb-and-resource framing rather than a restatement of the name. It stops short of naming the sibling it differs from (update_site), so an agent must infer the split from the 'Settings' framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear situational guidance by tying the tool to a website's Settings surface, and it adds a strong procedural rule: delete and remove_domain first answer what would be lost and run only with confirm: true. What's missing is an explicit contrast with update_site, the sibling most likely to be confused with this one for site-level changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_siteLook at a site (screenshots)ARead-onlyIdempotentInspect
Use after create_site or a bigger change to see the page like a visitor: desktop (1280 px, top to bottom) and phone (390 px) screenshots of one page. Limited per day by plan; if none are left, review the HTML instead.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page to look at, e.g. "menu" (default: the home page). | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The page that was looked at. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| errors | No | Problems the browser reported. |
| version | No | The live version. |
| available | Yes | false = no screenshots right now; review the HTML instead. |
| phone_images | No | Phone screenshots (images in the content). |
| desktop_images | No | Desktop screenshots (images in the content). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish readOnly, idempotent, openWorld and non-destructive behavior, so the safety profile is covered. The description adds genuinely new operational context: a per-plan daily quota and what to do when it is exhausted. It does not say what the screen dimensions mean for output shape or how failures (page not found, site unpublished) surface, but with output schema present that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the usage trigger, then capability, then the quota constraint and fallback. No filler and nothing repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with an output schema and full annotation coverage, the description covers purpose, timing, quota and fallback. The one omission is naming the tool to fall back to when the daily screenshots are used up.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters carry examples ('menu', 'bella-roma'). The description adds only that exactly one page is captured, which does not materially extend the meaning of site_id or page beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it produces desktop (1280 px, full-page) and phone (390 px) screenshots of one page 'like a visitor' would see it. That is concrete enough to separate it from read-oriented siblings like get_site or get_stats, which return data rather than visuals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering context ('after create_site or a bigger change') and a fallback when quota is exhausted ('review the HTML instead'). The only gap is that the fallback does not name the sibling tool to use for reviewing HTML, leaving the agent to guess among get_site/manage_site.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_versionUndo: restore a previous versionADestructiveInspect
Use to undo changes: restores a saved version (numbers from get_site with history: true), pages and live parts (menu prices, products, posts…), as a new version, so it can itself be undone. Visitors' messages, bookings and orders are never changed.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | true after the owner agreed to restore although something can't go back (the first answer lists it). | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). | |
| version | Yes | Version number to restore. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The site's address. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| parts | No | Live parts that went back too ("menu"…). |
| version | Yes | The new live version. |
| not_restored | No | What couldn't go back, in plain sentences. |
| restored_from | Yes | The version that was restored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, yet the description still adds real value: it explains that the restore is written as a NEW version and is therefore itself undoable, and it enumerates what is never touched (visitors' messages, bookings, orders). The 'first answer lists it' / confirm flow is only implied here and fully documented in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the purpose first, then scope, then exclusions. The stacked parentheticals ('menu prices, products, posts…') add minor clutter but each clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with rich annotations and an output schema, the description covers the origin of the version identifier, the blast radius, undoability and what is preserved. The mandatory confirmation-on-partial-restore path is delegated to the schema's confirm description, which is acceptable but leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns more by explaining where version numbers come from (get_site with history: true) and that a restore may proceed even when part of the state cannot be reverted. That adds meaning beyond the bare 'Version number to restore' property text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('restores a saved version') with concrete scope: pages and live parts such as menu prices, products and posts. It is unmistakably distinct from update_site or manage_site because it operates on a numbered historical version rather than current settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use to undo changes') and points to get_site with history: true as the source of valid version numbers, which tells the agent how to obtain the input. It stops short of naming an alternative tool or an explicit when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_siteChange a websiteADestructiveInspect
Changes an existing site's pages: small find/replace edits (preferred), whole files, deleted files, or the form email; a change takes about 1–3 minutes. All changes apply together as one new version (undo with restore_version). note is required: what you changed and why. Photos: /_g/photo?q= gives real photos; image URLs written from memory are often fake, and ones that don't load are replaced.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | REQUIRED. 1–2 plain sentences: what you changed and why, e.g. "Rebuilt the menu page, added lunch prices, moved contact to the footer." The owner sees it in Ginta's editor; Ginta's own AI reads it. | |
| edits | No | Find/replace edits (preferred). | |
| files | No | Whole files to add or replace (only the changed ones). | |
| delete | No | Paths of files to delete (not index.html). | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). | |
| notify_email | No | Another address for form messages ("" = back to the account email). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The site's address. |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| check | Yes | Ginta's visitor check of the site: forms, parts, links. |
| changed | Yes | Files changed. |
| deleted | Yes | Files deleted. |
| notices | Yes | Sentences to tell the owner word for word. |
| site_id | Yes | The site id. |
| version | Yes | The new live version number. |
| warnings | Yes | Things to look at (the change was saved). |
| notify_email | Yes | Another address form messages go to, masked (null = the account email). |
| images_swapped | No | Outside images that didn't load and were replaced with Ginta photos. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive=true and idempotent=false, but the description adds substantial context beyond them: edits apply atomically as one new version, the operation takes 1-3 minutes, note is mandatory and owner-visible, and memory-written image URLs are often fake. This is exactly the extra behavioral detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and change modes in the first clause, then layers constraints and undo path. The trailing photo/URL guidance is tangential to the tool's mechanics but earns its place by preventing a common failure mode; no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a destructive multi-mode mutation tool with full schema coverage and an output schema. Timing, atomicity, undo path, required note rationale, and image-sourcing caveat cover everything an agent needs before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema, which sets a baseline of 3. The description adds only marginal meaning beyond that: the preference for edits and the purpose of note, both of which the schema also conveys. The photo URL pattern is useful but is guidance, not parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Changes an existing site's pages') and enumerates the exact change modes: find/replace edits, whole files, deletions, and form email. It also names a sibling by function ('undo with restore_version'), so an agent can separate this from rollback tooling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear preference signal ('small find/replace edits (preferred)') and routes undo behavior to restore_version. It stops short of explicit when-not guidance (e.g. when to use whole-file replacement instead of edits, or when preview_site is warranted first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_filesUpload many files (images, fonts, a build)ADestructiveInspect
Use for images, fonts and other binary files, many files at once, or a whole build (Vite/Astro/Next export): send files (text, base64 or a link), or no files to get an upload link you POST a .zip of the build to with curl. note is required: what you changed and why.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | REQUIRED. 1–2 plain sentences: what you changed and why, e.g. "Rebuilt the menu page, added lunch prices, moved contact to the footer." The owner sees it in Ginta's editor; Ginta's own AI reads it. | |
| files | No | Files to add or replace. Omit to get an upload link for a .zip. | |
| delete | No | Paths to delete. | |
| site_id | Yes | The site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites). | |
| replace_all | No | The upload becomes the whole site: files not in it are deleted (for a fresh build). Default false (merge). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | The site's address (after an upload). |
| mode | No | |
| text | Yes | The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents). |
| check | No | Ginta's visitor check of the site: forms, parts, links. |
| changed | No | Files changed. |
| command | No | Without files: the command that uploads the build. |
| deleted | No | Files deleted. |
| notices | No | Sentences to tell the owner word for word. |
| version | No | The new live version (after an upload). |
| warnings | No | Things to look at. |
| expires_at | No | |
| max_zip_mb | No | |
| upload_url | No | Without files: where to POST the .zip. |
| images_swapped | No | Outside images that didn't load and were replaced with Ginta photos. |
| owner_next_steps | No | Once per account: what the owner gets with a plan and how to start it. Follow its instruction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and non-idempotent, so the safety bar is partly met; the description adds genuinely useful non-obvious behavior: the no-files mode returns an upload link that must be POSTed a .zip with curl. It does not restate the destructive consequences (that replace_all wipes unlisted files) or note any auth/rate-limit context, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the primary use case leads and the note requirement is deliberately last. The first sentence is a long comma-spliced run-on that takes a second pass to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema description coverage, rich annotations, and an output schema, the description only needs to explain the non-obvious contract, and it does explain the zip-link workflow and mandatory note. It is slightly thin on the destructive replace_all branch for a tool flagged destructiveHint=true.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies the three input modes for files (text, base64, or a link) and that omitting files yields an upload link, which adds a little meaning beyond the schema. The critical replace_all semantics (upload becomes the whole site, other files deleted) and the delete array are not mentioned at all in the description, so the riskiest parameters are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Use for images, fonts and other binary files, many files at once, or a whole build (Vite/Astro/Next export)" names the resource and the scope (bulk/binary/build), which implicitly separates it from the singular sibling attach_image. It never names attach_image explicitly, so the separation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selection rule: use this for multiple files, binary assets, or a full build export, and describes the alternative in-tool path (omit files to get a zip upload link for curl). No explicit "do not use for X, use sibling Y" exclusion is stated.
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.
2 tool updates
- Changed
create_site1 field changed- changed
Output schema / properties / owner_next_steps / properties / trial / descriptionPrevious value: -"true = the €1 trial."New value: +"true = the €1 + VAT trial."
- Changed
upload_files1 field changed- changed
Output schema / properties / owner_next_steps / properties / trial / descriptionPrevious value: -"true = the €1 trial."New value: +"true = the €1 + VAT trial."
1 tool update
- Changed
attach_image10 fields changed- added
Input schema / properties / actionAdded value: +{ + "description": "save (default): one image from url or data_base64. drop_link: a link where the owner drops many photos from a phone or computer (one website, 1 hour). dropped: the photos dropped for the website, with paths.", + "enum": [ + "save", + "drop_link", + "dropped" + ], + "type": "string" +} - added
Input schema / properties / site_idAdded value: +{ + "description": "drop_link and dropped: the website (see list_sites).", + "maxLength": 40, + "type": "string" +} - added
Output schema / properties / drop_urlAdded value: +{ + "description": "drop_link: the link to give the owner (works once, for this website, until expires_at).", + "type": "string" +} - added
Output schema / properties / expires_atAdded value: +{ + "description": "drop_link: when the link stops working (ISO time).", + "type": "string" +} - added
Output schema / properties / max_photosAdded value: +{ + "description": "drop_link: photos one link takes.", + "type": "number" +} - changed
Output schema / properties / path / descriptionPrevious value: -"Path to use in HTML or module data, e.g. /_g/u/abc.webp."New value: +"Saving one image: the path to use in HTML or module data, e.g. /_g/u/abc.webp." - added
Output schema / properties / photosAdded value: +{ + "description": "dropped: every photo dropped for the website, oldest first.", + "items": { + "additionalProperties": {}, + "properties": { + "bytes": { + "type": "number" + }, + "dropped_at": { + "type": "string" + }, + "height": { + "type": [ + "number", + "null" + ] + }, + "name": { + "description": "Clean name from the file name (\"burger.jpg\" → \"burger\").", + "type": "string" + }, + "path": { + "description": "Path to use in the website's HTML or Part data, e.g. /_g/u/abc.webp.", + "type": "string" + }, + "type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "used": { + "description": "Already on one of the website's pages or Parts.", + "type": "boolean" + }, + "width": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "name", + "path", + "url", + "bytes", + "width", + "height", + "type", + "used", + "dropped_at" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / site_idAdded value: +{ + "description": "drop_link / dropped: the website.", + "type": "string" +} - changed
Output schema / properties / url / descriptionPrevious value: -"Full address of the image."New value: +"Saving one image: its full address." - changed
Output schema / requiredPrevious value: -[ - "path", - "url", - "width", - "height", - "bytes", - "type", - "text" -]New value: +[ + "text" +]
2 tool updates
- Changed
create_site1 field changed- added
Output schema / properties / owner_next_stepsAdded value: +{ + "additionalProperties": {}, + "description": "Once per account: what the owner gets with a plan and how to start it. Follow its instruction.", + "properties": { + "checkout_url": { + "type": "string" + }, + "example_domain": { + "type": "string" + }, + "instruction": { + "description": "How to say it.", + "type": "string" + }, + "lang": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "say": { + "description": "What to tell the owner, in their language.", + "type": "string" + }, + "trial": { + "description": "true = the €1 trial.", + "type": "boolean" + } + }, + "required": [ + "say", + "plan", + "trial", + "checkout_url", + "example_domain", + "lang", + "instruction" + ], + "type": "object" +}
- Changed
upload_files1 field changed- added
Output schema / properties / owner_next_stepsAdded value: +{ + "additionalProperties": {}, + "description": "Once per account: what the owner gets with a plan and how to start it. Follow its instruction.", + "properties": { + "checkout_url": { + "type": "string" + }, + "example_domain": { + "type": "string" + }, + "instruction": { + "description": "How to say it.", + "type": "string" + }, + "lang": { + "type": "string" + }, + "plan": { + "type": "string" + }, + "say": { + "description": "What to tell the owner, in their language.", + "type": "string" + }, + "trial": { + "description": "true = the €1 trial.", + "type": "boolean" + } + }, + "required": [ + "say", + "plan", + "trial", + "checkout_url", + "example_domain", + "lang", + "instruction" + ], + "type": "object" +}
2 tool updates
- Changed
get_messages2 fields changed- changed
Output schema / properties / submissions / items / properties / kind / descriptionPrevious value: -"message = a form message; order/question = the Shop, quote = Quote requests, booking = Bookings, signup = Events."New value: +"message = a form message; order/question = the Shop, quote = Quote requests, booking = Bookings, signup = Events, review = Reviews (waiting for approval)." - changed
Output schema / properties / submissions / items / properties / kind / enumPrevious value: -[ - "message", - "order", - "question", - "quote", - "booking", - "signup" -]New value: +[ + "message", + "order", + "question", + "quote", + "booking", + "signup", + "review" +]
- Changed
manage_module1 field changed- changed
Input schema / properties / module / enumPrevious value: -[ - "collections", - "announcements", - "menu", - "gallery", - "blog", - "bookings", - "catalog", - "quote", - "events" -]New value: +[ + "collections", + "announcements", + "menu", + "gallery", + "blog", + "bookings", + "catalog", + "quote", + "events", + "reviews" +]
19 tool updates
- Changed
attach_image2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "path", - "url", - "width", - "height", - "bytes", - "type" -]New value: +[ + "path", + "url", + "width", + "height", + "bytes", + "type", + "text" +]
- Changed
check_name2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "name", - "available" -]New value: +[ + "name", + "available", + "text" +]
- Changed
connect_domain2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - added
Output schema / requiredAdded value: +[ + "text" +]
- Changed
create_site2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "url", - "site_id" -]New value: +[ + "url", + "site_id", + "text" +]
- Changed
get_guide3 fields changed- changed
Output schema / properties / chars / descriptionPrevious value: -"Length of the guide text, which is in the text content."New value: +"Length of the guide text (in text)." - added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "topic", - "chars", - "docs_url" -]New value: +[ + "topic", + "chars", + "docs_url", + "text" +]
- Changed
get_message2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "site_id", - "message" -]New value: +[ + "site_id", + "message", + "text" +]
- Changed
get_messages2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "site_id", - "total", - "submissions" -]New value: +[ + "site_id", + "total", + "submissions", + "text" +]
- Changed
get_site3 fields changed- changed
Output schema / properties / files / descriptionPrevious value: -"Text files returned (their contents are in the text content)."New value: +"Text files returned (their contents are in text)." - added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "site_id", - "url", - "version", - "total_bytes", - "notify_email", - "files", - "assets", - "complete" -]New value: +[ + "site_id", + "url", + "version", + "total_bytes", + "notify_email", + "files", + "assets", + "complete", + "text" +]
- Changed
get_stats2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "visitors", - "speed" -]New value: +[ + "visitors", + "speed", + "text" +]
- Changed
list_sites2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "account", - "sites" -]New value: +[ + "account", + "sites", + "text" +]
- Changed
manage_admins2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - added
Output schema / requiredAdded value: +[ + "text" +]
- Changed
manage_connections2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "site_id" -]New value: +[ + "site_id", + "text" +]
- Changed
manage_module2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - added
Output schema / requiredAdded value: +[ + "text" +]
- Changed
manage_secrets2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "site_id" -]New value: +[ + "site_id", + "text" +]
- Changed
manage_site6 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "delete", - "rename", - "address", - "badge", - "form_emails", - "remove_domain", - "mark_read", - "delete_message", - "visibility", - "move" -]New value: +[ + "delete", + "rename", + "address", + "badge", + "form_emails", + "remove_domain", + "mark_read", + "delete_message", + "visibility", + "move", + "webhook" +] - added
Input schema / properties / urlAdded value: +{ + "description": "webhook set: the https address the other app gives, e.g. a Zapier \"Catch Hook\" or a Make \"Custom webhook\".", + "maxLength": 500, + "type": "string" +} - added
Input schema / properties / webhookAdded value: +{ + "description": "webhook: status (default), set (with url), clear, or test (sends a made-up entry).", + "enum": [ + "status", + "set", + "clear", + "test" + ], + "type": "string" +} - added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - added
Output schema / properties / webhookAdded value: +{ + "additionalProperties": {}, + "description": "webhook: where new entries go (url null = nowhere), whether it's on, today's limit, the last send and error; secret only once, when first set.", + "properties": { + "active": { + "type": "boolean" + }, + "last_error": { + "type": [ + "string", + "null" + ] + }, + "last_sent_at": { + "type": [ + "string", + "null" + ] + }, + "off_reason": { + "type": [ + "string", + "null" + ] + }, + "per_day": { + "type": "number" + }, + "secret": { + "type": "string" + }, + "test_sent": { + "type": "boolean" + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "url", + "active", + "off_reason", + "per_day", + "last_sent_at", + "last_error" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "site_id", - "action" -]New value: +[ + "site_id", + "action", + "text" +]
- Changed
preview_site2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "url", - "available" -]New value: +[ + "url", + "available", + "text" +]
- Changed
restore_version2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "url", - "version", - "restored_from" -]New value: +[ + "url", + "version", + "restored_from", + "text" +]
- Changed
update_site2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "site_id", - "url", - "version", - "warnings", - "notices", - "check", - "changed", - "deleted", - "notify_email" -]New value: +[ + "site_id", + "url", + "version", + "warnings", + "notices", + "check", + "changed", + "deleted", + "notify_email", + "text" +]
- Changed
upload_files2 fields changed- added
Output schema / properties / textAdded value: +{ + "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).", + "type": "string" +} - added
Output schema / requiredAdded value: +[ + "text" +]
1 tool update
- Changed
manage_site5 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "delete", - "rename", - "address", - "badge", - "form_emails", - "remove_domain", - "mark_read", - "delete_message", - "visibility" -]New value: +[ + "delete", + "rename", + "address", + "badge", + "form_emails", + "remove_domain", + "mark_read", + "delete_message", + "visibility", + "move" +] - changed
Input schema / properties / confirm / descriptionPrevious value: -"delete, remove_domain: true only after the owner clearly said yes to what the first answer listed."New value: +"delete, remove_domain, move send: true only after the owner clearly said yes to what the first answer listed." - added
Input schema / properties / emailAdded value: +{ + "description": "move send: the other person's Ginta account email.", + "maxLength": 254, + "type": "string" +} - added
Input schema / properties / moveAdded value: +{ + "description": "move: send a request to another Ginta account (with email), or cancel the waiting one.", + "enum": [ + "send", + "cancel" + ], + "type": "string" +} - added
Output schema / properties / moveAdded value: +{ + "additionalProperties": {}, + "description": "move: the request sent (to whom, until when, whether card payments pause after it) or canceled.", + "properties": { + "canceled": { + "type": "boolean" + }, + "expires_at": { + "type": "string" + }, + "payments_pause": { + "type": "boolean" + }, + "to": { + "type": "string" + } + }, + "type": "object" +}
1 tool update
- Changed
manage_site5 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "delete", - "rename", - "address", - "badge", - "form_emails", - "remove_domain", - "mark_read", - "delete_message" -]New value: +[ + "delete", + "rename", + "address", + "badge", + "form_emails", + "remove_domain", + "mark_read", + "delete_message", + "visibility" +] - added
Input schema / properties / passwordAdded value: +{ + "description": "visibility private: the password visitors type (needed the first time; a new one signs everyone out). Never repeat it.", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / visibilityAdded value: +{ + "description": "visibility: public (everyone), private (visitors need a password) or offline (\"isn't available right now\"; nothing is deleted).", + "enum": [ + "public", + "private", + "offline" + ], + "type": "string" +} - added
Output schema / properties / has_passwordAdded value: +{ + "description": "visibility: whether a private password is set (the password itself is never returned).", + "type": "boolean" +} - added
Output schema / properties / visibilityAdded value: +{ + "description": "visibility: who can see it now (public, private or offline).", + "type": "string" +}
7 tool updates
- Changed
create_site1 field changed- changed
Output schema / properties / notify_email / descriptionPrevious value: -"Another address for form messages, if set."New value: +"Another address for form messages, if set (masked)."
- Added
get_message - Changed
get_messages3 fields changed- added
Output schema / properties / submissions / items / properties / fields / descriptionAdded value: +"What was sent (labels → values); emails, phone numbers and addresses masked." - changed
Output schema / properties / submissions / items / properties / part / descriptionPrevious value: -"The Part the entry lives in (a manage_module module id)."New value: +"The Part the entry lives in (its module id)." - changed
Output schema / properties / submissions / items / properties / status / descriptionPrevious value: -"paid, done, cancelled, refunded, quoted, won, lost, waitlist or not_paid; absent = new or confirmed."New value: +"paid, done, cancelled, refunded, quoted, won, lost, waitlist, not_paid, or whatsapp (an order sent on WhatsApp, not paid); absent = new or confirmed."
- Changed
get_site1 field changed- changed
Output schema / properties / notify_email / descriptionPrevious value: -"Form messages go here (null = the account email)."New value: +"Form messages go to another address than the account email, shown masked (null = the account email)."
- Changed
list_sites2 fields changed- removed
Output schema / properties / account / properties / emailRemoved value: -{ - "description": "The signed-in account's email.", - "type": "string" -} - changed
Output schema / properties / account / requiredPrevious value: -[ - "email", - "plan", - "websites", - "custom_domains", - "files_per_website", - "photos", - "credits", - "page_views_this_month", - "assistant_limits", - "upgrade_url", - "admin_users_per_website", - "part_limits_per_website" -]New value: +[ + "plan", + "websites", + "custom_domains", + "files_per_website", + "photos", + "credits", + "page_views_this_month", + "assistant_limits", + "upgrade_url", + "admin_users_per_website", + "part_limits_per_website" +]
- Changed
manage_secrets2 fields changed- changed
Input schema / properties / value / descriptionPrevious value: -"The key itself (set only). Ask the user to paste it; never invent one."New value: +"Leave out: the owner saves the value in Ginta's key box (the link this returns). Only for a key the user already chose to send here themselves; never ask for one in the chat and never invent one." - added
Output schema / properties / key_box_urlAdded value: +{ + "description": "set without value: where the owner saves the key in Ginta.", + "type": "string" +}
- Changed
update_site1 field changed- changed
Output schema / properties / notify_email / descriptionPrevious value: -"Where form messages go (null = the account email)."New value: +"Another address form messages go to, masked (null = the account email)."
1 tool update
- Changed
create_site2 fields changed- changed
Input schema / properties / aesthetic / descriptionPrevious value: -"The named art direction from your brief, e.g. \"1970s municipal pool signage\"."New value: +"The look from your brief in a few words, e.g. \"warm bakery, big photos of the bread\"." - removed
Input schema / properties / layoutRemoved value: -{ - "description": "The layout idea from get_guide section 4 closest to your page, or \"custom\".", - "enum": [ - "photo-hero", - "split-hero", - "centered-statement", - "editorial", - "bold-type", - "card-grid", - "minimal-column", - "gallery-first", - "local-utility", - "story-bands", - "dark-luxe", - "custom" - ], - "type": "string" -}
1 tool update
- Changed
list_sites3 fields changed- changed
Output schema / properties / account / properties / credits / descriptionPrevious value: -"Credits for Ginta's own in-app AI."New value: +"Credits for Ginta's own in-app AI: balance without today's daily credits, and the daily credits left (used first)." - added
Output schema / properties / account / properties / credits / properties / dailyAdded value: +{ + "type": "number" +} - changed
Output schema / properties / account / properties / credits / requiredPrevious value: -[ - "balance", - "note" -]New value: +[ + "balance", + "daily", + "note" +]
2 tool updates
- Changed
get_messages7 fields changed- added
Output schema / properties / submissions / items / properties / kindAdded value: +{ + "description": "message = a form message; order/question = the Shop, quote = Quote requests, booking = Bookings, signup = Events.", + "enum": [ + "message", + "order", + "question", + "quote", + "booking", + "signup" + ], + "type": "string" +} - added
Output schema / properties / submissions / items / properties / linkAdded value: +{ + "description": "Where the owner opens it in Ginta (path on ginta.app).", + "type": "string" +} - added
Output schema / properties / submissions / items / properties / numberAdded value: +{ + "description": "Order or quote request number.", + "type": "number" +} - added
Output schema / properties / submissions / items / properties / partAdded value: +{ + "description": "The Part the entry lives in (a manage_module module id).", + "type": "string" +} - added
Output schema / properties / submissions / items / properties / statusAdded value: +{ + "description": "paid, done, cancelled, refunded, quoted, won, lost, waitlist or not_paid; absent = new or confirmed.", + "type": "string" +} - changed
Output schema / properties / submissions / items / requiredPrevious value: -[ - "id", - "received_at", - "unread", - "fields" -]New value: +[ + "id", + "kind", + "received_at", + "unread", + "fields" +] - changed
Output schema / properties / total / descriptionPrevious value: -"All messages of the site."New value: +"All messages and Part entries of the site."
- Changed
manage_site2 fields changed- changed
Input schema / properties / message_id / descriptionPrevious value: -"delete_message: the message's id from get_messages."New value: +"delete_message: a form message's id from get_messages (kind message; Part entries stay in their Part)." - changed
Input schema / properties / on / descriptionPrevious value: -"form_emails: true = email each new form message, false = keep them in Ginta's Messages only."New value: +"form_emails: true = email each new message (forms, orders, questions, quote requests, bookings, sign-ups), false = keep them in Ginta's Messages only."
1 tool update
- Changed
list_sites2 fields changed- added
Output schema / properties / account / properties / part_limits_per_websiteAdded value: +{ + "additionalProperties": {}, + "description": "Caps of the shop, bookings and events per website (null = no limit).", + "properties": { + "bookings_per_month": { + "type": [ + "number", + "null" + ] + }, + "shop_products": { + "type": [ + "number", + "null" + ] + }, + "upcoming_events": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "shop_products", + "bookings_per_month", + "upcoming_events" + ], + "type": "object" +} - changed
Output schema / properties / account / requiredPrevious value: -[ - "email", - "plan", - "websites", - "custom_domains", - "files_per_website", - "photos", - "credits", - "page_views_this_month", - "assistant_limits", - "upgrade_url", - "admin_users_per_website" -]New value: +[ + "email", + "plan", + "websites", + "custom_domains", + "files_per_website", + "photos", + "credits", + "page_views_this_month", + "assistant_limits", + "upgrade_url", + "admin_users_per_website", + "part_limits_per_website" +]
3 tool updates
- Changed
create_site1 field changed- added
Output schema / properties / images_swappedAdded value: +{ + "description": "Outside images that didn't load and were replaced with Ginta photos.", + "items": { + "additionalProperties": {}, + "properties": { + "path": { + "description": "The page or stylesheet.", + "type": "string" + }, + "photo": { + "description": "The Ginta photo search put in its place (\"\" = removed, the image next to it shows).", + "type": "string" + }, + "url": { + "description": "The image URL that didn't load.", + "type": "string" + } + }, + "required": [ + "path", + "url", + "photo" + ], + "type": "object" + }, + "type": "array" +}
- Changed
update_site1 field changed- added
Output schema / properties / images_swappedAdded value: +{ + "description": "Outside images that didn't load and were replaced with Ginta photos.", + "items": { + "additionalProperties": {}, + "properties": { + "path": { + "description": "The page or stylesheet.", + "type": "string" + }, + "photo": { + "description": "The Ginta photo search put in its place (\"\" = removed, the image next to it shows).", + "type": "string" + }, + "url": { + "description": "The image URL that didn't load.", + "type": "string" + } + }, + "required": [ + "path", + "url", + "photo" + ], + "type": "object" + }, + "type": "array" +}
- Changed
upload_files1 field changed- added
Output schema / properties / images_swappedAdded value: +{ + "description": "Outside images that didn't load and were replaced with Ginta photos.", + "items": { + "additionalProperties": {}, + "properties": { + "path": { + "description": "The page or stylesheet.", + "type": "string" + }, + "photo": { + "description": "The Ginta photo search put in its place (\"\" = removed, the image next to it shows).", + "type": "string" + }, + "url": { + "description": "The image URL that didn't load.", + "type": "string" + } + }, + "required": [ + "path", + "url", + "photo" + ], + "type": "object" + }, + "type": "array" +}
2 tool updates
- Changed
manage_module5 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"What to do, e.g. \"setup\", \"get\", \"list\", \"save_item\" (see above); \"help\" for the fields."New value: +"What to do, e.g. \"setup\", \"get\", \"list\", \"save_item\"; \"help\" lists the actions and their fields." - changed
Input schema / properties / data / descriptionPrevious value: -"The action's fields (see help), e.g. for menu setup {\"sections\": [...]}."New value: +"The action's fields (see help), e.g. for menu setup {\"sections\": [...]}. Unknown fields are refused." - changed
Input schema / properties / module / descriptionPrevious value: -"Which module (omit to list them all for this site)."New value: +"Which module (omit to list them all)." - changed
Input schema / properties / site_id / descriptionPrevious value: -"The site id: the first part of the site URL, e.g. \"bella-roma\" for https://bella-roma.ginta.page (see list_sites)."New value: +"The site id (see list_sites). Not needed for action \"help\" or to list the modules." - removed
Input schema / requiredRemoved value: -[ - "site_id" -]
- Added
manage_site
3 tool updates
- Changed
create_site1 field changed- changed
Output schema / properties / upload / properties / upload_url / descriptionPrevious value: -"Where to POST the .zip (works 15 minutes)."New value: +"Where to POST the .zip (works 15 minutes, 3 uploads)."
- Changed
get_messages2 fields changed- added
Output schema / properties / submissions / items / properties / emailedAdded value: +{ + "const": false, + "description": "Present when the email about it didn't go out (it's still saved).", + "type": "boolean" +} - added
Output schema / properties / submissions / items / properties / not_emailedAdded value: +{ + "description": "Why: the month's emails used up, the website's form emails for today, or sending failed.", + "enum": [ + "month", + "day", + "failed" + ], + "type": "string" +}
- Changed
list_sites2 fields changed- added
Output schema / properties / account / properties / photosAdded value: +{ + "additionalProperties": {}, + "description": "The owner's photos (attach_image) in use on all websites, and the plan's limit.", + "properties": { + "limit": { + "type": "number" + }, + "used": { + "type": "number" + } + }, + "required": [ + "used", + "limit" + ], + "type": "object" +} - changed
Output schema / properties / account / requiredPrevious value: -[ - "email", - "plan", - "websites", - "custom_domains", - "files_per_website", - "credits", - "page_views_this_month", - "assistant_limits", - "upgrade_url", - "admin_users_per_website" -]New value: +[ + "email", + "plan", + "websites", + "custom_domains", + "files_per_website", + "photos", + "credits", + "page_views_this_month", + "assistant_limits", + "upgrade_url", + "admin_users_per_website" +]
1 tool update
- Changed
restore_version3 fields changed- added
Input schema / properties / confirmAdded value: +{ + "description": "true after the owner agreed to restore although something can't go back (the first answer lists it).", + "type": "boolean" +} - added
Output schema / properties / not_restoredAdded value: +{ + "description": "What couldn't go back, in plain sentences.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / partsAdded value: +{ + "description": "Live parts that went back too (\"menu\"…).", + "items": { + "type": "string" + }, + "type": "array" +}
Related MCP Connectors
Turn Claude or ChatGPT into a website builder that ships a real site to a live URL you own.
Build, edit, and publish real websites and online stores by chatting with your AI assistant.
Describe your business. Get a beautiful website, built and published for you from Claude or ChatGPT.
Build & publish sites — or a game, a calendar, a report — by chatting with Claude. Live in seconds.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceTurn Claude or ChatGPT into a website builder that creates and publishes React sites from natural language descriptions.MIT- AlicenseNot gradedqualityAmaintenanceCloud file storage with an email address for every bucket, for humans and AI agents. Store and share files through authorized account and bucket access, keep versions, and read incoming messages and attachments. Connect through the hosted MCP server with OAuth.MIT
- AlicenseNot gradedqualityFmaintenanceStatic site generator / website building toolkit for AI coding agents like Claude, Codex, Cursor, Gemini, OpenClaw, etc. No subscription, no lock-in — host your site anywhere.12 npm9Elastic 2.0

Zarla MCP serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI assistants to build, edit, preview, and publish websites through natural language, including managing pages, designs, products, and site publishing.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.