Skip to main content
Glama

Server Details

Publish a client-side app with Cloche and share it with a link.

Ownership verified
Status
Healthy
Uptime
54.4% over 22 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cloche-it/plugin
GitHub Stars
0

TDQS

A4/5.0

Scored across 15 tools

Disambiguation4/5

Each tool targets a distinct resource+action pair (list_apps/get_app_context/get_app_status, get_access/set_access, list_records/save_record), and descriptions are dense enough to separate them. Minor overlap remains between get_app_context and get_deploy_instructions (both discuss publish rules) and between the org-definition read/write pair, but these are recoverable.

Naming Consistency4/5

Thirteen of fifteen tools follow a clean verb_noun snake_case pattern (checkpoint_app, delete_app, get_access, list_records, upload_asset, write_company_definition). The bare verb 'publish' and the noun-phrase 'company_metrics_and_definitions' are the only deviations, both still readable and unambiguous.

Tool Count4/5

Fifteen tools sit at the upper end of the comfortable 3-15 band but each maps to a real app-lifecycle concern (authoring, publishing, access, records, assets, org definitions). No tool appears vestigial, though the surface is near the point where finer grouping would help discoverability.

Completeness4/5

The app lifecycle is well covered: create/change (publish), read (get_app_context), delete (delete_app), status, listing, checkpoints, access control, assets, records, and org definitions. The clear gap is record deletion or bulk record management, and there is no explicit unpublish/rename tool (these are folded into publish), leaving some dead ends agents must work around.

Available Tools

15 tools
checkpoint_appCheckpoint appA
DestructiveIdempotent
Inspect

Saves compact unfinished work for this editor without publishing or changing the live app. For work that continues across turns after reserving an app, or a session ending with unfinished changes. Takes the version get_app_context returned, as base_version (0 for an unpublished reservation), and a work_context summarizing the goal, current state, decisions, open work, verification, and known issues. The same arguments leave the same checkpoint. Different work replaces it, and the previous one is not kept.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idNothe app to save unfinished work for
base_versionYesthe version this unfinished work started from; 0 for a reserved app not published yet
work_contextYescompact state needed to continue: no credentials, raw transcripts, or stored app records
development_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
checkpointYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations mark it idempotent and destructive; the description goes beyond that by specifying exactly what is destroyed — a different checkpoint replaces the previous one and it is not kept — and confirms the no-publish/no-live-change guarantee. This is the kind of overwrite semantics an agent must know before calling.

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

Conciseness4/5

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

Front-loaded with the core action and its bounds, then use conditions, then parameters and overwrite behavior. Dense but every clause carries information; only the work_context field enumeration mildly duplicates the schema.

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

Completeness4/5

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

Output schema exists so return values need no explanation, and the description covers the mutation's irreversibility and use triggers. It is slightly thin on the mechanics of recovering a checkpoint later and says nothing about the undocumented development_token, a minor gap for a four-parameter tool.

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

Parameters3/5

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

Schema coverage is 75% and the schema already documents every work_context field verbatim, so most of the description's parameter recital is redundant. The one genuine addition is linking base_version to the value returned by get_app_context (0 for an unpublished reservation), which the schema only partially conveys.

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

Purpose5/5

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

States a specific verb and resource (saves unfinished work / checkpoint) and immediately bounds scope with 'without publishing or changing the live app,' which cleanly separates it from the publish sibling. An agent can identify the operation without opening the schema.

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

Usage Guidelines4/5

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

Explicitly names two triggering situations: work continuing across turns after reserving an app, and a session ending with unfinished changes. It does not name a sibling alternative by name (e.g. save_record or publish), so routing is inferred rather than spelled out, but the conditions are clear.

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

company_metrics_and_definitionsCompany definitionsA
Read-only
Inspect

Returns this organization's own definitions of its metrics, terms and rules, and its verified queries: KPIs, revenue, players, customers, churn, retention, segments, and how to count them. With no input, the index of every definition. With query, matching definitions. With paths, the files.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsNofiles by their path in the index, or a folder ending in / for its files and folders, the root being /
queryNowords to find in the definitions
sinceNoa change id, such as an earlier answer's head: returns the changes after it
organizationNoan organization id, for a person in several organizations that keep definitions

Output Schema

ParametersJSON Schema
NameRequiredDescription
headNo
noteNo
filesNo
totalNo
readmeNo
changesNo
coveredNo
entriesNo
foldersNo
matchesNo
missingNo
truncatedYes
organization_idYes
organization_nameYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds useful behavioral detail about how the tool responds in each mode (index vs. matching definitions vs. files) but doesn't mention rate limits, auth needs, or result ordering. With annotations covering safety, this is good but not rich.

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

Conciseness4/5

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

Two compact sentences front-load the purpose, then map each of the three modes cleanly. No wasted words, though adding the 'since' example in the mode list would have tightened it further.

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

Completeness4/5

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

Given an output schema exists and annotations cover safety, the description covers all four parameters and all three usage modes. It doesn't explain what 'organization' does in relation to multi-org users, but that is minor and partly covered by the schema description.

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

Parameters3/5

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

Schema coverage is 100%; the schema already documents paths, query, since, and organization. The description echoes the modes implied by these parameters and adds a concrete example of 'since' (change id), but doesn't add much 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.

Purpose5/5

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

States a specific verb and resource: returns the organization's own definitions of metrics/terms/rules plus verified queries, naming concrete domains (KPIs, revenue, players, churn, retention). Clearly distinguishable from the sibling 'write_company_definition' since this one returns rather than writes.

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

Usage Guidelines5/5

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

Explicitly says when to use each mode: no input for the index, query for matching definitions, paths for files. This is a complete when-to-use for each parameter combination, leaving nothing to infer.

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

connect_sourceConnect sourceA
DestructiveIdempotent
Inspect

Attaches the source an app reads, by its https MCP address and the name people know it by, and works on an app with no data yet. Returns whether the caller is connected to it on this app. When connected, the tools the source lists to Cloche, each with whether it is read-only and its arguments. When not, a link that starts the source's sign-in for the app's owner. Another address replaces it. For an app that shows data from another service.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesthe source's https MCP address, as the vendor documents it
labelYesthe name people know the source by
app_idYesthe app that will read the source

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYeswhat the person is owed, the same text as the first content block
toolsNowhen connected, the tools the source lists to Cloche
data_urlNothe app's page in Cloche, where the owner connects
connectedYesthe caller is connected to this source on this app
source_urlYesthe address sessions bind to, without any query
connect_urlNowhen not connected, a link that starts the source's sign-in at once for the app's owner signed in to Cloche
tools_totalNohow many tools the source lists, when more than tools shows
source_labelYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare a write-capable, destructive, idempotent, open-world operation, so the bar is lower. The description adds real behavioral detail: the conditional return (connected status plus listed tools and their read-only flags, or a sign-in link for the owner) and that a second address replaces the existing connection. It does not spell out the destructive impact of replacement, but stays consistent with annotations.

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

Conciseness3/5

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

The content is all relevant, but it is delivered as a run of short, choppy clauses and the key framing ('for an app that shows data from another service') is stranded at the end. Some phrasing ('the name people know it by') is redundant with the schema.

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

Completeness4/5

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

With a full output schema, 100% parameter coverage, and annotations, the description's job is narrow, and it fills it: connection state, the two possible return shapes, and replacement behavior are all covered. Permission/auth prerequisites for the write are the only notable omission.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents url, label, and app_id. The description reframes url as 'the source's https MCP address' and label as 'the name people know it by', which mirrors the schema wording rather than adding new syntax or constraints; baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource: it attaches a source to an app, identified by MCP url and label. The closing line 'For an app that shows data from another service' adds domain context. It never names a sibling tool, so an agent must infer differentiation from siblings like get_access or list_apps.

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

Usage Guidelines3/5

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

It notes the tool 'works on an app with no data yet' and implies use when an app needs to read an external service, but there is no explicit when-to-use/when-not and no reference to alternative tools for connecting or configuring access.

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

delete_appDelete appA
DestructiveIdempotent
Inspect

Deletes an app permanently. URL, share links, invitations, and stored data all stop. No undo. A publish with that app_id replaces what an app contains: same URL, same link, same data. A failed publish leaves the app in place. An app turned off after a report cannot be deleted, and a retry gets the same refusal. A second call answers that the app cannot be found or is not yours -- the first call having worked, so the app is gone rather than the deletion having failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesthe app to delete, exactly as publish or list_apps gave it

Output Schema

ParametersJSON Schema
NameRequiredDescription
app_idYesthe app that was deleted

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, idempotentHint=true) by enumerating exactly what is destroyed (URL, share links, invitations, stored data), stating no undo, explaining the publish-replaces semantics, failed-publish behavior, and the 'second call not found' signature that confirms success rather than failure. This is unusually rich disclosure for a destructive operation.

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

Conciseness4/5

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

Front-loads the destructive, irreversible fact in the first two sentences, then layers edge cases. Every sentence carries behavioral information, though the closing sentence about the second-call response is convoluted enough to require re-reading.

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

Completeness5/5

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

An output schema exists so return values need no explanation, and the description covers irreversibility, side effects, idempotency semantics, and failure/refusal modes. Nothing an agent needs to call this safely is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single app_id is already documented as 'the app to delete, exactly as publish or list_apps gave it'. The description adds no further parameter syntax or format guidance, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Deletes an app permanently') and immediately adds the scope of destruction, making it unmistakable against siblings like publish or list_apps. An agent knows exactly what this tool does without opening the schema.

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

Usage Guidelines4/5

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

Provides a clear when-not condition ('An app turned off after a report cannot be deleted, and a retry gets the same refusal') and warns there is no undo, which is strong context for choosing to call it. It does not name a sibling alternative for recovering or archiving an app, so it stops short of explicit routing.

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

get_accessGet accessA
Read-only
Inspect

Reads how an app is shared: public or private, every live share link (ids only, never URLs), and every invited person under grants. For when the person asks who can open an app. Giving someone a link means making a new one. A person appears by invite address until they sign in, then by account id; either works for revoke-grant.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesthe app to read sharing for

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksYesevery share link that still opens this app, newest first, each without its address, which is given only when the link is made; empty means none do
accessYes"public" if anyone with the app's own address can open it, "signup" if anyone who signs up can, otherwise "private"
grantsYesevery person invited by id or email, with what each can do; each subject_or_email is what set_access "revoke-grant" takes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds non-obvious behavior beyond that: links are returned as ids and never URLs, and a person may appear by invite address or by account id depending on whether they have signed in. It says nothing about permissions required to read, but the added identity/ID semantics are genuinely informative.

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

Conciseness4/5

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

Four short sentences, zero filler, with the returned-fields summary front-loaded and the identity caveat placed after it. Slightly dense in clauses, but every sentence carries operational meaning.

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

Completeness5/5

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

Even though an output schema exists, the description usefully previews the shape of the result (visibility, links as ids, grants) plus the identity nuance needed to interpret grants. For a single-parameter read tool with annotations and an output schema, nothing an agent needs is missing.

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

Parameters3/5

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

With a single parameter at 100% schema description coverage, the schema already defines app_id fully, so the baseline is 3. The description implies the app must be one whose sharing is being read but adds no format, acquisition path, or constraint beyond the schema.

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

Purpose5/5

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

States a precise verb+resource ('Reads how an app is shared') and enumerates exactly what is returned: public/private visibility, live share links (ids only), and invited people under grants. This is enough to tell it apart from set_access and revoke-grant, which mutate the same resource.

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

Usage Guidelines4/5

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

'For when the person asks who can open an app' gives a clear triggering condition, and 'Giving someone a link means making a new one' steers the agent away from expecting this tool to create links. It does not explicitly name set_access as the mutating counterpart, so it stops short of a full when-not/alternative statement.

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

get_app_contextGet app contextA
Read-only
Inspect

Returns the complete currently published source of an existing app, by the app_id in the person's message: every authored file, the live declared schema, published compact context, and this editor's checkpoint. Ground-truth files and schema win if compact context disagrees. Reserved apps return version 0 with no files. Failed apps return the last live version when one exists and a plain problem. Stored records are intentionally not returned. For source-backed data, it returns the recipe digest, the collection and field projection, and whether the owner keeps a copy, and never returns rows or recipe material. A change is a publish of only the changed files against the returned version, as base_version, with the complete schema and a new work_context. version reads a past version instead of the live one: publishing its files against the version now serving puts a bad publish back.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsNofor a large app, selected paths from the returned manifest; omit for the complete bundle
app_idNothe app id to continue working on
versionNoa past version to read instead of the live one; omit for what is published now
development_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
noteNoplain sentences about this result for the person; the same text as the first text block
filesYesthe authored bundle of the version read. For the live version, version is the base_version of the next change. A past version's files, published against the version now serving, not this number, put that version back
assetsNobinary files this version serves, by path, size, hash and type; never their bytes. A publish naming one in assets with a new hash changes it
intentNo
schemaNothe complete live declared data shape; publish takes it whole, unchanged or added to
statusYes
problemNo
versionYes
manifestNo
checkpointNo
data_publicationNo
published_contextNo

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=false, openWorldHint=true), the description discloses rich edge-case behavior: reserved apps return version 0 with no files, failed apps return the last live version plus a plain problem, stored records are intentionally omitted, and source-backed data returns only a recipe digest and projection, never rows. It also clarifies that ground-truth files/schema win over compact context on disagreement.

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

Conciseness4/5

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

It is front-loaded with the core purpose before edge cases, and nearly every sentence carries distinct information (reserved/failed apps, source-backed data, version semantics). It is dense and the final version sentence is a run-on, so it is not maximally tight, but it is largely free of waste.

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

Completeness5/5

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

Given an output schema exists and the tool's complexity (versioning, reserved/failed app states, source-backed projections), the description covers everything an agent needs to call it correctly and interpret results. Return-shape details are supplementary rather than required.

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

Parameters4/5

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

Schema coverage is 75%, and the description adds real meaning: paths selects from the returned manifest (omit for the full bundle), version reads a past version and carries a publish-safety warning, and app_id is the identifier from the message. development_token is undocumented in both schema and description, a minor gap.

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

Purpose5/5

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

The description states a precise verb+resource+scope: it returns the complete currently published source of an existing app, keyed by app_id from the user's message. It distinguishes itself from siblings like get_app_status and list_apps by defining exactly what source, schema, and context are returned.

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

Usage Guidelines4/5

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

Usage context is clear (call with the app_id in the person's message) and it explains the version parameter's purpose, including a warning that republishing a past version reintroduces a bad publish. It does not explicitly name alternative sibling tools (e.g., get_app_status vs get_app_context) for comparison, so it stops short of full routing guidance.

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

get_app_statusGet app statusA
Read-only
Inspect

Returns where an app stands: created and never published, ready, or failed with the reason. For when the person asks whether their app is up, or whether a reserved app ever got content -- publish already returns the final status, and nothing stays pending after it.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesthe app id to check

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
reasonNoset when status is failed
statusYes"created" for an app that hasn't been published yet, otherwise "ready" or "failed" -- so no status means work in progress

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description adds real behavioral context beyond them: the discrete state model and the guarantee that nothing stays pending after publish. It does not mention auth requirements or polling behavior, which would have pushed it higher.

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

Conciseness4/5

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

Front-loads the return states, which is the most important information, and the routing note follows. The second sentence is a dense em-dash run-on, but no sentence is wasted.

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

Completeness4/5

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

An output schema exists, so return values need not be spelled out, and the description correctly focuses on state semantics and routing. It is essentially complete for a single-parameter status read, with only minor gaps around staleness/polling expectations.

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

Parameters3/5

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

Only one parameter (app_id) with 100% schema description coverage, so the schema fully documents it. The description adds no format, source, or lookup guidance for the id beyond what the schema states, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('returns where an app stands') and enumerates the exact returnable states: created/never published, ready, or failed with the reason. It also explicitly distinguishes itself from the sibling `publish`, which returns the final status, so an agent can route between them without opening a schema.

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

Usage Guidelines4/5

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

Gives concrete triggering contexts ('whether their app is up', 'whether a reserved app ever got content') and an implicit exclusion via publish ('publish already returns the final status, and nothing stays pending after it'). It does not mention list_apps or get_app_context as alternatives, but the primary when-to-use is clear.

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

get_deploy_instructionsGet deploy instructionsA
Read-only
Inspect

Returns the Cloche deploy contract, its authoring rules and less common publishes, and the icon rule. For when you are about to publish a new app.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
instructionsYesthe Cloche artifact deploy contract: runtime SDK, schema rules

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the scope of returned content (contract, authoring rules, less common publishes, icon rule), but says nothing about behavior beyond that — no auth requirements, no caching, no mention of the unusual idempotentHint=false. Adequate but not rich.

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

Conciseness4/5

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

Two short sentences, front-loaded with what is returned before the usage trigger, with no filler. The second sentence is a fragment ('For when you are about to...') that reads slightly awkwardly, keeping it off a 5.

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

Completeness4/5

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

For a no-parameter, read-only tool with an output schema (which carries the return-shape burden), the description covers purpose, content scope, and a usage trigger. Nothing critical is missing, though it could have named the sibling it complements.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. No parameter meaning is missing or misstated.

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

Purpose4/5

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

States a specific verb ('Returns') and concrete resources (the Cloche deploy contract, authoring rules, the icon rule), which is well beyond a restatement of the title. It is implicitly distinguishable from the sibling 'publish' since it returns instructions rather than performing a publish, though it never names that sibling explicitly.

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

Usage Guidelines4/5

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

'For when you are about to publish a new app' gives a clear triggering context that an agent can act on, and it implicitly routes away from the sibling 'publish' tool. It stops short of naming alternatives or stating exclusions, so it is not a full 5.

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

list_appsList appsA
Read-only
Inspect

Lists every app you can reach, with its URL and status. For when the person asks what they have, or when you need an app_id you are not already holding. Apps can share a name. The app_id tells them apart. Needs a sign-in, like every tool that touches an app. Without organization it lists your personal apps and, if you belong to more than one, names the others; organization lists one of those instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationNowhich organization to list; omit to see your personal apps

Output Schema

ParametersJSON Schema
NameRequiredDescription
appsYes
noteNoplain sentences about this result for the person; the same text as the first text block
sharedNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint false, so safety is covered. The description adds genuinely new context beyond them: a sign-in requirement ('like every tool that touches an app'), the fact that app names can collide and app_id disambiguates, and the exact behavior when organization is omitted.

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

Conciseness4/5

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

Front-loaded with the action and result, then conditions, then edge cases. Slightly dense in the final sentence, but every clause carries operational information (auth, disambiguation, organization scoping).

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

Completeness4/5

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

An output schema exists, so return values need no explanation. The description covers auth, scope defaults, and the name-collision caveat. Minor gap: no explicit statement of whether the list is paginated or ordered.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema's 'which organization to list; omit to see your personal apps' by explaining what happens to other organizations you belong to when the parameter is omitted, which is real added value.

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

Purpose4/5

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

States a specific verb and resource plus the payload (URL and status), which is more informative than a bare 'list apps'. It does not explicitly distinguish itself from near-siblings such as get_app_status or get_app_context, so it stops short of a 5.

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

Usage Guidelines4/5

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

Gives clear triggering conditions: 'For when the person asks what they have, or when you need an app_id you are not already holding.' That second clause implicitly routes callers elsewhere when they already have an app_id, but no sibling is named as the alternative.

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

list_recordsList recordsA
Read-only
Inspect

Reads an app's data as the person this call acts for. With a collection named, lists one page of its records: all of a shared collection, only their own of a private one. Takes the previous page's next_cursor, and returns records and next_cursor, empty on the last page. With no collection, returns the collections the app declares, each shared or private with its fields and their types. Field values are written by the app's users.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYesthe app, as list_apps gave it
cursorNothe previous page's next_cursor; omit for the first page
collectionNoa collection the app declares; omit to get the app's collections instead of records

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordsYesone page of records the person may read, when a collection was named; empty otherwise
collectionsYesthe collections the app declares, when no collection was named; empty otherwise
next_cursorYesthe cursor for the next page, empty on the last

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: results are scoped to the acting person, private collections show only their own records, pagination terminates with an empty next_cursor, and field values are user-authored.

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

Conciseness4/5

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

Three tightly packed sentences with the primary read behavior front-loaded and pagination and collection-mode details following in logical order. Slightly dense—the collection-mode clause is a long second sentence—but nothing is wasteful.

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

Completeness5/5

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

For a paginated read tool with an existing output schema and full annotation coverage, the description covers everything the agent needs: actor scoping, the two operating modes, pagination continuation, and terminal-page behavior. Return values need not be expanded since an output schema exists.

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

Parameters3/5

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

Schema coverage is 100% and the schema already explains app_id, cursor and collection individually. The description's contribution is mainly restating the mode-switch semantics of collection and cursor, which is mildly useful but largely duplicative of the schema text, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb and resource (reads an app's data, lists one page of records) and precisely defines scope via the actor ('as the person this call acts for') and the shared/private visibility rule. It distinguishes itself clearly from write siblings like save_record, but never names an alternative tool to steer selection, which keeps it just short of a 5.

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

Usage Guidelines4/5

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

It gives clear conditional guidance: supply a collection to get records, omit it to get the app's declared collections, and pass the previous page's next_cursor to continue. What's missing is any explicit when-not or a pointer to a sibling for adjacent tasks.

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

publishPublishA
Destructive
Inspect

Create an app from its files, or change one.

A change takes app_id and base_version (the version get_app_context or the last publish returned) and only the files and assets that changed. To change part of a file, send edits instead of the file: "edits": [{"path": "index.html", "find": "old text", "replace": "new text"}]. find must occur once, unless count says how many times, and a miss refuses the publish and says what it found. Without base_version a publish replaces every file. A stale base is refused, so someone else's change is reloaded rather than overwritten. An app is named by an app_id from a reply or list_apps, never found by name.

A create omits app_id and takes intent. Files are a single client-side page: index.html plus css/js, plain text, no build step, no server. A picture, font or sound is an asset: listed in assets with its sha256 and byte count, and the reply says where to PUT its bytes before publishing again. Changes start from the files get_app_context returned, not the HTML at the app URL. Files carry literal angle brackets.

Every call takes work_context (goal, current_state, decisions, open_work, verification, known_issues; no credentials, transcripts, or stored records) and summary (one line of 200 characters or fewer, in the person's words). When work stops unpublished, checkpoint_app saves that context with the exact base_version.

An app that stores data uses window.cloche and declares collections in schema. get_deploy_instructions returns the runtime API, the purpose-built AI surface, the authoring rules, and the less common publishes: rename, reserve an address before the files exist, share or invite while creating, slug, icon.

A local folder with server code (Flask, Express, SQLite, login routes, database URLs) is rewritten into this shape before publishing. Its server is neither uploaded nor run, its credentials are dropped, and no auth is invented: window.cloche and schema replace them. A rewrite of any existing tool, including a browser localStorage app, keeps every persisted entity and field from the source store, including optional fields and nested groups such as folders, as schema collections and fields, and adds no feature the source lacked.

Data from a private or external source travels as data_publication with the files, never as rows in files or work_context: the collections and fields the app reads and the recipe of read-only tool calls that produces them. Its shape is the example get_deploy_instructions returns. Those collections are shared in schema, and the app reads them through window.cloche.data like stored ones.

Cloche runs the recipe for each person who opens the app with that person's own access to the source, so everyone sees what they can already see there. No model or generated code runs it. An owner's publish goes live; an editor's reading anything new waits for approval at the Data address this call returns, where the owner can keep a copy.

A changed source, argument, selection, collection, or field is a new publication: the files go again with the complete publication details.

The result's bundle_bytes is what the app's files now total, for checking the change. An app far smaller than before was sent truncated, not edited. get_app_context with version returns a past version. Its files published against the live base_version put a damaged live version back.

Files are live only when this call returns ready.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNowhen creating: a Tabler icon name saying what the app is, e.g. list-check. An unknown name is read by its words, then the app name
nameNodisplay name; with app_id and no files: rename
roleNofor a grant share, user or editor; for a link, omit or user -- a link cannot be editor
slugNofull label on rename; creation adds the organization handle. Earlier names open until removed
editsNowith base_version, change part of a file without sending it whole
filesNothe app bundle's files, inline
shareNowhen creating: how to share it once live: "link", "public", or "grant" by subject_or_email; omit to keep it private
app_idNoomit to create; otherwise the app_id from a reply or list_apps
assetsNobinary files (images, fonts, audio, video) by path, sha256 and byte count; the reply says where to PUT the bytes before a second publish
intentNowhen creating: what the app is for, in the author's own words
schemaNocollections this app stores; needs files on create; omit for an app that stores nothing. A replace takes the whole schema again
summaryNoone line of 200 characters or fewer, naming what this is or what changed, in the words the person would use for it
base_versionNothe version get_app_context or your last publish returned; files may then carry only what changed
organizationNowhen creating: which organization to create it in; omit to use your personal one
work_contextYescompact continuation state for the next session: no credentials, transcripts, or stored app records
removed_pathsNopaths to delete from the version named by base_version
contract_versionNo
data_publicationNowith files: the collections and fields this app reads from a source, and the recipe of read-only tool calls that produces them; never rows
subject_or_emailNowho to invite when share is "grant": their email address, or their Cloche account id
development_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYesthe app's own URL; it stays private unless you shared it
nameNo
app_idNo
reasonNoset when status is "failed" with what stopped the publish or "awaiting_upload" with the next step to finish the upload
statusNo"ready" when the files are live, "failed" when nothing went live, "reserved" when this call only took the address and there are no files yet, "awaiting_upload" when this call went no further than naming the bytes it needs -- nothing is live
uploadsNoset when status is awaiting_upload: a signed url per asset that takes its raw bytes by PUT. The same publish arguments sent again then complete it
versionNothe version this publish put live, and the base_version of the next change to this app
data_urlNowhere the owner keeps a copy, and approves a data update that waits
deploy_idNo
share_urlNothe link people open, when share was "link"; the app's own URL stays private
access_noteNoset on every publish while the app is private with nobody invited and no link, so only its owner can open it; this result's own message already says it
asset_bytesNowhat this app's assets total now, against asset_cap_bytes
bundle_bytesNowhat this app's files total now, against bundle_cap_bytes
asset_cap_bytesNo
continue_promptNousually absent today; when present, a short message the person can paste into any agent to keep working
bundle_cap_bytesNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds substantial extra context: 'Without base_version a publish replaces every file', 'a stale base is refused', an edit 'miss refuses the publish', 'Files are live only when this call returns ready', and truncated bundles can be detected via bundle_bytes. This goes well beyond what the annotations provide.

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

Conciseness3/5

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

The create/change distinction is front-loaded, but the body is a dense, fragment-heavy wall of text that mixes creation rules, rewrite policy, data_publication mechanics, and return-value notes. For a 20-parameter tool length is defensible, yet many sentences could be trimmed or moved to parameter descriptions for scanability.

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

Completeness4/5

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

Given the complexity and the presence of an output schema, the description covers nearly everything an agent needs: create vs change, base_version discipline, assets, schema collections, data_publication, summary/work_context, and rewrite rules. Only minor fields (contract_version, development_token) are left unaddressed, so it is close to complete.

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

Parameters4/5

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

Schema description coverage is 90%, so the baseline is 3, but the prose adds cross-parameter meaning the schema cannot: app_id is 'never found by name', base_version is cross-referenced to get_app_context, edits require base_version, and assets require a second publish to PUT bytes. A couple of params (contract_version, development_token) remain unexplained in both places.

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

Purpose5/5

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

The opening 'Create an app from its files, or change one' states a specific verb (create/change) and resource (app) and immediately splits the two modes. The description also distinguishes this tool from siblings by scope (checkpoint_app saves context when work stops unpublished; get_app_context reads versions) so an agent can route without opening schemas.

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

Usage Guidelines5/5

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

It names alternatives with the condition that selects them: 'To change part of a file, send edits instead of the file', and 'When work stops unpublished, checkpoint_app saves that context'. It also clarifies that an app is identified by app_id from list_apps, and that get_deploy_instructions covers rarer publishes (rename, reserve, share), giving explicit routing.

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

save_recordSave recordA
Destructive
Inspect

Saves a record in a collection an app declares, as the person this call acts for, the way the app's own page does. With no id it adds a record and returns it. With an id and the etag list_records gave it, it replaces only the fields sent on that record, only if it is unchanged since, and returns it. The previous values of those fields are not kept. A person changes only records they may edit. Field values are written by the app's users. With no id, a repeated call adds another record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNothe record to edit, as list_records gave it; omit to add a record
etagNothe record's etag from list_records, required with id
app_idYesthe app, as list_apps gave it
fieldsYesthe record's fields, as the collection declares them; an edit takes only the fields to change
collectionYesa collection the app declares

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYesthe stored record

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations it discloses concrete behavioral traits: field replacement is partial, prior values "are not kept" (destructive consequence), edits are gated by "records they may edit" (permission model), and a repeated no-id call "adds another record" (non-idempotency, corroborating idempotentHint=false). This is rich, non-redundant behavioral context for a mutation tool.

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

Conciseness4/5

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

The add-vs-edit behavior is front-loaded and every sentence carries information about semantics or constraints. It is slightly dense and the two sentences both opening with "With no id" create mild redundancy, but nothing is wasted.

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

Completeness5/5

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

For a mutation tool with five parameters and a non-trivial add/edit duality, the description covers modes, concurrency (etag), destructive partial replacement, permissions, and idempotency. Since an output schema exists, return-value explanation is correctly omitted, leaving nothing essential missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the id/etag pairing and optimistic-concurrency intent, and clarifies that fields "takes only the fields to change" on edit. This goes beyond the schema's field-level descriptions.

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

Purpose4/5

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

The description states a specific verb and resource ("Saves a record in a collection an app declares") and clearly splits the two operating modes: add when no id, field-level replace when id+etag are supplied. It references list_records for the etag, implying the read/write pairing, but never explicitly names a sibling it is not, so differentiation 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.

Usage Guidelines4/5

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

It gives clear conditions for each mode ("With no id it adds a record", "With an id and the etag list_records gave it, it replaces only the fields sent") and the precondition for the etag coming from list_records. It does not name an alternative tool to use instead or state when not to call it, so guidance is contextual rather than exhaustive.

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

set_accessSet accessA
Destructive
Inspect

Changes who can reach an app. For when the person asks to share, invite, or take that back. Apps start private. Modes: public or private, signup, anyone-with-the-link, revoke-link, grant by exactly one name, id, or email, or revoke-grant by id or email. Access "signup" opens the app to anyone who signs up, for when the person asked for that. A stranger sees only its join page, and whoever joins enters as user. A link can open and save, never change it -- letting someone change it takes an invite by name or address. Role user is the ordinary invite; editor lets them change the app. A name grant keeps stronger access the account already has. A new email invite sends mail; an account id or name grant does not. A missing or ambiguous name is refused without naming or guessing accounts. A link takes expires: never, 24h, or 7d, so it stops working on its own; access "set-link-expiry" with the link_id from get_access changes that later. Making a link returns a link_id with the URL; stopping that link later needs the id, and the URL will not do. Stopping a link (access "revoke-link") ends that one link for everyone holding it. It does not make the app private or touch other links; get_access lists which links exist. Stopping a link that was already stopped answers that it isn't one of this app's live links -- the first call having worked, so the link is already off rather than stopping it having failed. Making a link twice yields two live links, so a call that timed out may have made one; get_access shows it. An email invitation needs a Cloche sign-in with that address: an account opens it now, a new one after early-access approval. The platform owns their way in, so the app needs no login or code-entry screen. Taking access back is "revoke-grant" with the subject_or_email from get_access, which lists everyone under grants. A revoked account stays refused on this app, even when public or by link, until invited again.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNofor a grant, user or editor; for a link, omit or user -- a link cannot be editor
accessYes
app_idYesthe app to change sharing on
expiresNofor link or set-link-expiry; omit on link means never
link_idNowhich link to stop or retime, as set_access returned it or get_access lists it; required for revoke-link and set-link-expiry
languageNofor signup, the join page's language; omit keeps the current
subject_nameNogrant only: 1-200 characters; complete consecutive name words, ignoring case and repeated whitespace, or their handle before the @
subject_or_emailNoemail address, or an account id as get_access lists it; a handle goes in subject_name

Output Schema

ParametersJSON Schema
NameRequiredDescription
roleNorole applied to the resolved account
accessYesthe mode this call applied, not the app's state; get_access reports the state
link_idNothis link's id; stopping the link later needs it, and the URL will not do
share_urlNothe link people open for anyone-with-the-link access; the app's own URL stays private
account_idNoresolved account for a name grant, an internal id
expires_atNowhen the minted or updated link stops working, RFC3339; omit or null means it does not expire on its own
stopped_linksNohow many share links making the app private just stopped; those links no longer open the app for anyone holding one

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare destructive=true and idempotent=false, and the description goes well beyond them: it explains that calling link twice yields two live links (a timed-out call may have made one), that revoking an already-revoked link returns a benign 'not a live link' answer rather than an error, that revoke-link does not make the app private or touch other links, and that email invites require a Cloche sign-in with that address. This is exactly the operational context an agent needs for a multi-mode mutation tool.

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

Conciseness3/5

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

The purpose is front-loaded and every paragraph is on-topic, but the text is a ~350-word prose wall with no structure and visible redundancy ('access "signup" opens the app to anyone who signs up, for when the person asked for that' restates the earlier mode list). An agent can use it, but a mode-keyed list would deliver the same content in half the space.

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

Completeness5/5

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

For an 8-parameter, 8-mode mutation tool with an output schema available, the description covers the remaining gaps: mode selection, prerequisite flows to get_access, error-call semantics, and revocation persistence ('A revoked account stays refused on this app... until invited again'). Nothing essential to correct invocation is missing.

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

Parameters4/5

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

Schema coverage is already 88%, so the baseline is 3; the description adds real meaning on top, clarifying that a link can never be editor, that a name grant preserves stronger access the account already holds, that link_id from set_access/get_access is required downstream, and that expires governs when a link stops working on its own. It stops short of full per-field coverage (e.g. language and subject_name constraints live only in the schema).

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

Purpose5/5

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

States a specific verb and resource ('Changes who can reach an app') and then enumerates all eight access modes, so an agent knows exactly what surface this tool controls. It is clearly distinguished from the read-side sibling get_access, which it repeatedly names as the listing counterpart.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('For when the person asks to share, invite, or take that back') and repeatedly routes the agent to alternatives: get_access to list links or grants, set-link-expiry to retime a link, revoke-link vs revoke-grant for the two different removal cases. When-not conditions are also covered, e.g. 'A link can open and save, never change it -- letting someone change it takes an invite'.

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

upload_assetUpload assetA
Idempotent
Inspect

Stores one binary file's bytes for a later publish, for a client that cannot make an HTTP PUT to the signed url publish returns. Takes the asset's path in the app and its content as standard base64. Returns the sha256 and bytes that name this path in assets on the next publish.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesthe asset's path in the app, as publish will name it
app_idNothe app to upload into
content_base64Yesthe file's raw bytes encoded as standard base64
development_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
bytesYes
sha256Yes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=false, and the description is consistent with them. It adds useful behavioral context beyond the annotations: the two-step lifecycle (bytes stored now, named in assets on the next publish) and the return payload (sha256 and byte count). It does not mention auth requirements or size limits, which is the only gap.

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

Conciseness5/5

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

Three sentences, front-loaded with the core purpose, then the usage condition, then the return behavior. No filler and each sentence carries distinct information.

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

Completeness4/5

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

Covers purpose, when to use, and the return values despite an output schema existing, and the flow through publish is clear. The only shortfall is guidance around the optional app_id and development_token parameters (auth/scoping), which neither the description nor the partial schema coverage addresses.

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

Parameters3/5

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

Schema description coverage is 75%, so the schema largely documents path, app_id, and content_base64 already. The description restates those semantics ('path in the app', 'content as standard base64') without adding format, encoding, or size constraints beyond what the schema says. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Stores one binary file's bytes for a later publish') and immediately distinguishes itself from the publish sibling by scoping to clients that cannot make an HTTP PUT to the signed url publish returns. An agent can tell exactly what this does and how it differs from publish without opening either schema.

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

Usage Guidelines5/5

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

Provides an explicit when-to-use condition: it exists for clients that cannot perform the HTTP PUT to the signed URL that publish returns. This effectively names the alternative (direct upload via publish's signed url) and the condition that selects this tool instead, leaving nothing to inference.

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

write_company_definitionCompany definition changeA
Destructive
Inspect

Changes one file of this organization's definitions, live for every member's agent at once. action create writes a new file from content. edit applies edits, each an exact find and its replace, with count when find occurs more than once. move gives the file the path in to. remove deletes it. Files are Markdown, YAML or SQL, and OWNERS, which says who may change which path. Returns the change, the file's owners, and its problems with other files. A path OWNERS gives to someone else is refused with their name. Any member may write under proposed/, which holds proposals an owner accepts by moving them out.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNothe new path, for move
pathYesthe file's path, like metrics/net-revenue.md
editsNofor edit, replacements matched against the file as it is now
actionYescreate, edit, move or remove
contentNothe whole file, for create
if_matchNofor edit, move or remove, the etag a read returned: refused when the file changed since, and needed to accept a proposal
organizationNoan organization id, for a person in several organizations

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
actionYes
ownersYes
problemsYes
change_idYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations (destructive, non-idempotent, not read-only): it discloses that changes are live for all members at once, that unauthorized paths are refused 'with their name,' the proposed/ workflow, and what the response returns (change, owners, cross-file problems). This is unusually rich behavioral context.

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

Conciseness4/5

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

One dense paragraph, front-loaded with the purpose and effect. Every sentence carries information, though some clauses ('move gives the file the path in to') are terse to the point of awkwardness and could be bulleted for scannability.

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

Completeness5/5

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

Covers the full operational picture: action semantics, permission/ownership rules, the proposal workflow, concurrency via etags, and cross-file validation. With an output schema present, return-value explanation is a bonus rather than a necessity, and nothing an agent needs is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds workflow meaning the schema does not convey, notably that if_match is 'needed to accept a proposal' and how edit/count behave. It reinforces rather than merely repeats the parameter docs.

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

Purpose4/5

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

States a specific verb and resource with clear scope: it 'changes one file of this organization's definitions, live for every member's agent at once.' An agent immediately understands this is a mutation tool. It does not name the sibling read_company_definitions, so the read/write routing is left implicit.

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

Usage Guidelines4/5

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

Explains when each action applies (create from content, edit with find/replace, move via 'to', remove) and lays out the permission model, including who may write where and when if_match is required to accept a proposal. It never explicitly contrasts with read_company_definitions, so alternative selection is inferred rather than 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.

  1. 2 tool updates
    • Addedcompany_metrics_and_definitions
    • Removedread_company_definitions

Publisher details

Operator
Cloche · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
A Cloche account is required. Sign-in happens through OAuth when you connect.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Publish what your agent just built to a durable link, with immutable versions, a diff between any two, and comments on the page itself.
    63 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Publish HTML or markdown artifacts (reports, dashboards, demos) as instant shareable links with TTL expiry, social preview cards, and optional password protection. Works with the hosted service or a self-hosted instance.
    1
    15 npm
    13
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables publishing folders, HTML files, or locally/SSH-reachable apps to public Cloudflare URLs, with tools for deploying, exposing ports, managing private links, rotating keys, and inspecting logs.
    13
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.