Aleph
Ask, analyze, act on FP&A data
- Category
- Data & Analytics
- Primary Subcategory
- Financial Planning & FP&A Analytics
Integration details
Description
With the Aleph MCP Server, you can: - Plug into a governed source of truth for clean, structured cross-system data from 200+ integrations:ERP, CRM, HRIS, spreadsheets, data warehouse, and more - Ask questions in plain language, build reports, and run analyses, with every output traceable back to your source of truth - Power automations across Slack, Linear, and your other tools
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Financial Planning & FP&A Analytics
- Secondary Subcategories
- None listed
- Brand
- Aleph
- Access
- Account required
- First tracked
- 2026-08-06
- Tool count
- 115
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for Aleph
Get updates when Aleph’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 Financial Planning & FP&A Analytics
View Category115 tools agents can invoke
Instantiate a dashboard from a template. Requires templateId and tableIdMap (array of {sourceTableId, targetTableId} objects). Dimensions with the same name in source and target tables work automatically. For dimensions with DIFFERENT names, you MUST provide dimensionIdMap — use the suggested dimension mappings from get_template. Optional: filterValueMap to override filter values, variableValueMap to override variable values. Optional: dashboardId to inject template pages into an existing dashboard instead of creating a new one. Use get_template with a templateId first to discover source tables, suggested mappings, filters, and variables. For unmapped tables, use list_tables to find candidates and confirm with the user. Review filters and variables with the user before applying — use defaults or ask for overrides based on context. [Preview Tool: behavior may change, use with caution]
apply_template
Diff two versions of an Aleph Table. Returns the rows whose value differs (or exists in only one version) across the two versions, with a status column (Added / Removed / Modified). Zero is a value: a row present in only one version with value 0 is Added or Removed; a value moving from 0 is also labelled Added and one moving to 0 Removed. Use `list_table_versions` first to obtain version IDs — both versions must be on the table's current schema. Output is rendered as a markdown table capped at 50 rows; use `filters` to narrow the diff if there are more changes than fit. Only applicable to Aleph Tables — does not apply to Integration Tables, Calculated Tables, or Data Warehouse Tables (direct connects).
compare_table_versions
Put an existing dashboard block on a page — either by duplicating it (`copy`) or by relocating it (`move`). This tool changes WHICH PAGE a block sits on. It never changes what the block shows, or its position within a page. Use `manage_block` to edit a block's contents, and `manage_dashboard` to reposition or resize a block already on its page. To remove a block from a page entirely, use `delete_block`. The response confirms the placement and returns the block's id, name and location — it does not include the block's configuration or data. Use `get_block` if you need to read those back. [Preview Tool: behavior may change, use with caution]
copy_or_move_block
Delete an automation permanently. It stops running and is removed from the workspace. This cannot be undone. Before calling, look the automation up with `list_automations` and tell the user its name, source, and triggers, even when the deletion was directly requested. To stop an automation without deleting it, pause it with `manage_automations`. [Preview Tool: behavior may change, use with caution]
delete_automation
Delete a dashboard block. Pass `blockId` and `pageId`. Removes the block from that page's layout; the underlying block remains. Use get_dashboard to find page IDs. You MUST show the user the exact changes. [Preview Tool: behavior may change, use with caution]
delete_block
Delete a calculated item from a dimension of a table (Aleph or integration). Requires `tableId`, `dimensionName`, and `itemId`. Use `get_table` for the technical dimension name and canonical tableId, and `list_calculated_items` to find the itemId. This tool is destructive. Always show the user the exact item being deleted. [Preview Tool: behavior may change, use with caution]
delete_calculated_item
Delete one check and its run history. A check is a data integrity verification that runs a query against a table and reports whether the check passed (no rows matching the query were found) or the check failed (some rows matching the query were found). Before calling this tool, use `get_check` to read the check and tell the user exactly what will be deleted: the check's name, the table it runs against, and whether it has an alert associated with it. Then stop and ask for explicit confirmation. This cannot be undone. Deleting the check also deletes its run history. If the check has an alert configured, the people or channel receiving that alert stop being notified, and Aleph does not send them a message saying the alert was removed. [Preview Tool: behavior may change, use with caution]
delete_check
Delete a custom skill by name. Use list_custom_skills to find skill names.
delete_custom_skill
Permanently delete a dashboard together with every page on it. This cannot be undone. Only the dashboard owner or a workspace admin can delete a dashboard; someone who can edit it through a share cannot. To remove a single page instead, use `delete_dashboard_page`. Call `get_dashboard` right before deleting and show the user the dashboard name and the pages that go with it, in plain language, even when the deletion was directly requested. [Preview Tool: behavior may change, use with caution]
delete_dashboard
Delete a connect from a dashboard custom-data block. The data already pulled stays in the sheet as static values. Note: this tool is only for connects on dashboard custom-data blocks, not for connects living on Spreadsheets (Excel / Google Sheets). Use `get_block` to see the connects on a block and their IDs. You MUST show the user exactly which connect will be deleted. [Preview Tool: behavior may change, use with caution]
delete_dashboard_custom_data_connect
Delete a dashboard page. Requires dashboardId and pageId; cannot delete the last remaining page. To delete the whole dashboard, use delete_dashboard. Use get_dashboard to find page IDs. You MUST show the user the exact changes. [Preview Tool: behavior may change, use with caution]
delete_dashboard_page
Remove a workspace color palette or a workspace table theme by name. Built-in palettes and themes cannot be removed. List existing names first with `list_dashboard_themes_and_colors`; a name that matches nothing is refused. Older workspaces can hold two entries under one name, and that name is refused too — the user has to rename or remove the duplicate on the workspace settings page first. To create, replace, or rename an entry, or to set the workspace defaults, use `manage_dashboard_theme`. Show the user the exact theme name and what will change in plain language, even when the deletion was directly requested. If the workspace default points at the deleted theme, it resets to Aleph's default. That change applies to every dashboard that relies on the default. Blocks that named the deleted theme fall back the same way. [Preview Tool: behavior may change, use with caution]
delete_dashboard_theme
Permanently delete a dimension and all of its values, unlinking it from every table that uses it. Identify it by id (from list_dimensions or get_dimension). This is destructive and cannot be undone: always show the user exactly what will be deleted - the dimension name and how many tables use it (call get_dimension first). Describe the impact in plain, non-technical language. [Preview Tool: behavior may change, use with caution]
delete_dimension
Permanently delete a value from a dimension (and prune now-empty parent levels). Identify the value by id (from list_dimension_values). This is destructive and cannot be undone: show the user exactly which value will be deleted. Describe it in plain, non-technical language. [Preview Tool: behavior may change, use with caution]
delete_dimension_value
Delete exchange rates. Pass one entry per rate, up to 100 in a call. This is a heavy write that changes downstream numbers. Show the user the exact rates you are about to delete. Find them first with `list_exchange_rates`. If any entry does not match a rate, nothing is deleted and the response names every entry that did not match. [Preview Tool: behavior may change, use with caution]
delete_exchange_rate
Delete a folder. As part of this operation, the folder's contents are not deleted: they are archived and moved to an archived folder. Returns how many tables were archived. The Aleph UI labels this action "Archive folder", so a user asking to archive a folder means this tool. Before calling, check what the folder contains (each table in `list_tables` shows its folder) and tell the user what will be moved to the archived folder. `list_tables` omits hidden integration tables, which are archived along with everything else in the folder, so the count you get here may be higher than your check showed. That is expected, not an error. [Preview Tool: behavior may change, use with caution]
delete_folder
Permanently delete a mapping and all of its rules, detaching it from any transformations that use it. Identify the mapping by its ID (from `list_mappings`). Note: this deletes the ENTIRE mapping. To simply detach a mapping from a specific table while keeping the underlying mapping around, use `delete_table_custom_column` instead. If there is any ambiguity, clarify with the user their intent. [Preview Tool: behavior may change, use with caution]
delete_mapping
Remove rules from a mapping by exact `when` match. Inspect rules with `list_mapping_rules` first to confirm what you intend to remove. Deletion is permanent unless the mapping feeds a dependent transformation. When it does, a rule whose `when` value still appears in the source data comes back as pending once those transformations re-run, because every live source value needs a rule — so the mapping returns to `pending` rather than losing the row, and deletion only sticks for values that are gone from the source. That rerun is started but not awaited, so the response tells you whether one was scheduled, not what it concluded: call `list_mapping_rules` afterwards if the user needs the settled state. Show the user the exact changes. [Preview Tool: behavior may change, use with caution]
delete_mapping_rules
Remove a custom column from an integration table. A custom column is a calculated measure, a calculated dimension, a formula column, or a column that comes from a mapping. Calculated measures, calculated dimensions, and formula columns are removed by name. A calculated measure or dimension disappears immediately; a formula column goes once the table finishes refreshing, which this tool triggers. A mapping is disconnected by passing mappingIds, which removes every column that mapping contributes to this table. The mapping itself is not deleted and stays connected to any other tables it feeds. To delete the mapping everywhere, use `delete_mapping`. To connect a mapping to a table, use `manage_table_custom_column`. Removing a column that another column still references is rejected, whether it is a formula column or a mapping's output. You MUST show the user which columns will be removed in plain language. The kinds (calculated measure, calculated dimension, formula column) are jargon: these are all simply columns. When talking to the user, keep the jargon to a minimum unless the user mentions them first. Mirror the user's language where applicable. [Preview Tool: behavior may change, use with caution]
delete_table_custom_column
Permanently remove a user from the workspace. The removed user immediately loses access to this workspace: everything shared with them here, their group memberships, and their ability to sign in to this workspace. Their account in other workspaces is not affected. This cannot be undone, and everyone who can manage users in this workspace is notified that the removal happened: show the user exactly who will be removed and what they lose in plain, non-technical language. To find the user, use list_users or get_user. To invite users or change roles, use manage_user. [Preview Tool: behavior may change, use with caution]
delete_user
Permanently delete a user group. Deleting a group removes all members from it (members' user accounts are otherwise not affected). Members lose any access they had through this group: access to tables, access to dashboards shared with the group, and access to specific dimension values. This cannot be undone: show the user which group will be deleted and what that means in plain, non-technical language. To create or rename groups, use manage_user_group. [Preview Tool: behavior may change, use with caution]
delete_user_group
Answer one effective-access question for one user: can they view or edit a specific table, run SQL on a specific data warehouse, or view or edit rows carrying a specific dimension value. The verdict is a top-level answer that comes back as Yes, No, or cannot-evaluate, along with a short reason when applicable. This tool answers "what can this user do"; list_permissions answers "what is configured" per user group. Discover ids with list_users, list_tables, list_dimensions, and list_dimension_values. When presenting results to the user, use plain language — say "data warehouse", "user group", or "dimension", never internal spellings like run_sql, userId, or tableId. Mirror the user's language as applicable. [Preview Tool: behavior may change, use with caution]
evaluate_permissions
Export the workspace's audit log entries matching the given filters as a downloadable Excel (.xlsx) file, and return a link. Use this when the user wants a full spreadsheet of matching entries rather than a page of results. Supports the same filters as list_audit_logs; there is no pagination — every matching entry is included. Very large result sets are rejected, so add filters and retry if that happens.
export_audit_logs
Render one dashboard block as an image. Use this when the user wants to copy, download, export or share a single block as a picture. The image shows the block as it appears on its page, with that page's filters and variables applied; a block that is on no page is rendered on its own. Pass the dashboard ID and page ID to render the block from the correct page; if not provided, the system will try to find the page by the block ID. Returns a public URL to the generated image: the link is not access-controlled and does not expire, so tell the user that anyone they share it with can open it. [Preview Tool: behavior may change, use with caution]
export_block
Export a dashboard to PDF and get a downloadable link. Use this when the user wants to export, download, or get a PDF of a dashboard. Returns a public URL to the generated PDF: the link is not access-controlled and does not expire, so tell the user that anyone they share it with can open it. [Preview Tool: behavior may change, use with caution]
export_dashboard
Generate AI mapping suggestions in the background for source values that are still awaiting review. This does not approve mappings or create canonical values. This queues a background job and returns a jobId. Check whether generation is still running or has finished with `get_conformed_suggestion_job`. Suggestions are saved as each batch completes, so a running job may already have results available through `list_conformed_values`. Accept or reject saved suggestions with `review_conformed_suggestions`. A job can save some suggestions and then fail. Those suggestions remain available. Read them with `list_conformed_values` before starting another job. Show the user which dimension and source values will receive suggestions, including whether existing suggestions will be replaced. [Preview Tool: behavior may change, use with caution]
generate_conformed_suggestions
Get the workspace's AI settings: the Aleph agent settings and scan settings.
get_ai_settings
Inspect a single block — returns metadata, and optionally chart configuration or the block's underlying data. Data is queried through the parent dashboard's global filters so it matches what the viewer sees; pass applyParentsGlobalFilters: false to bypass them. Use search_blocks to discover blocks, or get_dashboard to inspect page layouts and find block IDs.
get_block
Get one check in full: the complete SQL or Pivot it uses, which table it runs against, the time the check last ran and that run's status, the rows the check flagged, and the alert settings configured on the check. A check is a data integrity verification that runs a query against a table and reports whether the check passed (no rows matching the query were found) or the check failed (some rows matching the query were found). Use this to answer what a check actually tests, or why it is failing. The status of the check's last run, when it last ran, and the time it last passed are stored persistently on the check itself and are always available. The rows flagged by the last run are shown if that run failed and that run has not yet expired (run history is not stored persistently and may be cleared). At most 50 rows are shown, and the heading gives the total the run found. Two definitions come back whenever the last run stored one: the check's own, headed as the current definition, and the one that produced the last run. They are often the same. Compare them before drawing a conclusion from the flagged rows — if the check was edited after it ran, those rows came from the older definition. Get the check's ID from `list_checks`. [Preview Tool: behavior may change, use with caution]
get_check
Check the status of a background AI mapping suggestion job created by `generate_conformed_suggestions`. Returns the current job status. Use the jobId from generation and the same dimension ID to check whether generation is still running or has finished. Suggestions are saved as each batch completes, so a running job may already have results available through `list_conformed_values`. Check each source value's suggestedSharedDimensionValue or suggestedCanonicalName field. Use the paginated source-value listing for a complete check; previews may omit values. Accept or reject saved suggestions with `review_conformed_suggestions`. A completed job can leave some source values without suggestions when the AI cannot find a suitable mapping. This is an expected result and does not by itself require a retry. A job can save some suggestions and then fail or be cancelled. Those suggestions remain available. Read them with `list_conformed_values` before deciding whether to retry. [Preview Tool: behavior may change, use with caution]
get_conformed_suggestion_job
Get the currently active workspace (also called 'tenant' internally). Use this when the user asks which workspace they are in, or to verify context before destructive operations.
get_current_workspace
Get full details of a custom skill by name, including its content. Use list_custom_skills first to find skill names.
get_custom_skill
Get a dashboard with its pages and blocks. Supports lookup by ID or name. Returns: - Dashboard name and description. - For each page: name, description, and its blocks' layout positions (name, ID, type, x, y, width, height). - Global filters and page-level custom variables (name, value, dimension, variableId — use the variableId when referencing a variable in manage_dashboard customVariableUpdates). - Sharing information: visibility (who can access the dashboard), the owner, and every person and group it's shared with plus their Viewer/Editor role. By default returns every page; when you only need one or a few pages pass pageIds to scope the response and save tokens.
get_dashboard
Returns a theme's full style object — same shape as the object branch of `manage_block`'s `chartFormat.exploreStyles`. Use to customize a named theme: fetch here, mutate locally, pass the whole object to `manage_block`. The workflow is needed because `chartFormat.exploreStyles` is a single value written wholesale — there's no partial-merge mode, so sending only the fields you want to change leaves the rest unset rather than inherited from the prior theme. `subtotalsStyle` holds one entry per subtotal level, outermost level first. Read its length; it is not fixed. "Automatic" returns 3 entries. A custom theme returns only the levels its author styled — the workspace UI edits three slots labelled "Subtotal 1", "Subtotal 2" and "Subtotal rows 3+", so a theme where only the first two were touched stores 2 entries. A table has one subtotal level per row dimension except the last, so a block with 4 `rows` has 3 levels. Entries apply strictly by index and levels past the end of the array render unstyled. The "Subtotal rows 3+" slot repeats across deeper levels only when a block names the theme AND the stored array holds exactly 3 entries; the object you pass to `manage_block` is written verbatim, with no repetition. So when the table is deeper than the array and the user wants every level styled, extend the array yourself before writing. [Preview Tool: behavior may change, use with caution]
get_dashboard_table_theme
Get a dimension by ID. To list or search its values, call list_dimension_values.
get_dimension
Get basic information about a specific integration (name, ID, status, type, last updated timestamp, additional context). Custom columns brought in from a source are configured separately and are not listed here.
get_integration
Get a mapping by ID with metadata, pending-rule notification config, and rule counts (total + pending). Notification detail includes Slack/Teams channel name (resolved) or email recipient/group IDs. Email ID lists truncate to 10 by default; pass `truncateNotification: false` to see all. A mapping with no notification configured has no notification line. To inspect rules, call `list_mapping_rules`. To change notifications, use `manage_mapping`.
get_mapping
Get the details of a single spreadsheet linked to this workspace, whether or not Aleph can currently reach it. Agent status is the last state Aleph observed, not a live check. - "Enabled": the agent may use the file and nothing says Aleph has lost access. Whether you can open it is a separate question the Your access column answers. - "Ready to enable": Aleph can reach the file but nobody has enabled it, so the tools cannot open it yet. Enable it with `manage_spreadsheet` first. - "Needs re-sharing": the file was enabled and the provider has since refused Aleph, so every call on it will fail until access is restored. On Google Sheets that means sharing the file with the service account again; on Excel it means restoring the SharePoint site's access. Your access says what the file's sharing lets you do with it, as Aleph last read it. "Can view" also means the file cannot be removed from the workspace with `delete_spreadsheet`; that needs "Can edit". When you can view a file that a Google Group can edit, Your access names the group: Aleph cannot see who is in a group, so that access only counts once the file is shared with you directly. [Preview Tool: behavior may change, use with caution]
get_spreadsheet
Get detailed information about a specific table. Returns dimensions and measures with usage labels, model type, overall table usage, and the table's calculated items with their ids and formulas. For calculated tables the underlying SQL definition is omitted by default — pass includeDefinition: true to include it. Usage levels: high (within 10% of top), medium (≥50%), low (≥10%), negligible (<10%), no data (never queried). Usage reflects how often a table or dimension is queried, not whether it fits the question. Dimension usage reflects how frequently each dimension is queried within this table. When the table has a description, the response includes it as a "Description" line — guidance you should follow when pulling data or building reports from it. The "Last refreshed" line reports when the table last received data as an ISO timestamp, "N/A" when it has never refreshed, or "Live connection" for data warehouse tables that always read through to the warehouse; call this tool again to check whether a refresh you are waiting on has landed. A "Dependencies" section appears when the table has any: "Depends on" for the tables a calculated table reads from, and "Used by" for the calculated tables that read from this one. Each direction reports its total, and says so when it lists only the first of a larger set. An endpoint marked (archived) still refreshes — archiving does not detach dependencies — but is itself a deletion candidate. To build the whole workspace graph in one call instead of one lookup per table, use `list_tables` with includeDependencies: true. Supports lookup by table ID or name.
get_table
Get dashboard template details and instantiation metadata: source tables with suggested target table mappings, dimension mappings, filters, variables, and available tenant tables for unmapped sources. Use this to understand what mappings are needed before calling apply_template. [Preview Tool: behavior may change, use with caution]
get_template
Get a single workspace member's details.
get_user
Get a user group by ID, including the members that belong to it. Use this to answer who is in a group. Returns up to 100 members per call and reports the group's total; when the total exceeds what you received, page with memberPage rather than reporting a partial list as the group's complete membership. Members are omitted for callers who cannot view workspace members.
get_user_group
Read the current user's settings (such as notification preferences). Use this to inspect the current values before changing them with `manage_user_settings`.
get_user_settings
List the workspace's audit log entries (most recent first). Use this to answer who did what and when. Filter by user email, action type, and/or date range; results are paginated. To download all matching entries as a spreadsheet file, use export_audit_logs.
list_audit_logs
List the workspace's automations, sorted by name. An automation is a scheduled or triggered job that refreshes an enabled spreadsheet, workbook, or dashboard. Each entry shows the automation's ID, its source and URL when one exists, its triggers (including the name and ID of any event triggers it subscribes to), its actions and the element each one runs, owner, enabled/paused state, and the last run's outcome. Use this to answer which automations exist, whether they are running, when they last ran, why one is paused, or which automations a given event trigger fires (filter by `tenantEventId`). Note: an automation whose owner has left the workspace can no longer run, so listing automatically pauses it. Such entries appear as paused with no owner, and resuming them requires assigning a new owner first.
list_automations
List calculated items on a table — works on both Aleph and integration tables. Each item is returned with `itemId`, `name`, `dimensionName`, human-readable formula, `custom`/`pending` flags, and the full `formulaAST` (needed to round-trip into manage_calculated_item). Use this to: (1) check whether an item already exists before create to avoid duplicate-name errors; (2) discover an itemId for update/delete; (3) audit items where `pending: true` indicates the formula references values that do not currently resolve; (4) read an item's formulaAST as the starting point for editing via manage_calculated_item. Filters: `dimensionName` (technical name like "account_type") and `custom` (true → user-created, false → system/native). When `custom` is omitted, only custom items are returned. [Preview Tool: behavior may change, use with caution]
list_calculated_items
List the workspace's checks, sorted by name. A check is a data integrity verification that runs a query against a table and reports whether the check passed (no rows matching the query were found) or the check failed (some rows matching the query were found). Use this to see which checks exist, which are failing, and when they last ran, or to find a check's ID before acting on it. Each entry shows the check's ID and URL, its name, the table it runs against, its current status, and when it last ran if it ever has. A check is defined either by a SQL formula or by a Pivot. A check defined by a SQL formula shows that formula here, possibly truncated. To see a full formula that was truncated, or to see the Pivot for a check that uses one, use `get_check`. When the user names a table rather than a check, resolve the name with `list_tables` to get the table ID, and pass that table ID into this tool. 25 checks come back by default and 100 at most. Pass `limit` to change the page size and `page` to move through the rest. Pass `tableId` to list only the checks on one table. [Preview Tool: behavior may change, use with caution]
list_checks
List all custom skills configured for this workspace. Returns skill names and descriptions. Use get_custom_skill with a skill name to retrieve its full content.
list_custom_skills
List the workspace's color palettes and table themes. For bar and line chart blocks, pass the `name` from a `chartColors` entry into the block's top-level `chartColors` field (i.e. `chartColors: "categorical"` or `chartColors: "diverging"`). Each entry's `currentPalette` shows the workspace's currently-configured palette name and colors for that kind. For table blocks, pass the `name` from a `tableThemes` entry into the block's `chartFormat.exploreStyles` field (e.g. `chartFormat: { exploreStyles: "Automatic" }`).Only set these fields when overriding the workspace default; omit them to use the default. The workspace's currently-configured table theme is reported as `defaultTableTheme`, and the default for line and bar charts is 'categorical'. Other charts can't be customized yet. Also lists every palette the workspace can select — built-in and saved custom ones, with the current selections marked. Those palette names are arguments for `manage_dashboard_theme`, not values for a block's `chartColors`. Read the list before writing a palette so the write updates the intended entry instead of adding a second one. To create or replace a palette or table theme, or set the workspace defaults, use `manage_dashboard_theme`. To remove one, use `delete_dashboard_theme`. [Preview Tool: behavior may change, use with caution]
list_dashboard_themes_and_colors
List a dashboard's saved versions, newest first. Each version includes: - A user-facing reference - The tool version ID - The description and creation time - The author's user ID and visible name - The source of the version and whether an agent edit came from Copilot or MCP - The version whose state was restored when this version was created by a restore Optional filters narrow this list by literal text, regular expression, or UTC creation time. Text filters match the version name, description, visible author, source, Copilot or MCP details, restored-from name, and sequence. When several filters are supplied, a version must match all of them. Use `get_dashboard` or `list_dashboards` first to find the dashboard ID. When the user asks to undo, revert, or roll back dashboard changes from an earlier response, use dashboard version history instead of manually reversing the changes with dashboard write tools. Use the conversation history to identify the dashboards and successful write calls in the response the user means. For each dashboard, call `list_dashboard_versions` and use the version time, user, and editing surface to find the matching versions. If that response created several versions for the same dashboard, select the version immediately before the earliest matching version. Call `preview_dashboard_restore` before restoring, and show the user the exact version and every finding before calling `restore_dashboard_version`. Write the reference returned by the list and preview tools as normal prose. For example: That would be re, your version from Aug 5 at 1:10 AM UTC. Do not add quotation marks, a `Version:` label, parentheses, or restore provenance. Never mention a version ID, pagination cursor, sequence number, `Version N`, or description. Keep the version ID and pagination cursor only for tool calls. Use the preview reference when naming the version. If the exact version is unclear or a newer unrelated edit may be overwritten, ask the user instead of guessing. Use dashboard write tools only when the user asks to undo part of a response, or when no suitable version exists and the user agrees. [Preview Tool: behavior may change, use with caution]
list_dashboard_versions
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 Aleph alternatives on ChatGPT?
As of 2026-09-28, Aleph competes with Alvore Finance, Cube, Datarails FinanceOS, Drivetrain, GrowPanel, Kometrics, Nella Finance AI, Parallel, POCKET CFO, re:cap, SaaSFlow, Secfi in ChatGPT Financial Planning & FP&A Analytics, 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.