Skip to main content
Glama

Server Details

Read and structure notes, projects, tasks, and pages in the xTiles visual workspace.

Ownership verified
Status
Healthy
Uptime
9.6% over 55 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 39 tools

Disambiguation4/5

The large tool set is mostly well-separated: read/get/list/update/delete operations target distinct resources (pages, groups, tiles, tasks, planners, collections, calendar), and the three 'create_tiles_from_markdown_*' variants are clearly differentiated by destination (view vs my planner vs project planner). Some pairs remain close (get_view_content vs get_project_content vs get_collection_content; get_project_structure as a prerequisite hub; the five markdown-creation tools), but descriptions make the boundaries usable.

Naming Consistency5/5

Every tool uses the 'xtiles_' prefix followed by a consistent snake_case verb_noun pattern (create_, get_, list_, update_, delete_, search_, set_, reset_, patch_, move_). Verb choices are standard and uniform throughout, so the naming is highly predictable.

Tool Count3/5

39 tools is heavy and sits at the upper end even for a broad product. The surface legitimately spans many domains (projects, pages, groups, tiles, tasks, planners, collections, navigation, workflows), but the five near-parallel markdown-creation tools and multiple content-read variants push granularity beyond what most tasks need.

Completeness3/5

Coverage is strong for pages, groups and tasks (full create/read/update/delete), and planners are read+write. However, there is no project update/delete, and collections can only be read (get_collection_content) with no tools to create/update/delete collection rows — a notable gap for a core xTiles feature the descriptions themselves reference.

Available Tools

39 tools
xtiles_create_notificationA
Destructive
Inspect

Create an in-app notification for the owner of the account you are working in, so they learn the work is done when they come back to it. It appears in their own notification feed inside xTiles: there is no recipient parameter and nothing is sent to anyone else. Call this AFTER you have finished all the work for the request, not before or mid-way. Call it once per place you touched (a project, or the Daily page), with one combined summary covering everything you did there — do not call it once per individual task/tile. If you touched two separate places, call this twice, once per place, each with its own url and summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesA ready-to-use absolute https URL on xtiles.app to the page where the work is visible (you build this URL yourself — the backend does not resolve a destination from ids). Must point at a page (e.g. the Daily planner for pure task creation, or the project/page you changed), not a specific tile. Example: https://xtiles.app/...
textYesThe notification's full display text. Compose it yourself: who (the agent), what it did, and where, with a count if it summarizes several changes in one place. One short sentence — the app shows at most 100 characters and cuts off the rest, and longer text is rejected. Examples: "Claude added 3 tasks to the \"Marketing\" project", "Claude updated \"Launch\" project: tile + 5 tasks".
titleNoOptional short headline shown above `text` in the phone notification: what happened, in a few words. At most 60 characters, one line. Do not put the agent's name here (the app already shows which agent sent it). Examples: "Daily Brief is ready", "Sprint plan updated".
agent_sourceNoA raw label identifying the calling client, e.g. "Claude". Unrecognized values are accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sentYes

TDQS

A4.1/5.0
Behavior3/5

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

Adds real behavioral context beyond annotations: no recipient parameter, nothing sent externally, and the 100-character display cutoff. However, the annotations declare destructiveHint=true and idempotentHint=false, and the description says nothing about why this benign-sounding notification is flagged destructive or what happens on repeated calls. It also omits any rate-limit or failure behavior. Useful additions, but the destructive/idempotency profile is left unaddressed.

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

Conciseness4/5

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

Front-loaded with purpose, then timing, then batching, all in short sentences with concrete examples. It is longer than strictly necessary — the final sentence about touching two places restates the preceding 'once per place' rule — 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 no explanation, and the batching/composition semantics are fully covered. The remaining gap is behavioral: no mention of the destructive flag, idempotency (duplicate notifications if called twice for the same place), or any limits, which is somewhat surprising given the annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters with examples and length limits. The description adds the relevant clarification that there is no recipient parameter and that url/summary are keyed to a single 'place', but it largely restates what the schema carries. 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 (create an in-app notification) and immediately scopes it: it targets the account owner's internal notification feed, not external recipients. No sibling tool competes for this role, and the description makes that distinct role explicit in the first sentence.

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 unambiguous timing ('AFTER you have finished all the work... not before or mid-way') and explicit batching rules: once per place touched, one combined summary, call twice if two places were touched. This is exactly the when/when-not guidance an agent needs and leaves nothing to inference.

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

xtiles_create_page_groupA
Destructive
Inspect

Group existing pages together in the tab bar. Provide the view_ids of the pages to group (from xtiles_get_project_structure) and an optional title and color. Each page must currently be at the top level of the tab bar — to move a page already inside a different group, use xtiles_move_pages first (or after creating this group). Omit color to use the app default; the group can be recoloured later with xtiles_update_page_group. Returns the created group with its new id.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoColour — one of: DEFAULT, LAVENDER, RED, ORANGE, YELLOW, GREEN, DARK_GREEN, LIGHT_BLUE, BLUE, PURPLE, PINK, GRAY, BEIGE. Omit to create the group with no colour set (not the same as `DEFAULT`, which is a real colour value).
titleNoTitle for the new group. Omit to create it untitled.
view_idsYesIDs of the pages to put in the new group, in the order they should appear (from xtiles_get_project_structure). Each must be a page id already at the top level of the tab bar, not already inside another group.
projectIdYesProject ID (use xtiles_list_projects to discover).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
colorNo
pagesNo
titleNo
systemNo
group_typeNo
is_archivedNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (destructive, non-idempotent, openWorld), but the description adds the top-level precondition and side-effect context not present in structured fields. It also clarifies the default-color behavior and the returned id. It does not elaborate on the destructive nature beyond the precondition, so 4 rather than 5.

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

Conciseness5/5

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

Front-loaded with the core action, followed by parameter sourcing and then constraint/alternative guidance in a logical flow. Every sentence earns its place; nothing is redundant with the structured fields.

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

Completeness5/5

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

For a creation tool with an output schema, the description covers everything needed: what it does, required vs optional inputs, sourcing of view_ids, the top-level precondition, and the fallback path via xtiles_move_pages. Return values are covered by the output schema.

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 all four parameters in detail, making 3 the baseline. The description adds marginal value by pointing to xtiles_get_project_structure as the source for view_ids, but its "Omit color to use the app default" phrasing is slightly looser than the schema's "no colour set (not the same as DEFAULT)" clarification.

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 ("Group existing pages together in the tab bar") with clear scope. It is immediately distinguishable from siblings like xtiles_move_pages and xtiles_update_page_group, which it names as different operations. No ambiguity about what the tool creates.

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

Usage Guidelines5/5

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

Explicitly states the precondition (each page must be at the top level of the tab bar) and routes the agent to xtiles_move_pages when the page is already grouped. It also names xtiles_update_page_group for later recolouring, so the when/when-not/alternative guidance is complete.

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

xtiles_create_project_from_markdown
Destructive
Inspect

Create a new xTiles project from Markdown. The first # heading becomes the project title; ## headings become views; ### headings become tiles. At least one ## heading is required — a project with no views cannot be created. Returns the new project_id, view_id, and resource_url (a link that opens the created project in the xTiles web app; null if no view was created). If workspaceId is omitted, the first available workspace is used automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesMarkdown content for the new project. The first `#` heading becomes the project title; `##` headings become views (at least one required); `###` headings become tiles. Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. Write each tile with its colour and style (`@color` / `@colorSize` under its `###`), so it arrives designed; which values to choose is in `xtiles://guide/markdown/design` — read it after the overview, before writing.
workspaceIdNoWorkspace ID to create the project in. If omitted, the first available workspace is used automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
view_idNo
project_idNo
resource_urlNo
xtiles_create_tasksA
Destructive
Inspect

Create one or more tasks. Provide projectId to create in a project, or omit for your personal tasks. If no assignees are explicitly specified, always call xtiles_get_current_user first to get the current user's id, then include them as an assignee by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasksYesArray of tasks to create
projectIdNoProject ID. Omit to create in your personal tasks (/my/tasks).

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true, so the safety profile is covered. The description adds non-obvious behavior the annotations do not: the default-assignee rule and the prerequisite ordering of xtiles_get_current_user, which materially changes how the agent calls the tool.

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

Conciseness5/5

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

Three sentences, front-loaded with the action and scoping, then the prerequisite rule. No filler, no restatement of the name or 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?

An output schema exists, so return values need not be explained, and all parameters are documented. The description covers creation scope and the assignee default. It does not mention the required 'title' on each task or any batch/partial-failure behavior, which is a minor gap for a multi-item create.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds meaning on top of the schema: projectId omission means personal tasks, and assignees default to the current user when unspecified. That is genuine semantic value beyond the field 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?

States a specific verb+resource ('Create one or more tasks') and immediately scopes it (project vs. personal). This clearly distinguishes it from update_task/delete_tasks siblings, though it does not explicitly name any sibling. The core purpose is unambiguous.

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

Usage Guidelines4/5

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

Gives concrete conditional guidance: include projectId for project tasks, omit for personal tasks, and when no assignees are supplied, call xtiles_get_current_user first and default to the current user as assignee. That is a real workflow rule. It stops short of naming alternative creation paths (e.g. create_tiles_from_markdown_*), so not a 5.

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

xtiles_create_tiles_from_markdown_by_view
Destructive
Inspect

Append tiles generated from Markdown into an existing xTiles view (page) by viewId alone. Preferred over xtiles_create_tiles_from_markdown_in_view — no projectId needed. Returns the affected view_id, tiles (each created tile's id and resource_url — a deep link that opens the page focused on that tile), and parent_resource_url (a link that opens the page the tiles were created on). New tiles arrive at one default size, in import order — arrange them next (xtiles_get_page_layout, then xtiles_set_page_layout for the ids returned here); how, and whether the page already passes, is in xtiles://guide/markdown/design.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`.
markdownYesMarkdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. The target already exists, so continue its palette: read its tile colours (`xtiles_get_tile_styles`) before writing, and write the same colours inline (`@color` / `@colorSize`). Rules: `xtiles://guide/markdown/design`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tilesNo
view_idNo
tile_idsNo
parent_resource_urlNo
xtiles_create_tiles_from_markdown_in_my_planner
Destructive
Inspect

Append tiles generated from Markdown into your personal planner for the period containing the given date. Returns the affected view_id, tiles (each created tile's id and resource_url — a deep link that opens the page focused on that tile), and parent_resource_url (a link that opens the page the tiles were created on). New tiles arrive at one default size, in import order — arrange them next (xtiles_get_page_layout, then xtiles_set_page_layout for the ids returned here); how, and whether the page already passes, is in xtiles://guide/markdown/design.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesAnchor date (ISO 8601, e.g. "2026-04-24"). Tiles are created in the planner range containing this date.
periodYesPlanner period: e.g. "day", "week", "month".
markdownYesMarkdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. The target already exists, so continue its palette: read its tile colours (`xtiles_get_tile_styles`) before writing, and write the same colours inline (`@color` / `@colorSize`). Rules: `xtiles://guide/markdown/design`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tilesNo
view_idNo
tile_idsNo
parent_resource_urlNo
xtiles_create_tiles_from_markdown_in_project_planner
Destructive
Inspect

Append tiles generated from Markdown into a project planner for the period containing the given date. Returns the affected view_id, tiles (each created tile's id and resource_url — a deep link that opens the page focused on that tile), and parent_resource_url (a link that opens the page the tiles were created on). New tiles arrive at one default size, in import order — arrange them next (xtiles_get_page_layout, then xtiles_set_page_layout for the ids returned here); how, and whether the page already passes, is in xtiles://guide/markdown/design.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesAnchor date (ISO 8601, e.g. "2026-04-24"). Tiles are created in the planner range containing this date.
periodYesPlanner period: e.g. "day", "week", "month".
markdownYesMarkdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. The target already exists, so continue its palette: read its tile colours (`xtiles_get_tile_styles`) before writing, and write the same colours inline (`@color` / `@colorSize`). Rules: `xtiles://guide/markdown/design`.
projectIdYesProject ID whose planner is the target.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tilesNo
view_idNo
tile_idsNo
parent_resource_urlNo
xtiles_create_view_from_markdown
Destructive
Inspect

Create a new view (page) inside an existing xTiles project from Markdown. The first ## heading becomes the view title; ### headings become tiles. Returns the new view_id and resource_url (a link that opens the created page in the xTiles web app). Use xtiles_list_projects to find the projectId.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesMarkdown content for the new view. The first `##` heading becomes the view title; `###` headings become tiles. Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. Write each tile with its colour and style (`@color` / `@colorSize` under its `###`), so it arrives designed; which values to choose is in `xtiles://guide/markdown/design` — read it after the overview, before writing.
projectIdYesProject (document) ID to create the new view in (use xtiles_list_projects to discover).

Output Schema

ParametersJSON Schema
NameRequiredDescription
view_idNo
project_idNo
resource_urlNo
xtiles_delete_pageA
DestructiveIdempotent
Inspect

Delete a page from the project's tab bar. Get viewId from xtiles_get_project_structure. Only pages listed by xtiles_get_project_structure are valid here. A planner day is not one of them: the API answers 404 for a page in another project and 409 for one inside this project’s planner. Read a planner day with xtiles_get_planner_content and write to it with xtiles_create_tiles_from_markdown_in_project_planner. THIS IS PERMANENT — there is no undo through this API. If the goal is just to get the page out of the way rather than gone for good, use xtiles_update_page with is_archived: true instead — reversible, unlike this. Approval is handled outside this call (the client asks the user before it runs), so once the user has named which page to delete, delete it rather than asking again in chat; ask only when you cannot tell which page they meant.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewIdYesView ID of the page to delete (from xtiles_get_project_structure).
projectIdYesProject ID (use xtiles_list_projects to discover).

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYes
view_idYes

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: annotations declare destructiveHint=true, but the description specifies THIS IS PERMANENT with no undo, gives concrete error semantics (404 for another project, 409 for planner day), and explains the approval workflow. This is rich behavioral context that the annotations cannot convey.

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

Conciseness4/5

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

Front-loads the core action and key constraints, and the information is well-organized. However, it is somewhat long and includes some repetition (e.g., 'only pages listed by xtiles_get_project_structure are valid' restates the viewId source), and the final clause about approval could be tighter.

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?

Complete for a destructive mutation tool: it covers prerequisites (viewId source, project scope), error conditions, alternatives for reversible archiving, planner-day handling, and user-approval expectations. With an output schema present, return values needn't be described.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters (viewId and projectId, including their sources). The description reinforces that viewId must come from xtiles_get_project_structure, adding a small amount of validation context, but mostly repeats schema information.

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

Purpose5/5

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

States a specific verb (Delete) and resource (a page from the project's tab bar), and distinguishes itself from closely related siblings like xtiles_update_page (archive), xtiles_get_planner_content, and planner tile creation tools. An agent can identify the exact 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 Guidelines5/5

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

Provides explicit when/when-not guidance: only pages from xtiles_get_project_structure are valid, planner days are excluded with specific error codes (404/409), and it names alternatives (xtiles_update_page with is_archived: true for reversible removal, xtiles_get_planner_content / xtiles_create_tiles_from_markdown_in_project_planner for planner days). It also clarifies approval handling and when to ask the user again.

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

xtiles_delete_page_groupA
DestructiveIdempotent
Inspect

Delete a page group from the tab bar. Get groupId from xtiles_get_project_structure. DELETING A GROUP DOES NOT DELETE ITS PAGES — they are not removed, only ungrouped: they return to the top level of the tab bar. This is a safe, everyday tidy-up operation; there is no need to warn the user their pages will be lost, because they will not be. If the goal is to get the group and its pages out of the tab bar while keeping them grouped, use xtiles_update_page_group with is_archived: true instead — reversible, and keeps the grouping, unlike this. Never target a group whose system flag is true (the planner) — the API refuses it with a 409, and it should not be attempted.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID (from xtiles_get_project_structure). Never target a group whose `system` flag is true — see xtiles_get_project_structure.
projectIdYesProject ID (use xtiles_list_projects to discover).

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYes
group_idYes
pages_deletedYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds substantial context beyond them: it specifies exactly what is destroyed (the group only, pages are ungrouped, not lost), warns of the 409 refusal on system groups, and points to a reversible sibling. This is unusually rich behavioral disclosure.

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

Conciseness5/5

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

Front-loaded with the action, then semantics, then the alternative, then the hard constraint. Every sentence earns its place despite the length; the corrective all-caps clause is justified because the naive assumption (deleting a group deletes pages) is the main risk.

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 not be explained. Given a mutation tool with two required params and rich annotations, the description covers everything an agent needs to invoke it safely and correctly.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented there, including the groupId source and the system-flag caveat, so the schema does the heavy lifting — baseline 3. The description mostly repeats this guidance rather than adding new syntax or format detail.

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

Purpose5/5

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

States a specific verb and resource (delete a page group from the tab bar) and immediately clarifies scope by distinguishing it from what it is not — pages survive. An agent can tell this apart from xtiles_delete_page and xtiles_update_page_group 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?

Gives explicit when-to-use (safe tidy-up), names the alternative verb and exact parameter for the adjacent goal (xtiles_update_page_group with is_archived: true, reversible), and states a hard when-not (never target a group whose system flag is true). Nothing is left to inference.

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

xtiles_delete_tasksA
DestructiveIdempotent
Inspect

Delete one or more tasks by IDs. Provide projectId for project tasks, or omit for personal tasks. Deletion is permanent and cannot be undone. Approval is handled outside this call — the client asks the user before it runs. So when the user has named what to delete, delete it rather than asking again in chat; ask only when you cannot tell WHICH item they meant.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdsYesArray of task IDs to delete
projectIdNoProject ID. Omit to use personal tasks (/my/tasks).

Output Schema

ParametersJSON Schema
NameRequiredDescription
failed_task_idsYes
deleted_task_idsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description earns credit by reinforcing 'permanent and cannot be undone' and by disclosing the approval-handling model (client-side confirmation outside this call), which is behavioral context annotations cannot express.

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

Conciseness4/5

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

Front-loads the action, then scope, then consequences, then the confirmation policy. All sentences carry useful information, though the closing sentence about when to ask in chat is longer than strictly necessary.

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

Completeness5/5

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

With an output schema present, return values need no explanation. The description covers scope, permanence, batch deletion, and the human-approval contract, leaving nothing an agent needs in order to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented, including the 'omit for personal tasks' semantics. The description restates this without adding syntax, ID format, or batch-size guidance, so 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?

Specific verb plus resource: 'Delete one or more tasks by IDs.' It names the key input (IDs) and the scoping dimension (project vs personal), so an agent can immediately distinguish it from xtiles_create_tasks and xtiles_update_task.

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 explicit context: supply projectId for project tasks, omit for personal tasks, and states the confirmation policy (client asks the user, so don't re-ask in chat when the target is named). It does not compare against sibling delete tools (e.g. xtiles_delete_page) or state when not to delete, so it stops short of a 5.

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

xtiles_get_collection_contentA
Read-onlyIdempotent
Inspect

Fetch rows from an xTiles collection (database) view as CSV with pagination. Prerequisite: call xtiles_get_view_content for the collection page to learn its collection.views[] and pick a collection_view_id. The CSV header reflects the columns visible in that collection view; column types and IDs come from the collection schema. Note: server-side filtering is not yet exposed via this endpoint — apply any required filters client-side after fetching, or page through results until the desired rows are found.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 1-based — the first page is 1. Defaults to 1.
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`. This must be the viewId of a collection (database) page. Use `xtiles_get_view_content` first to discover the schema and pick a `collection_view_id`.
per_pageNoPage size, 1–100. Defaults to 100.
time_zoneNoIANA time zone (e.g. "Europe/Kyiv") used to render date/datetime fields.
collection_view_idYesID of a specific collection view (table, board, gallery, etc.) within the collection. Discover via `xtiles_get_view_content` — it returns `collection.views[]` with their IDs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
contentNo
view_idNo
paginationNo
project_idNo
collection_view_idNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/no-destructive, so the bar is lower. The description still adds genuinely useful behavioral facts beyond them: output is CSV, the header reflects the chosen view's visible columns, pagination applies, and no server-side filtering exists yet. It does not cover rate limits or CSV encoding details, keeping it short of a 5.

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

Conciseness5/5

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

Three sentences, front-loaded with the action and format, followed by the prerequisite and the filtering caveat. No filler; each sentence carries information the agent needs.

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 not be described. Combined with annotations and a fully documented schema, the description supplies everything else an agent needs — prerequisites, format, filtering limitation — with nothing material missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining that collection_view_id determines which columns appear in the CSV header and that column types/IDs come from the collection schema — real semantic context for two of the five parameters.

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 (Fetch), resource (rows from an xTiles collection/database view), and output format (CSV with pagination) in the first clause. It is clearly distinguishable from the sibling xtiles_get_view_content, which it explicitly casts as a prerequisite rather than an alternative.

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 prerequisite chain: call xtiles_get_view_content to read collection.views[] and pick a collection_view_id. It also states when-not/how-to-work-around: server-side filtering is unavailable, so filters must be applied client-side or via paging.

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

xtiles_get_current_userA
Read-onlyIdempotent
Inspect

Get the profile of the currently authenticated user (id, name, email). Call this when you need to assign tasks to the current user and no explicit assignee was specified.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
emailNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the returned field list, which is largely redundant given the output schema, and says nothing about auth prerequisites or error behavior.

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

Conciseness5/5

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

Two tight sentences: the purpose leads and the usage condition follows, with no filler or repetition.

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 an output schema covering return values and annotations covering the safety profile, the description only needs purpose and usage, both of which are present. It could still note that this is the canonical way to obtain the current user's id rather than searching, but nothing essential is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 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 (Get) and resource (profile of the currently authenticated user) and enumerates the returned fields. The 'currently authenticated user' scoping clearly distinguishes it from siblings like search_users and get_user_timezone.

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 a concrete when-to-use condition: assigning tasks to the current user when no explicit assignee was specified. It does not name alternatives (e.g., search_users) or state when not to use it, so it falls short of the explicit-alternatives bar.

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

xtiles_get_docs
Read-onlyIdempotent
Inspect

Fetch an xTiles guide/documentation document by its xtiles://guide/... URI. The same documents are also exposed as MCP resources — use this tool when your client cannot read resources directly. Before generating Markdown for any *_from_markdown tool, read xtiles://guide/markdown/overview (and /canvas, /collections, /blocks) to get the syntax. xtiles://guide/markdown/design holds the colours, styles, layout and tab colours created content takes.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesThe `xtiles://guide/...` URI of the document to fetch. These are the same URIs served as MCP resources — the tool is the fallback for clients that cannot read resources directly.

Output Schema

ParametersJSON Schema
NameRequiredDescription
uriYes
textYes
xtiles_get_page_layout
Read-onlyIdempotent
Inspect

Read the grid layout of an xTiles page (view) by viewId: every tile with its title and grid position (x, y, w, h), plus the grid bounds (max width/height) and minimum tile size. Coordinates use the xTiles grid — (x, y) is the tile’s top-left corner and (w, h) is its size, in grid cells. Use this to inspect tile placement and valid bounds before repositioning with xtiles_set_page_layout. Which colours, styles, sizes and positions to use: xtiles://guide/markdown/design.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gridYes
tilesYes
view_idYes
xtiles_get_planner_contentA
Read-onlyIdempotent
Inspect

Read planner content for a given period (day/week/month) anchored on a date. Provide projectId for a project planner, or omit for your personal planner.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesAnchor date (ISO 8601, e.g. "2026-04-24"). The planner returns the range containing this date.
periodYesPlanner period: e.g. "day", "week", "month".
projectIdNoProject ID. Omit to read your personal planner (/my/planner/content).

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleNo
periodNoPlanner period: e.g. "day", "week", "month".
contentNo
view_idNo
templateNo
date_rangeNo
project_idNo
page_existsNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds only the period/anchor semantics and the personal-vs-project planner distinction, which is modest added context rather than rich behavioral detail.

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

Conciseness4/5

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

Two tight sentences with no waste; the read scope is front-loaded and the parameter guidance follows. Slightly more than strictly needed but efficient.

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 read-only tool whose annotations cover the safety profile and which has an output schema, the description conveys what an agent needs: resource, period, and the personal/project branch. Nothing essential 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%, so the schema already documents all three parameters including the projectId omission rule. The description largely restates what the schema provides, so the baseline 3 is appropriate with no meaningful 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: 'Read planner content', scoped to a period anchored on a date. It does not explicitly differentiate from siblings like get_project_content or get_collection_content, but the resource is named clearly enough to distinguish.

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?

The description explains the projectId branch ('Provide projectId for a project planner, or omit for your personal planner'), which is usage context. However, it gives no explicit when-to-use vs. alternatives or exclusions relative to the many get_* siblings, leaving that to inference.

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

xtiles_get_project_contentA
Read-onlyIdempotent
Inspect

Read the combined content of a project (concatenated views) with cursor-based pagination. Use start_view_id + limit to page through a large project. Response includes view_ids covered in this page, any inaccessible_view_ids, and next_view_id (pass as start_view_id to fetch the next page; absent when done).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of views, 1–20. Defaults to 5.
projectIdYesProject ID (use xtiles_list_projects to discover).
start_view_idNoCursor: start reading from this view ID. Use `next_view_id` from the previous response for pagination.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleNo
contentNo
view_idsNo
project_idNo
next_view_idNoPass this value as start_view_id to fetch the next page.
inaccessible_view_idsNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: cursor semantics, that next_view_id must be fed back as start_view_id, and that it is absent when paging is done. It does not discuss access-control implications of inaccessible_view_ids beyond naming the field.

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

Conciseness5/5

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

Two dense sentences, front-loaded with the core action and scope before the pagination mechanics. Every clause carries information an agent needs; nothing is filler.

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

Completeness5/5

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

An output schema exists, so return values need not be explained, yet the description still summarizes the page payload (view_ids, inaccessible_view_ids, next_view_id) to close the pagination loop. Combined with full annotation coverage and 100% schema coverage, nothing needed to invoke this correctly 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 coverage is 100%, so both optional parameters and their constraints (limit 1–20, default 5; projectId discovery via xtiles_list_projects; start_view_id as cursor) are already fully documented. The description restates the start_view_id/limit pairing without adding syntax or edge-case detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Read the combined content of a project') and clarifies the scope as 'concatenated views,' which implicitly separates it from xtiles_get_view_content and xtiles_get_project_structure. It stops short of naming those siblings explicitly, so an agent must infer the boundary.

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 gives concrete pagination guidance ('Use start_view_id + limit to page through a large project'), which is implied usage rather than an explicit when-to-use/when-not statement. It never says when to prefer this over xtiles_get_view_content or xtiles_get_collection_content.

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

xtiles_get_project_structureA
Read-onlyIdempotent
Inspect

Read the structure of a project's tab bar: every page and group, top to bottom, with their ids. Call this FIRST — every other tool in this group (xtiles_update_page, xtiles_delete_page, xtiles_create_page_group, xtiles_update_page_group, xtiles_delete_page_group, xtiles_move_pages) needs a viewId and/or groupId that only this call gives you. Each entry has kind: "PAGE" (a bare page, with id, title, view_type, color, is_archived) or kind: "GROUP" (a group of pages, with id, title, color, group_type, system, is_archived, and pages). Archived pages/groups (is_archived: true) are listed here too, not filtered out — this is the only way to find one again to unarchive it with xtiles_update_page/xtiles_update_page_group. A group with system: true is product-managed (the planner) — its pages field is OMITTED entirely, not an empty list, and you must never rename it, delete it, or move pages into or out of it. The API refuses such an attempt with a 409, but do not even try: treat every system: true group as read-only and invisible to the write tools in this group. Those omitted pages are planner days, addressed by date instead of by id: read one with xtiles_get_planner_content (period + date + this projectId), write to it with xtiles_create_tiles_from_markdown_in_project_planner.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject ID (use xtiles_list_projects to discover).

Output Schema

ParametersJSON Schema
NameRequiredDescription
tabsNo

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: archived entries are NOT filtered out and this is the only way to find one to unarchive; system groups omit the `pages` field entirely rather than returning an empty list; writes to them yield a 409 and should not be attempted. This is exactly the kind of trait an agent could not infer from structure.

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?

Despite its length, the definition is front-loaded with the purpose and every sentence conveys a distinct rule (ordering, archived visibility, system-group omission, 409 behavior, planner routing). No filler or restated structured data.

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

Completeness5/5

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

An output schema exists, yet the description still usefully explains the return shape (kind PAGE vs GROUP and their fields) precisely to justify the system-group edge case. For a read tool with rich annotations and a full 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.

Parameters4/5

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

Schema coverage is 100% and the single projectId is already documented, so the schema carries the load. The description nonetheless ties projectId to downstream usage (planner reads use 'period + date + this projectId'), adding modest context 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 specific verb and resource ('Read the structure of a project's tab bar: every page and group, top to bottom, with their ids') and distinguishes itself from the six sibling write tools it names. An agent can tell exactly what this returns without opening the schema.

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

Usage Guidelines5/5

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

Explicitly says 'Call this FIRST' and explains why: every other tool in the group needs a viewId/groupId that only this call provides, then names each dependent sibling. It also routes the planner case to xtiles_get_planner_content and xtiles_create_tiles_from_markdown_in_project_planner.

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

xtiles_get_taskA
Read-onlyIdempotent
Inspect

Get a single task by ID. Provide projectId for project tasks, or omit for personal tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID
projectIdNoProject ID. Omit to use personal tasks (/my/tasks).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
titleNo
due_dateNo
priorityNo
assigneesNo
completedNo
created_atNo
created_byNo
descriptionNo
due_date_timeNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds only the namespace-switching behavior of projectId, and says nothing about permissions, error behavior, or lookup failures.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and followed by the one conditional that matters. Nothing is padded or repeated.

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 described, and annotations cover the safety profile. For a two-parameter read tool this is essentially complete, with only the absence of sibling routing leaving a small gap.

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

Parameters3/5

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

Schema coverage is 100% and both parameters already carry descriptions, including the 'omit to use personal tasks' rule. The description restates that same rule rather than adding format, ID source, or validation detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Get a single task by ID'), which cleanly separates it from list_tasks, update_task, and delete_tasks. It does not name a sibling explicitly, but the singular 'single task by ID' framing is unambiguous.

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?

The description gives a conditional scoping rule (supply projectId for project tasks, omit for personal tasks), which is real usage guidance, but it never says when to prefer this tool over siblings like list_tasks or get_project_content. Usage is implied rather than framed against alternatives.

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

xtiles_get_tile_styles
Read-onlyIdempotent
Inspect

Read the color styling of every tile on an xTiles page (view) by viewId: each tile with its title, color (palette background color) and color_size (color variant / border style). Both are null when the tile has no palette color. Use this to inspect current colors before recoloring with xtiles_set_tile_styles. It is also where the palette of an existing page is read before adding tiles to it, so the new tiles continue those colours — see xtiles://guide/markdown/design.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tilesYes
view_idYes
xtiles_get_user_timezoneA
Read-onlyIdempotent
Inspect

Get the current user's timezone and local datetime. Call this before creating, updating, or filtering tasks by due date — it provides the timezone context needed to interpret relative expressions like "tomorrow", "next Monday", or "end of day" correctly. When resolving future dates use the timezone IANA string, not utc_offset_minutes — the offset may differ for future dates due to DST transitions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
timezoneYesIANA timezone name.
current_datetimeYesCurrent local datetime with its RFC 3339 UTC offset.
utc_offset_minutesYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive), so the description earns credit for adding operational context beyond them: it discloses that the result carries both an IANA `timezone` string and `utc_offset_minutes`, and warns that the offset can be wrong for future dates due to DST transitions, telling the agent which field to use.

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

Conciseness5/5

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

Front-loaded with the outcome, then the usage trigger, then the DST caveat. Three sentences, each carrying distinct information with no redundancy or filler.

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

Completeness5/5

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

With an output schema present, the description needn't detail return values, yet it supplies the one non-obvious caveat (which field to trust for future dates). Zero params plus full annotations mean nothing else is missing for correct invocation.

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 per the rubric the baseline is 4. The description correctly adds no parameter explanation because there is nothing to explain.

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 extremely clearly: 'Get the current user's timezone and local datetime.' The scenario framing (before creating/updating/filtering tasks by due date) implicitly and effectively separates it from the closest sibling xtiles_get_current_user, which returns profile data instead.

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

Usage Guidelines4/5

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

Gives an explicit trigger — 'Call this before creating, updating, or filtering tasks by due date' — which is exactly the when-to-use an agent needs. It does not name an alternative tool for the same job or state any when-not condition, 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.

xtiles_get_view_contentA
Read-onlyIdempotent
Inspect

Read the content of a specific xTiles view (page) by viewId. For a regular page: returns the title plus markdown body. For a collection (database) page: returns the collection schema — its attributes (columns) with id, title, and type, plus the list of collection views (id, type, title). To fetch the actual rows of a collection, follow up with xtiles_get_collection_content using one of the listed collection view IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleNo
accessNo
contentNo
view_idNo
collectionNo
project_idNo
project_titleNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the return shape differs by page type (markdown body vs collection schema with attribute ids/titles/types), which the agent needs to interpret the response.

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, each earning its place, with the core action front-loaded and the page-type branching plus the follow-up tool placed after it. No filler.

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

Completeness5/5

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

For a single-param read tool with full annotation coverage and an output schema, the description supplies everything else an agent needs: the two return modes and the escalation path to the sibling tool for collection rows.

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's own description already explains URL extraction and programmatic discovery, so the description adds little beyond 'by viewId'. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Read the content of a specific xTiles view (page) by viewId') and then distinguishes two distinct behaviors (regular page vs collection page), which no sibling does. An agent can tell it apart from xtiles_get_collection_content or xtiles_get_project_content immediately.

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 routes the agent: for collection rows, 'follow up with xtiles_get_collection_content using one of the listed collection view IDs.' That names the alternative and the condition that selects it, so there is no inference required.

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

xtiles_get_workflowA
Read-onlyIdempotent
Inspect

Fetch a prepared xTiles workflow by id — a recipe the xTiles team wrote for this kind of request. Discover ids with xtiles_list_workflows first. The returned Markdown describes suggested steps, not commands: treat it as reference material, use your own judgement about what actually fits the request, and adapt, reorder or skip steps as needed. Walk the user through what the recipe proposes and carry out the steps they agree to by calling the relevant xtiles_* tools. If a recipe proposes something recurring (e.g. a daily brief), ask the user before setting anything up, and be clear that any schedule would run on your side — this server runs no schedules.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesThe id of the workflow to fetch, exactly as returned by `xtiles_list_workflows` (e.g. "planner_setup"). Call `xtiles_list_workflows` first to discover the available ids.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
titleYes
enabledNo
internalNo
whenToUseYes
instructionsYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds substantial non-obvious context: the returned Markdown is advisory reference material, not commands to execute verbatim. It also discloses that the server runs no schedules, so any recurring setup is client-side — a real behavioral caveat the annotations cannot express.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by discovery guidance and then interpretation rules; every sentence carries weight. It runs long (five sentences) and the trailing scheduling caveat drifts slightly beyond the fetch operation, but nothing is filler and the ordering is logical.

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, yet the description still supplies the crucial interpretive framing (Markdown recipe = suggestions) that an agent cannot infer from the schema. With annotations covering safety and the schema covering the parameter, nothing needed to call and correctly use this tool 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 parameter is thoroughly documented, including an example id and the discovery pointer. The description's 'by id' and its reference to xtiles_list_workflows largely restate the schema, so it earns the baseline 3 rather than more.

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 ('Fetch a prepared xTiles workflow by id') and goes further by defining what a workflow actually is ('a recipe the xTiles team wrote for this kind of request'). This makes it immediately distinguishable from siblings like xtiles_list_workflows, xtiles_get_docs, and xtiles_get_project_content.

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

Usage Guidelines5/5

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

Explicitly routes the agent: 'Discover ids with `xtiles_list_workflows` first' names the prerequisite tool and the condition that selects it. It also gives downstream usage guidance — walk the user through the recipe, execute agreed steps via `xtiles_*` tools, and ask before setting up anything recurring.

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

xtiles_list_calendar_eventsA
Read-onlyIdempotent
Inspect

List events from the Google and Outlook calendars connected to the user's xTiles account. Read-only — events cannot be created, edited or deleted here. With no dates, returns today. An event is returned when ANY part of it falls inside the window, so a meeting running from 23:30 to 00:30 appears on both days — unlike xtiles_list_tasks, where the same parameters match a single due date. An empty list means no events in that window; it does NOT mean the user has no calendar connected, and this tool cannot tell the two apart. Tasks live in xtiles_list_tasks — call both to see a whole day.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 1-based — the first page is 1. Defaults to 1.
per_pageNoEvents per page, 1–100. Defaults to 50.
due_date_afterNoInclusive lower bound of the window. A calendar day (yyyy-MM-dd) resolves to the start of that day in the user's timezone, so the named day IS included. Defaults to the start of today.
due_date_beforeNoExclusive upper bound of the window; the named day is NOT included. To cover a single day D, pass due_date_after=D and due_date_before=D+1. Defaults to one day after the lower bound, so calling with no dates at all returns today. The window may not exceed 92 days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
paginationNo
paywall_noticeNoPresent when the result was limited to part of the connected calendars.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/destructive, but the description adds real behavioral context beyond them: the overlap rule (any part of an event inside the window puts it on both days), the ambiguity of an empty list vs. no calendar connected, and the read-only guarantee restated as user-facing scope.

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?

Four short sentences, front-loaded with what the tool does, then scope, then defaults, then edge-case semantics. No sentence is filler; each carries a distinct operational fact.

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

Completeness5/5

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

With an output schema present, return values need no explanation, and the description covers the remaining gaps an agent needs: default window, overlap behavior, empty-result ambiguity, and the complementary tasks tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3; the description nevertheless adds window semantics not in the schema — the ANY-overlap matching rule and the explicit contrast with xtiles_list_tasks' single-due-date matching. It does not add further detail on page/per_page, which the schema already handles.

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

Purpose5/5

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

States a specific verb (list) and resource (events from the user's connected Google and Outlook calendars), and explicitly contrasts the tool with xtiles_list_tasks. An agent can distinguish it from the ~37 siblings without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit defaults ('with no dates, returns today'), states what an empty result does and does not mean, and routes the agent to call both this and xtiles_list_tasks for a complete day view. When-to-use and when-to-combine are both covered.

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

xtiles_list_projectsA
Read-onlyIdempotent
Inspect

List all workspaces with their projects. Returns workspace names/IDs and the projects inside each. Use this to discover available projectId values for other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
workspacesNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds useful behavioral context about the returned data (workspace names/IDs plus contained projects), which goes beyond what the annotations state.

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 short sentences, front-loaded with what is returned, then the navigation hint. No filler, no repetition of the title or annotations.

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

Completeness5/5

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

With annotations covering safety, an output schema covering the return structure, and no parameters to explain, the description only needs to convey purpose and usage — and it does both. 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.

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. The description's note about discovering projectId values is a helpful clarification of the tool's role even though it is not a parameter.

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 and clarifies the unusual shape of the result set: workspaces together with the projects nested inside each. It is unambiguous what the tool returns, but it never contrasts itself with the sibling xtiles_search_projects, which an agent could plausibly confuse with a 'list projects' tool.

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

Usage Guidelines4/5

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

"Use this to discover available projectId values for other tools" gives a concrete, actionable usage context rather than leaving the agent to guess. It stops short of exclusions — it does not say when to prefer xtiles_search_projects or xtiles_get_project_content over this listing.

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

xtiles_list_tasksA
Read-onlyIdempotent
Inspect

List tasks with optional filters. Provide projectId to list project tasks, or omit for your personal tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 1-based — the first page is 1. Defaults to 1.
sortNoSort field. Allowed values: due_date, created_at, priority. Defaults to "due_date".
orderNoSort order (default: "asc")
per_pageNoPage size, 1–100. Defaults to 20.
priorityNoTask priority. Allowed values: LOW, MEDIUM, HIGH.
completedNoFilter by completed status. Defaults to false if omitted (only open tasks are returned).
projectIdNoProject ID. Omit to list your own tasks (/my/tasks).
due_date_afterNoInclusive lower bound — tasks due on or after this date. A calendar day (yyyy-MM-dd) is resolved to the start of that day in the user's timezone, so the named day IS included. Combine with due_date_before to form a half-open range [after, before) — same convention as Google Calendar timeMin/timeMax.
due_date_beforeNoExclusive upper bound — tasks due strictly before this date; the named day is NOT included (a calendar day yyyy-MM-dd is resolved to the start of that day in the user's timezone). To cover a whole single day D, pass the NEXT day as the bound: due_date_after=D and due_date_before=D+1 (e.g. tasks due "today" = after today AND before tomorrow). Passing the same date to both bounds returns nothing (empty range).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
paginationNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, so safety is covered. The description adds the crucial scope behavior that projectId toggles between project tasks and personal tasks — a behavioral default beyond what annotations provide. It doesn't mention pagination defaults or the fact that only open tasks are returned by default, though the schema covers the latter.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the core action and directly followed by the critical scoping rule. No wasted words.

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 9 optional parameters, no required ones, and a complete schema, the description covers the essential scope decision and filter hint. With an output schema present, return values need not be described. The only minor gap is not mentioning pagination or default sort, but these are well-covered in the schema.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are fully documented. The description adds the explicit projectId semantics (project vs personal) which, although also in the schema, reinforces the branching logic. Filters are implied but not enumerated, which is acceptable given schema completeness.

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

Purpose5/5

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

States a specific verb+resource ('List tasks') and immediately disambiguates scope: project tasks via projectId vs. personal tasks when omitted. This scoping detail distinguishes it from siblings like xtiles_get_task and xtiles_list_projects.

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

Usage Guidelines4/5

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

Gives clear context for the primary branching decision (projectId present vs. absent) and lists optional filters. However, it doesn't reference alternatives like xtiles_get_task or xtiles_search_projects, nor when-not to use this tool.

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

xtiles_list_workflowsA
Read-onlyIdempotent
Inspect

List the pre-built xTiles workflows — curated, step-by-step recipes the team has prepared (recurring digests, weekly reviews, briefs, planner/space setup, onboarding, etc.). Call this FIRST — before you start assembling any multi-step process in xTiles by hand — whenever the user wants to set up, automate, schedule, recurring-ly produce, onboard, or "have xTiles do something for them", or asks what xTiles can do automatically. If there is any chance a prepared workflow already covers the request, check here before improvising with individual xtiles_* tools. Returns each workflow id, title, and when to use it — match the request to the closest entry, then call xtiles_get_workflow with that id to see the steps it suggests. If nothing matches, proceed normally with the other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
workflowsYes

TDQS

A4.6/5.0
Behavior4/5

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 covered. The description adds genuine behavioral context beyond that: the response contains each workflow's id, title, and when-to-use note, and it prescribes the follow-up call to xtiles_get_workflow. It does not mention any auth or rate-limit considerations, keeping it short of a 5.

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

Conciseness4/5

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

The critical instruction ('Call this FIRST') is front-loaded and the follow-up action is stated at the end. It is somewhat repetitive in restating the same routing idea twice ('If there is any chance a prepared workflow already covers the request, check here before improvising' after already saying 'Call this FIRST'), which costs a point but does not bury the payload.

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 the description is not obliged to explain return values, yet it still summarizes them (id, title, when to use it) and closes the loop by naming xtiles_get_workflow as the next step. For a zero-parameter discovery tool with full annotation coverage, 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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing parameter-related the description could add, and it correctly spends no space on inputs.

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

Purpose5/5

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

The description states a specific verb and resource ('List the pre-built xTiles workflows') and immediately defines what a workflow is ('curated, step-by-step recipes'), with concrete examples (digests, weekly reviews, briefs, onboarding). It clearly separates this discovery tool from the sibling action tools like xtiles_create_tasks or xtiles_get_workflow.

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

Usage Guidelines5/5

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

It gives an explicit imperative to call this FIRST before assembling multi-step processes by hand, enumerates the triggering intents (set up, automate, schedule, onboard, 'have xTiles do something for them'), and names the alternative path ('proceed normally with the other tools' / improvising with individual xtiles_* tools) when nothing matches. This is close to ideal routing guidance.

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

xtiles_move_pagesA
DestructiveIdempotent
Inspect

Move and/or reorder pages in the tab bar: into a group, out to the top level, or to a new position within their current context. Get view_ids and group_id from xtiles_get_project_structure. Set group_id to a group id to move the pages into that group, or to null to move them to the top level of the tab bar (out of any group). Never target a group whose system flag is true (the planner) — the API refuses it with a 409. Pages already inside a system group cannot be moved at all — the API answers 409. position is OPTIONAL: omit it and the moved pages are appended to the end of the target (the group, or the tab bar when group_id is null) — this is almost always what "add this page to that group" or "move this page out" means, so do not invent a position for those requests. Pass position only when precise placement matters: relative_to_id must be an existing PAGE id (never a group id) and direction is BEFORE or AFTER it. The API answers with no body on success — call xtiles_get_project_structure afterwards if you need to see the resulting tab bar.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesGroup the pages should END UP in: a group id to put them there, or null for the top level of the tab bar (out of any group). This is the destination, never “where they are now” — when you are only reordering pages that already sit inside a group, pass THAT group’s id, because null would move them out of it and still report success. Never a group whose `system` flag is true — see xtiles_get_project_structure.
positionNoWhere within the target (the group, or the top-level tab bar when group_id is null) to place the moved pages. Omit to append to the end of the target — do not invent a position when the user just wants the page(s) added or moved without saying exactly where.
view_idsYesIDs of the pages to move (from xtiles_get_project_structure).
projectIdYesProject ID (use xtiles_list_projects to discover).

Output Schema

ParametersJSON Schema
NameRequiredDescription
movedYes
group_idYes
view_idsYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover destructive/idempotent/openWorld, but the description goes further: it discloses the exact 409 failure conditions for system groups, warns that passing null silently moves pages out of a group while still reporting success, and notes the API returns no body on success along with the recommended follow-up call. This is rich context beyond the structured fields.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause and every sentence carries information (destinations, restrictions, position semantics, response behavior). It is dense and delivered as one long run-on paragraph rather than structured sections, which slightly hurts 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?

With an output schema present, the description needn't explain return values, and it still notes the empty response body. For a 4-parameter mutation tool with a nested position object, the guidance on prerequisites, restrictions, and follow-up is complete enough for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description does add value: it frames group_id as the destination (never the current location), stresses relative_to_id must be a page id never a group id, and clearly marks position as optional-and-usually-omitted. Much of this overlaps the schema text, but the 'do not invent a position' guidance meaningfully sharpens intent.

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 (move/reorder) and resource (pages in the tab bar) with three explicit modes: into a group, out to the top level, or to a new position. This clearly distinguishes it from siblings like xtiles_update_page, xtiles_set_page_layout, or xtiles_move-like group tools.

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

Usage Guidelines5/5

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

Explicitly says where to get view_ids/group_id (xtiles_get_project_structure), when to set group_id to a real id vs null, when to omit position (append is 'almost always' correct), and when position is warranted. It also names the exclusion cases (system-flag groups, pages already in a system group) and the resulting 409.

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

xtiles_patch_view_contentA
Destructive
Inspect

Edit a page in place by search-and-replace over the markdown that xtiles_get_view_content returns. Workflow: (1) read the page, (2) copy the exact substring to change, (3) send replacements. All replacements apply atomically against the markdown as read; old_str must match exactly once. An empty new_str deletes what old_str matched. AMBIGUITY IS NOT YOURS TO RESOLVE: when the text the user wants changed appears more than once and they did not say which one — or said "all of them" — quote the occurrences back with their surrounding text and ask, before sending anything. Making each old_str unique by adding a neighbouring word satisfies this tool and still edits every occurrence, which is the outcome the user was never asked about. HEADING LEVELS ARE NOT ORDINARY MARKDOWN — read this before editing any heading: ## is the page title and CANNOT be patched at all; ### is a tile heading — patch it to rename a tile; #### and ##### are H1 and H2 heading blocks INSIDE a tile. Never write # or ## in new_str, and never change a ### to fewer hashes: that says "start a new page here", and is rejected. Changing #### to ##### is accepted but does nothing — the stored heading size is kept. ONE old_str MAY COVER SEVERAL BLOCKS, and may cross tile headings — quote the whole stretch you want to change, heading and body together, and the edits are worked out per block. It may also cover only PART of a block; the rest of that block is kept. Reordering works: write the blocks in the new order and they are moved, not rebuilt. Merging two blocks into one line, or splitting one across two lines, works as well. EDIT NORMALLY: paragraphs, bulleted and numbered lists, checklists, tasks (including their assignee), quotes, code blocks, headings, an image caption, and a link label or url. CANNOT be changed through the text (they are kept as they are, so an edit around them is safe): a file block, a divider, and everything markdown does not spell out — a link display style, a table column type or colour. TABLES: quote the rows you are changing, or the whole table. Column types and options are kept. A table cannot become non-table content — delete it and add the new content instead. Collection (database) pages cannot be patched at all — their rows are edited through the collection API. Returns the updated markdown on success; on rejection the error says what to do instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewIdYesView ID of the page to edit.
replacementsYesList of search-and-replace operations applied atomically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
contentYes
view_idYes
project_idYes
applied_operations_countYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare a destructive, non-idempotent mutation; the description adds far more: replacements apply atomically, `old_str` must match exactly once, empty `new_str` deletes, ambiguity must be surfaced to the user rather than auto-resolved, headings have title/tile/H1/H2 semantics, and certain elements (file blocks, dividers, link styles, column types) are preserved. This is substantial 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.

Conciseness4/5

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

Front-loads the mechanism and workflow before the detailed rules, and almost every sentence encodes a distinct constraint. It is long and leans on all-caps emphasis, but the complexity of the patch semantics justifies most of the length.

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

Completeness5/5

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

For a destructive, non-idempotent patch tool with an output schema, all the critical caveats are covered: matching rules, deletion semantics, heading restrictions, element-level editability, and the return/error contract. 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.

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 beyond the schema: one `old_str` may span several blocks and cross tile headings, may cover only part of a block with the rest preserved, and supports reordering, merging, and splitting. That materially expands how `old_str`/`new_str` are understood.

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 first sentence states an exact verb and mechanism — 'Edit a page in place by search-and-replace over the markdown' — and names the sibling that produces the input (`xtiles_get_view_content`). An agent can distinguish this from a full-document update or a read without opening any schema.

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

Usage Guidelines5/5

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

Gives an explicit three-step workflow (read, copy exact substring, send replacements) and clear when-not conditions: collection/database pages cannot be patched at all and must go through the collection API, and tables cannot become non-table content — delete and add instead. Alternatives are named, not inferred.

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

xtiles_reset_tile_stylesA
DestructiveIdempotent
Inspect

Clear the palette color (color and color_size) of the listed tiles on an xTiles page (view). Structural style (icon) and any custom workspace color are left unchanged — this manages only the palette color. Returns the resulting full tile-style state.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`.
tile_idsYesIDs of tiles whose palette color should be cleared (the `tile_id` from xtiles_get_tile_styles).

Output Schema

ParametersJSON Schema
NameRequiredDescription
tilesYes
view_idYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely useful detail beyond that: exactly what state is destroyed (color and color_size), what is preserved (icon, custom workspace color), and that the full tile-style state is returned. Auth requirements and rate limits are still unmentioned.

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

Conciseness5/5

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

Two tight sentences: the action and target are front-loaded, followed by the exclusion clause and the return behavior. No filler or redundancy.

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

Completeness5/5

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

For a destructive mutation tool with full annotation coverage and an output schema, the description supplies everything an agent needs: the exact field set affected, the preserved state, and confirmation that resulting state is returned. Nothing material 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%, with viewId documented including URL extraction and ID discovery, and tile_ids documented including its source (tile_id from xtiles_get_tile_styles). The description's mention of color/color_size clarifies the effect rather than the parameters themselves, so it does not go meaningfully 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 specific verb (clear) plus the exact resource scope (palette color of listed tiles on a page/view) and names the affected fields. It also enumerates what is NOT touched (icon, custom workspace color), which cleanly separates it from xtiles_set_tile_styles and xtiles_get_tile_styles.

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

Usage Guidelines4/5

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

The scope statement ('this manages only the palette color', icon and custom workspace color unchanged) gives clear context for when this tool is the right one rather than set_tile_styles. It stops short of explicitly naming the alternative tool or stating when-not-to-use, so it is clear but not fully routable.

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

xtiles_search_projectsA
Read-onlyIdempotent
Inspect

Full-text search across projects. Returns matching projects with their views (pages) and highlighted snippets. Use this when the user references a project by name or topic rather than ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 0-based — the first page is 0. Defaults to 0.
sizeNoPage size, 1–100. Defaults to 10.
textYesFree-text query to match project titles / content. To list every project without a query, use xtiles_list_projects.

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectsNo
highlightsNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so safety carries less burden. The description adds useful behavior beyond them: what comes back ('projects with their views (pages) and highlighted snippets') and that matching is full-text over titles/content. Pagination behavior is left to 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.

Conciseness5/5

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

Three short sentences, front-loaded with the operation and result shape before the routing hint. Every sentence earns its place with no filler.

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 an output schema present, return-value details need not be spelled out, and the description still adds the snippet/view context. Pagination defaults and limits live in the schema, so what remains for the description is complete enough to call correctly.

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

Parameters3/5

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

Schema description coverage is 100% and fully documents page, size, and text (including the contrast with xtiles_list_projects). The description adds nothing parameter-specific beyond the general notion of a free-text query, 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?

States a specific verb and resource ('Full-text search across projects') and even describes the result shape ('matching projects with their views (pages) and highlighted snippets'). It does not explicitly name the sibling it should be used instead of (xtiles_list_projects appears only in the schema's text param), so sibling differentiation 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?

'Use this when the user references a project by name or topic rather than ID' gives a clear triggering condition. It stops short of naming the concrete alternative (xtiles_list_projects) or stating exclusions, so it is clear context rather than a full when/when-not map.

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

xtiles_search_usersA
Read-onlyIdempotent
Inspect

Search for people by name or email, among those you share a workspace or project with — this is not a global xTiles user directory. Useful for finding user IDs to assign tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results, 1–50. Defaults to 10.
queryYesSearch query (name or email)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world, and non-destructive, so the safety profile is covered. The description adds a real behavioral constraint the annotations do not: results are scoped to people you share a workspace or project with, meaning zero global results are possible.

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

Conciseness5/5

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

Two compact clauses with no filler; the scope constraint and the not-global warning come first, and the practical use case is last. Every sentence earns its place.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. Scope, exclusions, and purpose are all covered for a simple two-parameter lookup; only edge behavior such as no-match results is unaddressed.

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%, with both query (name or email) and limit (1–50, default 10) documented inline. The description echoes the query semantics but adds nothing about format, matching behavior, or empty results, so it sits at the baseline.

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

Purpose5/5

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

States a specific verb (search) plus resource (people/users) and immediately bounds the scope to shared workspace or project members. This distinguishes it cleanly from a global directory lookup, which no sibling tool covers.

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 excludes the wrong interpretation (not a global directory) and gives a concrete use case — finding user IDs for task assignment. It falls short of naming an alternative tool when the search fails (e.g., get_current_user), so it is strong but not fully routed.

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

xtiles_set_page_descriptionA
DestructiveIdempotent
Inspect

Set (or clear) the description of an xTiles view (page) by viewId. The description is inline Markdown shown under the page title and may span multiple lines. Provide description text to set and show it; pass an empty string to clear and hide it. Returns the resulting description and whether it is shown.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`.
descriptionYesThe page description as inline Markdown (bold, italic, links, etc. are allowed). Line breaks are allowed — the description may span multiple lines. Setting a non-empty value shows the description under the page title. Pass an empty string to clear the description and hide it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
view_idYes
descriptionYes
show_descriptionYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true. The description adds value beyond these by spelling out what 'destructive' means here (empty string clears and hides the description) and its UI placement under the page title.

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 compact sentences with the core action front-loaded. There is mild redundancy where the Markdown/empty-string details repeat the schema, but nothing is padded.

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 simple two-parameter setter with an output schema, the description covers purpose, set/clear behavior, and the return value. It is essentially complete, with only the absence of alternative-tool routing as a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters in full (viewId URL extraction, Markdown format, empty-string clearing). The description's parameter notes largely duplicate the schema rather than adding new semantics, 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?

States a specific verb+resource: 'Set (or clear) the description of an xTiles view (page) by viewId.' The narrow scope makes it distinguishable from broad siblings like xtiles_update_page or xtiles_patch_view_content, though no sibling is named explicitly to sharpen the contrast.

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 usage conditions: provide text to set and show, pass an empty string to clear and hide. It lacks explicit when-not or alternative-tool routing (e.g., vs xtiles_update_page), but the set-vs-clear context is well conveyed.

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

xtiles_set_page_layout
DestructiveIdempotent
Inspect

Reposition tiles on an xTiles page (view). Provide viewId and a list of tiles with their new grid positions (x, y, w, h). Only the listed tiles move; the rest keep their current position. Coordinates use the xTiles grid — (x, y) is the top-left corner and (w, h) the size, in grid cells. Out-of-bounds or overlapping positions are rejected. Returns the resulting full layout. Tip: call xtiles_get_page_layout first to get tile IDs and current positions. Which colours, styles, sizes and positions to use: xtiles://guide/markdown/design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tilesYesTiles to reposition. Each tile_id must be unique; tiles you omit keep their current position. Positions are validated by the server — out-of-bounds or overlapping tiles are rejected.
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gridYes
tilesYes
view_idYes
xtiles_set_tile_styles
DestructiveIdempotent
Inspect

Set the color and/or color_size of one or more tiles on an xTiles page (view). Merges into each tile’s existing style — the tile’s icon and any custom workspace color are preserved. Provide at least one of color/color_size per tile; an omitted field is left unchanged. Returns the resulting full tile-style state. Tip: call xtiles_get_tile_styles first for tile IDs. Which colours, styles, sizes and positions to use: xtiles://guide/markdown/design.

ParametersJSON Schema
NameRequiredDescriptionDefault
tilesYesTiles to recolor. Each tile_id must be unique; tiles you omit keep their current color. Setting merges into the existing style — the tile’s icon and any custom workspace color are preserved.
viewIdYesView ID of an xTiles page. You can also extract it from a page URL — it is the last path segment, whatever the domain, e.g. `https://xtiles.app/6740858058af8a09bf6096e6` → viewId is `6740858058af8a09bf6096e6`. Discover IDs programmatically via `xtiles_list_projects` or `xtiles_get_project_content`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tilesYes
view_idYes
xtiles_update_page
DestructiveIdempotent
Inspect

Update a page in the project's tab bar — rename it, recolour it and/or archive it: provide title, color, is_archived, or any combination. Get viewId from xtiles_get_project_structure. Only pages listed by xtiles_get_project_structure are valid here. A planner day is not one of them: the API answers 404 for a page in another project and 409 for one inside this project’s planner. Read a planner day with xtiles_get_planner_content and write to it with xtiles_create_tiles_from_markdown_in_project_planner. The API answers with no body on success, so there is nothing to return beyond confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoColour — one of: DEFAULT, LAVENDER, RED, ORANGE, YELLOW, GREEN, DARK_GREEN, LIGHT_BLUE, BLUE, PURPLE, PINK, GRAY, BEIGE. Omit to leave the colour unchanged. `DEFAULT` sets that specific colour; it does not clear/reset the colour — there is currently no way to remove a colour once set. Tabs follow a scheme of one or two colours (an ordinary colour on every tab, plus an accent for the main page and groups where there is one, both taken from the project's tile colours); change one tab at a time, each finishing before the next. Scheme and mapping: `xtiles://guide/markdown/design`.
titleNoNew title for the page. Omit to leave the title unchanged.
viewIdYesView ID of the page to update (from xtiles_get_project_structure).
projectIdYesProject ID (use xtiles_list_projects to discover).
is_archivedNoArchive (true) or unarchive (false) — hides/unhides the item in the tab bar without deleting it. Omit to leave the archived state unchanged. Archived items still appear in xtiles_get_project_structure with is_archived: true, which is how to find one again to unarchive it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
updatedYes
view_idYes
xtiles_update_page_group
DestructiveIdempotent
Inspect

Update a page group in the tab bar — rename it, recolour it and/or archive it: provide title, color, is_archived, or any combination. Archiving a group archives it and its pages together. Get groupId from xtiles_get_project_structure. Never target a group whose system flag is true (the planner) — the API refuses it with a 409, and it should not be attempted. The API answers with no body on success, so there is nothing to return beyond confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoColour — one of: DEFAULT, LAVENDER, RED, ORANGE, YELLOW, GREEN, DARK_GREEN, LIGHT_BLUE, BLUE, PURPLE, PINK, GRAY, BEIGE. Omit to leave the colour unchanged. `DEFAULT` sets that specific colour; it does not clear/reset the colour — there is currently no way to remove a colour once set. Tabs follow a scheme of one or two colours (an ordinary colour on every tab, plus an accent for the main page and groups where there is one, both taken from the project's tile colours); change one tab at a time, each finishing before the next. Scheme and mapping: `xtiles://guide/markdown/design`.
titleNoNew title for the group. Omit to leave the title unchanged.
groupIdYesGroup ID (from xtiles_get_project_structure). Never target a group whose `system` flag is true — see xtiles_get_project_structure.
projectIdYesProject ID (use xtiles_list_projects to discover).
is_archivedNoArchive (true) or unarchive (false) — hides/unhides the item in the tab bar without deleting it. Omit to leave the archived state unchanged. Archived items still appear in xtiles_get_project_structure with is_archived: true, which is how to find one again to unarchive it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
updatedYes
group_idYes
xtiles_update_taskA
Destructive
Inspect

Update an existing task. Provide projectId for project tasks, or omit for personal tasks. Only specified fields will be updated.

ParametersJSON Schema
NameRequiredDescriptionDefault
dueNoOptional. New due date. A calendar day (yyyy-MM-dd) creates an all-day task; a datetime (ISO-8601 — naive local time, with offset, or Z, e.g. 2025-06-01T14:00:00 or 2025-06-01T14:00:00+03:00) creates a timed task. A naive value is resolved against the caller's timezone by the backend.
titleNoNew task title text
taskIdYesTask ID
priorityNoNew priority.
assigneesNoNew list of assignees (replaces existing)
completedNoMark task as completed or not
projectIdNoProject ID. Omit to use personal tasks (/my/tasks).
descriptionNoTask description in Markdown format.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
titleNo
due_dateNo
priorityNo
assigneesNo
completedNo
created_atNo
created_byNo
descriptionNo
due_date_timeNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds the useful partial-update contract and the personal-vs-project scoping rule, but says nothing about side effects of a destructive update (e.g. assignee replacement, completion cascades) that would justify the destructive flag.

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 short sentences, zero filler, with the core action and the partial-update guarantee front-loaded before the scoping detail. Appropriately sized for a tool whose parameters are fully documented in 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?

An output schema exists, so return values need no explanation, and the 100%-covered parameter schema handles field-level detail. The description supplies the two things the schema can't: partial-update semantics and the personal-vs-project targeting rule. Minor gap on side effects of the destructive semantics.

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% across 8 parameters, so the schema already documents due-date formats, assignee replacement, Markdown descriptions and the projectId fallback. The description duplicates the projectId guidance rather than adding new semantics; baseline 3 is appropriate.

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

Purpose4/5

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

Specific verb + resource ("Update an existing task"), clearly distinguished from sibling mutators like xtiles_create_tasks and xtiles_delete_tasks by the 'update' verb. It does not explicitly name or contrast a sibling, but the purpose is unambiguous.

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

Usage Guidelines4/5

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

Gives explicit conditional guidance on the key routing decision: supply projectId for project tasks, omit it for personal tasks. It also clarifies the partial-update mode ('Only specified fields will be updated'), so the agent knows this is a patch, not a replace. No alternatives or exclusions beyond that.

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. 8 tool updates
    • Changedxtiles_create_project_from_markdown1 field changed
      • changedInput schema / properties / markdown / description
        Previous value: -"Markdown content for the new project. The first `#` heading becomes the project title; `##` headings become views (at least one required); `###` headings become tiles. Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`."New value: +"Markdown content for the new project. The first `#` heading becomes the project title; `##` headings become views (at least one required); `###` headings become tiles. Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. Write each tile with its colour and style (`@color` / `@colorSize` under its `###`), so it arrives designed; which values to choose is in `xtiles://guide/markdown/design` — read it after the overview, before writing."
    • Changedxtiles_create_tiles_from_markdown_by_view1 field changed
      • changedInput schema / properties / markdown / description
        Previous value: -"Markdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`."New value: +"Markdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. The target already exists, so continue its palette: read its tile colours (`xtiles_get_tile_styles`) before writing, and write the same colours inline (`@color` / `@colorSize`). Rules: `xtiles://guide/markdown/design`."
    • Changedxtiles_create_tiles_from_markdown_in_my_planner1 field changed
      • changedInput schema / properties / markdown / description
        Previous value: -"Markdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`."New value: +"Markdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. The target already exists, so continue its palette: read its tile colours (`xtiles_get_tile_styles`) before writing, and write the same colours inline (`@color` / `@colorSize`). Rules: `xtiles://guide/markdown/design`."
    • Changedxtiles_create_tiles_from_markdown_in_project_planner1 field changed
      • changedInput schema / properties / markdown / description
        Previous value: -"Markdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`."New value: +"Markdown content to convert into tiles. Each top-level heading (`### Title`) typically becomes a separate tile; paragraphs, lists, and code blocks under a heading become its body. Tiles are appended to existing content (not replaced). Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. The target already exists, so continue its palette: read its tile colours (`xtiles_get_tile_styles`) before writing, and write the same colours inline (`@color` / `@colorSize`). Rules: `xtiles://guide/markdown/design`."
    • Changedxtiles_create_view_from_markdown1 field changed
      • changedInput schema / properties / markdown / description
        Previous value: -"Markdown content for the new view. The first `##` heading becomes the view title; `###` headings become tiles. Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`."New value: +"Markdown content for the new view. The first `##` heading becomes the view title; `###` headings become tiles. Full syntax: read resource `xtiles://guide/markdown/overview` or call `xtiles_get_docs`. Write each tile with its colour and style (`@color` / `@colorSize` under its `###`), so it arrives designed; which values to choose is in `xtiles://guide/markdown/design` — read it after the overview, before writing."
    • Changedxtiles_get_docs1 field changed
      • changedInput schema / properties / uri / enum
        Previous value: -[
        -  "xtiles://guide/markdown/overview",
        -  "xtiles://guide/markdown/canvas",
        -  "xtiles://guide/markdown/collections",
        -  "xtiles://guide/markdown/blocks"
        -]New value: +[
        +  "xtiles://guide/markdown/overview",
        +  "xtiles://guide/markdown/canvas",
        +  "xtiles://guide/markdown/collections",
        +  "xtiles://guide/markdown/blocks",
        +  "xtiles://guide/markdown/design"
        +]
    • Changedxtiles_update_page1 field changed
      • changedInput schema / properties / color / description
        Previous value: -"Colour — one of: DEFAULT, LAVENDER, RED, ORANGE, YELLOW, GREEN, DARK_GREEN, LIGHT_BLUE, BLUE, PURPLE, PINK, GRAY, BEIGE. Omit to leave the colour unchanged. `DEFAULT` sets that specific colour; it does not clear/reset the colour — there is currently no way to remove a colour once set."New value: +"Colour — one of: DEFAULT, LAVENDER, RED, ORANGE, YELLOW, GREEN, DARK_GREEN, LIGHT_BLUE, BLUE, PURPLE, PINK, GRAY, BEIGE. Omit to leave the colour unchanged. `DEFAULT` sets that specific colour; it does not clear/reset the colour — there is currently no way to remove a colour once set. Tabs follow a scheme of one or two colours (an ordinary colour on every tab, plus an accent for the main page and groups where there is one, both taken from the project's tile colours); change one tab at a time, each finishing before the next. Scheme and mapping: `xtiles://guide/markdown/design`."
    • Changedxtiles_update_page_group1 field changed
      • changedInput schema / properties / color / description
        Previous value: -"Colour — one of: DEFAULT, LAVENDER, RED, ORANGE, YELLOW, GREEN, DARK_GREEN, LIGHT_BLUE, BLUE, PURPLE, PINK, GRAY, BEIGE. Omit to leave the colour unchanged. `DEFAULT` sets that specific colour; it does not clear/reset the colour — there is currently no way to remove a colour once set."New value: +"Colour — one of: DEFAULT, LAVENDER, RED, ORANGE, YELLOW, GREEN, DARK_GREEN, LIGHT_BLUE, BLUE, PURPLE, PINK, GRAY, BEIGE. Omit to leave the colour unchanged. `DEFAULT` sets that specific colour; it does not clear/reset the colour — there is currently no way to remove a colour once set. Tabs follow a scheme of one or two colours (an ordinary colour on every tab, plus an accent for the main page and groups where there is one, both taken from the project's tile colours); change one tab at a time, each finishing before the next. Scheme and mapping: `xtiles://guide/markdown/design`."
  2. 1 tool update
    • Changedxtiles_create_notification1 field changed
      • addedInput schema / properties / title
        Added value: +{
        +  "description": "Optional short headline shown above `text` in the phone notification: what happened, in a few words. At most 60 characters, one line. Do not put the agent's name here (the app already shows which agent sent it). Examples: \"Daily Brief is ready\", \"Sprint plan updated\".",
        +  "maxLength": 60,
        +  "type": "string"
        +}
  3. 39 tool updates
    • First observedxtiles_create_notification
    • First observedxtiles_create_page_group
    • First observedxtiles_create_project_from_markdown
    • First observedxtiles_create_tasks
    • First observedxtiles_create_tiles_from_markdown_by_view
    • First observedxtiles_create_tiles_from_markdown_in_my_planner
    • First observedxtiles_create_tiles_from_markdown_in_project_planner
    • First observedxtiles_create_view_from_markdown
    • First observedxtiles_delete_page
    • First observedxtiles_delete_page_group
    • First observedxtiles_delete_tasks
    • First observedxtiles_get_collection_content
    • First observedxtiles_get_content_by_link
    • First observedxtiles_get_current_user
    • First observedxtiles_get_docs
    • First observedxtiles_get_page_layout
    • First observedxtiles_get_planner_content
    • First observedxtiles_get_project_content
    • First observedxtiles_get_project_structure
    • First observedxtiles_get_task
    • First observedxtiles_get_tile_styles
    • First observedxtiles_get_user_timezone
    • First observedxtiles_get_view_content
    • First observedxtiles_get_workflow
    • First observedxtiles_list_calendar_events
    • First observedxtiles_list_projects
    • First observedxtiles_list_tasks
    • First observedxtiles_list_workflows
    • First observedxtiles_move_pages
    • First observedxtiles_patch_view_content
    • First observedxtiles_reset_tile_styles
    • First observedxtiles_search_projects
    • First observedxtiles_search_users
    • First observedxtiles_set_page_description
    • First observedxtiles_set_page_layout
    • First observedxtiles_set_tile_styles
    • First observedxtiles_update_page
    • First observedxtiles_update_page_group
    • First observedxtiles_update_task

Publisher details

Operator
XTILES INC.
Operator website
https://xtiles.app
Vendor relationship
First-party
Trust center
Not applicable
Restrictions
Requires an xTiles account; sign-in via OAuth

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to read and edit a spatial canvas board of notes, tasks and ideas through the running desktop app, creating, updating, linking, grouping and arranging nodes, importing files, focusing the view and undoing changes so edits appear instantly and stay reversible.
    25
    6 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to read and write to a personal knowledge vault of markdown notes, projects, and tasks, with tooling for search, capture, daily logs, and project management across different AI tools.
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Provides an agent-first note-taking system designed from the ground up for AI collaboration. Organizes your notes as a local vault of ordinary markdown files with semantic note types.
    28
    14 npm
    10
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources