Integration details
Description
xTiles turns your ChatGPT conversations into organized, visual projects. Instead of losing research, plans, or ideas in scattered chat threads, ask ChatGPT to structure them directly into pages, tasks, and layouts inside your xTiles workspace. Turn a brainstorm into a project board, a trip idea into a planning page, or messy notes into something clear you can revisit, edit, and share — all without leaving the conversation.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Collaborative Docs & Workspaces
- Secondary Subcategories
- None listed
- Brand
- xTiles
- Access
- Account optional
- First tracked
- 2026-07-14
- Tool count
- 39
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for xTiles
Get updates when xTiles’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT Collaborative Docs & Workspaces
View Category39 tools agents can invoke
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).
xtiles_create_tiles_from_markdown_by_view
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).
xtiles_create_tiles_from_markdown_in_my_planner
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).
xtiles_create_tiles_from_markdown_in_project_planner
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.
xtiles_create_notification
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`.
xtiles_create_view_from_markdown
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`.
xtiles_create_page_group
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.
xtiles_create_project_from_markdown
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.
xtiles_create_tasks
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.
xtiles_delete_page
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.
xtiles_delete_page_group
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.
xtiles_delete_tasks
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.
xtiles_patch_view_content
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.
xtiles_get_collection_content
Resolve any xTiles link to the content it points at. Use this whenever the user pastes an xTiles URL instead of guessing which id it contains — the same URL can address a whole page or a single tile depending on its query string. Handles page links (`/{viewId}`, `/doc/{viewId}`, `/embed/{viewId}` — any xTiles domain, public or custom), tile links (`?nvi=`, `?wfm=`, `?scrollTo=`) and "copy link" links (`/links/{linkId}`). The URL is parsed and resolved against your own xTiles content by our API — it is never fetched from the host it names, so this only ever reaches the caller's own xTiles resources. Returns `resource_type` (what the link turned out to be), the ids it resolved to, and the content of THAT resource — for a tile link, the tile's own markdown, not the whole page. To read the full page a tile belongs to, follow up with `xtiles_get_view_content` using the returned `view_id`. A link to a collection card resolves to that card and returns ITS content — a card and a tile are the same item wearing two hats, so the type is `TILE`. The response states what you may do with the resource; respect it before offering to edit. Leftover tracking parameters (`utm_*`, `im_ref`, …) are ignored — paste the link as-is. Errors: 400 the string is not an xTiles link; 422 the link is a recognised shape we cannot resolve yet (public forms, task screens, workspace links); 404 the page or link no longer exists; 403 no access — which is also the answer for an unknown collection row, since telling those two apart would leak whether a private id exists. Report a 403 as "no access, or it no longer exists", not as a definite refusal.
xtiles_get_content_by_link
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.
xtiles_get_current_user
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.
xtiles_get_view_content
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`.
xtiles_get_page_layout
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.
xtiles_get_planner_content
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).
xtiles_get_project_content
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`.
xtiles_get_project_structure
Get a single task by ID. Provide projectId for project tasks, or omit for personal tasks.
xtiles_get_task
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`.
xtiles_get_tile_styles
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.
xtiles_get_user_timezone
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.
xtiles_get_workflow
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_get_docs
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.
xtiles_list_calendar_events
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.
xtiles_list_projects
List tasks with optional filters. Provide projectId to list project tasks, or omit for your personal tasks.
xtiles_list_tasks
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.
xtiles_list_workflows
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.
xtiles_move_pages
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.
xtiles_reset_tile_styles
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.
xtiles_search_projects
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.
xtiles_search_users
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.
xtiles_set_page_description
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.
xtiles_set_page_layout
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.
xtiles_set_tile_styles
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.
xtiles_update_page
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.
xtiles_update_page_group
Update an existing task. Provide projectId for project tasks, or omit for personal tasks. Only specified fields will be updated.
xtiles_update_task
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are xTiles alternatives on ChatGPT?
As of 2026-09-29, xTiles competes with ArtifactBridge, Caipi, Coda, DocRunic, Docs AI, Document360, Elodus, Fibery, Markdown by mdedit.ai, Neurnav, Notion, PaperDock, Stable Baseline, Superhuman Docs, Zeck in ChatGPT Collaborative Docs & Workspaces, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.