- Brand
- Dineo
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
Dineo helps users review balances, cash flow, categories, counterparties, movements, and transfers in their authenticated account. It displays financial charts and, only on explicit request, creates or modifies Dineo records and validates movement batches before import. Dineo records financial activity but does not move money, execute payments, transfer crypto assets, or perform investment trades.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Dineo
- Access
- Account required
- First tracked
- 2026-10-04
- Tool count
- 70
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
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

Get alerts for Dineo
Get updates when Dineo’s Discoverability Score or category rank changes.
Competitive lineup
70 tools agents can invoke
Use this only after validate_category_update_batch returned an executable draft and the user explicitly confirmed its exact before/after hierarchy. Pass only companyId, batchDraftId and payloadHash; never reconstruct edits. The server revalidates every category and expectedUpdatedAt and applies all names, descriptions and parent changes in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact draft.
update_category_batch
Use this only after validate_counterparty_member_update_batch returned an executable draft and the user explicitly confirmed its exact before/after list. Pass only companyId, batchDraftId and payloadHash; never reconstruct edits. The server revalidates every member and expectedUpdatedAt and applies all confirmed changes in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact draft.
update_counterparty_member_batch
Use this only after validate_movement_update_batch returned an executable draft and the user explicitly confirmed that exact before/after summary. Pass only its companyId, batchDraftId, and payloadHash; never reconstruct edits here. The server revalidates every manual movement, checks each expectedUpdatedAt again, and applies all edits and automatic fee effects in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact confirmed draft.
update_movement_batch
Use this only after validate_transfer_update_batch returned an executable draft and the user explicitly confirmed that exact before/after summary. Pass only companyId, batchDraftId and payloadHash; never reconstruct edits here. The server revalidates every transfer, checks all expectedUpdatedAt values, and updates transfers, generated legs and automatic fees in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact draft.
update_transfer_batch
Use this only when the user explicitly asks to archive one active PARTIAL Dineo category. Read the category immediately before archiving and pass its exact updatedAt as expectedUpdatedAt. Archiving keeps historical movement associations and prevents new assignments. Generate a stable unique idempotencyKey and reuse it only for retries of the same request.
archive_category
Use this only when the user explicitly asks to authorize future unattended or scheduled movement imports. Confirm once, in business terms, the authorization name, company, account or cash bag, and whether inflows, outflows, or both are allowed. The authorization has no expiration and remains active until revoked. It permits only creation of validated movement batches of at most 100 items; it never permits transfers, updates, deletions, or bypassing duplicate and ownership checks. Generate and reuse the idempotencyKey silently.
create_movement_import_authorization
Use this only when the user explicitly asks to reconcile one Dineo container to a known real-world balance. Read the container immediately before proposing the adjustment, convert its balance from minor units to the displayed major-unit amount, summarize the current balance, target balance, signed difference, currency, and date, and call this tool only after the user confirms that exact summary. Pass major-unit values as expectedCurrentBalance and targetBalance; the server rejects the write if the stored balance changed before the transaction. Generate a stable unique idempotencyKey and reuse it only for retries of this exact adjustment. Never use this to edit or delete an existing adjustment or its generated movement.
create_balance_adjustment
Use this only after validate_category_batch returned an executable draft and the user explicitly confirmed that exact category hierarchy, warnings and duplicates. Pass only companyId, batchDraftId and payloadHash; never reconstruct rows. The server revalidates and creates every category and parent relation in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact confirmed draft.
create_category_batch
Use this only after validate_counterparty_member_batch returned an executable draft and the user explicitly confirmed the exact members, groups, warnings and duplicates. Pass only companyId, batchDraftId and payloadHash; never reconstruct rows. The server revalidates and creates every member in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact draft.
create_counterparty_member_batch
Use this only after validate_transfer_batch returned an executable draft and the user explicitly confirmed that exact routes, amounts, currencies, rates, warnings, totals and payloadHash. Pass only its companyId, batchDraftId and payloadHash; never reconstruct rows here. The server revalidates and creates every transfer, both generated legs and automatic fees in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact confirmed draft.
create_transfer_batch
Use this only when the user explicitly asks to create one Dineo counterparty group, such as customers, payers, suppliers, or service providers. Resolve the company first and choose whether the group belongs to inflows or outflows. Generate a stable unique idempotencyKey and reuse it only for retries of the same request. Never use this to edit, deactivate, or delete an existing group.
create_counterparty_group
Use this only when the user explicitly asks to add one Dineo counterparty member to an existing group. Resolve the company and group first, and preserve the group's inflow or outflow meaning. Generate a stable unique idempotencyKey and reuse it only for retries of the same request. Never use this to edit, move, deactivate, or delete an existing member.
create_counterparty_member
Use this only when the user explicitly asks to create one Dineo bank account or cash bag. Resolve the company and supported currency first, and ask for any required business detail that is missing. Generate a stable unique idempotencyKey and reuse it only for retries of the same request. Never use this to edit or delete a container, move money, access an external bank, or attach files.
create_container
Use this only when the user explicitly asks to record one new Dineo inflow or outflow. Resolve unknown company, container, category, or counterparty ids with the available read-only list tools first. Generate a stable unique idempotencyKey and reuse it only for retries of the same request. Never use this for transfers, updates, deletes, or attachments.
create_movement
Use this only when the user explicitly asks to create one Dineo income or expense category. Resolve the company and optional parent category first; a child must have the same direction as its parent. Set categoryKind to PARTIAL for a temporary category; partial categories cannot have children and are subject to their own plan limit. Generate a stable unique idempotencyKey and reuse it only for retries of the same request. Never use this to edit, move, archive, reactivate, or delete an existing category.
create_category
Use this only when the user explicitly asks to record one transfer between two existing Dineo containers. Resolve unknown company, origin, or destination ids with list_companies and list_containers first. Generate a stable unique idempotencyKey and reuse it only for retries of the same request. Never use this for updates, deletes, external bank transfers, or attachments.
create_transfer
Use this only after validate_movement_batch returned an executable draft and the user explicitly confirmed that exact company, container allocation, item count, totals, warnings, and payloadHash. Pass only the returned batchDraftId and payloadHash; never reconstruct or add rows here. The entire immutable draft is revalidated and created atomically, including automatic account-fee movements. Generate one stable idempotencyKey and reuse it only for retries of this exact confirmed draft. Never call this for an expired, blocked, changed, or unconfirmed draft.
create_movement_batch
Use this only after validate_movement_delete_batch returned an executable draft and the user explicitly confirmed permanent deletion of that exact movement list and totals. Pass only its companyId, batchDraftId, and payloadHash; never reconstruct ids here. The server revalidates every USER_ENTERED movement, checks each expectedUpdatedAt again, and permanently deletes all selected movements and their automatic fees in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact confirmed draft.
delete_movement_batch
Use this only after validate_transfer_delete_batch returned an executable draft and the user explicitly confirmed permanent deletion of that exact transfer list and totals, including generated legs and automatic fees. Pass only companyId, batchDraftId and payloadHash; never reconstruct ids here. The server checks all expectedUpdatedAt values and deletes every confirmed transfer in one transaction or none. Generate one stable idempotencyKey and reuse it only for retries of this exact draft.
delete_transfer_batch
Use this only when the user explicitly asks to permanently delete one specific internal Dineo transfer. Read it immediately before deletion, summarize its origin, destination, amounts, currencies, and date, and call this tool only after the user confirms that exact summary; pass its exact updatedAt as expectedUpdatedAt. Deleting the transfer also permanently removes its generated movement legs and related automatic fees. Generate a stable unique idempotencyKey and reuse it only for retries of this exact deletion. Never use this for an external bank transfer.
delete_transfer
Use this only when the user explicitly asks to permanently delete one specific manual Dineo movement. Read it immediately before deletion, summarize the selected movement, and call this tool only after the user confirms that exact summary; pass its exact updatedAt as expectedUpdatedAt. The movement must have originKind USER_ENTERED. Use delete_transfer for transfer-generated legs; never delete account fees or balance-adjustment movements with this tool. Generate a stable unique idempotencyKey and reuse it only for retries of this exact deletion.
delete_movement
Use this for a scheduled task or one explicit user request that requires two or more non-destructive Dineo creations or balance adjustments. Resolve names, ambiguities, and current balances with read-only tools first. Steps run once in order and may bind an argument to a prior result. Every delegated tool retains its ownership, plan-limit, validation, idempotency, and audit rules. Stop after the first failure; earlier successful steps are not rolled back. Use execute_write_plan for any plan containing updates, deletions, or other destructive mutations.
execute_non_destructive_write_plan
Use this immediately after validate_preapproved_movement_batch returns executable=true and requiresConfirmation=false for an unattended or scheduled import. Do not request another user confirmation: the persistent authorization is the approval. Pass the returned internal companyId, batchDraftId, payloadHash, and authorizationId unchanged. The server rechecks that the authorization is still active and that every movement uses its company, account, and allowed direction, then creates the immutable draft atomically. Generate one stable idempotencyKey and reuse it only for retries of this exact draft.
execute_preapproved_movement_batch
Use this when one explicit user request requires two or more Dineo write actions that would otherwise need separate write tools. Resolve names, ambiguities, current timestamps and validation drafts with read-only tools before this call. Put every authorized write in operations so ChatGPT presents one confirmation for the complete business plan. Steps run once in order and may bind an argument to a prior step result with JSON Pointers. Dineo applies each existing tool's ownership, validation, concurrency, idempotency and audit rules. Stop after the first failed step. Completed earlier steps are not rolled back, so describe the whole plan accurately and never add unrelated work. Use the individual write tool when only one action is needed.
execute_write_plan
Use this whenever the user asks which person, user, identity, email, or Dineo login is currently authenticated or connected in ChatGPT, including questions such as "¿con qué cuenta de Dineo trabajas?". This is the only tool for identifying the connected user. Returns display name and primary email without internal IDs or authentication details. Do not use subscription or company tools for this question.
get_authenticated_dineo_user
Use this only when the user asks for the authenticated Dineo user's current plan, payment status, access status, enabled features, or plan limits. Plans and subscriptions belong to the authenticated user, never to a company; a per-company limit only describes where the user's limit is measured. It returns the connected user's display name and primary email as basic account context, plus ChatGPT App rate and monthly usage, remaining quotas, and reset times. Prefer get_authenticated_dineo_user when the user asks only which Dineo account or user is connected.
get_subscription_status
Use this after resolve_financial_scope whenever the user asks for a financial total, movement count, comparison, or whether matching movements exist for categories, counterparty groups, or members. Pass suggestedScope unchanged, plus the requested company, period, optional account, and currency. This server-side aggregation is complete and unpaginated; it is the only authoritative source for such claims. Keep currencies separate and never replace it with list_movements or manual arithmetic.
get_financial_summary
Use this when the user asks to see or analyze Dineo inflows, outflows, net cash flow, or how money evolved over time. Resolve the company, requested period, and optional account or wallet from the conversation before calling it. Unless the user explicitly requests text-only or raw data, you must immediately call render_cash_flow_chart with this tool's structuredContent unchanged before answering. To change the period or account shown later, call this tool again and render the new result.
get_cash_flow
Use this when the user asks to see or compare which Dineo income or expense categories account for the most money or what percentage each represents. Resolve the company, requested period, and optional account or wallet first. Unless the user explicitly requests text-only or raw data, you must immediately call render_category_breakdown_chart with this tool's structuredContent unchanged before answering. For another period or account, get and render fresh data.
get_category_breakdown
Use this when the user asks for a Dineo financial overview, balances, movement counts, or net cash flow as reusable data.
get_company_dashboard
Use this when the user asks for one known Dineo counterparty group or before editing it, to verify its direction, linked category, active status, and updatedAt value.
get_counterparty_group
Use this when the user asks for one known payer, payee, customer, supplier, or other Dineo counterparty member, or before editing that member.
get_counterparty_member
Use this when the user asks to see or compare how money associated with one Dineo counterparty group is distributed among its members. Resolve the company, group, and requested period first; the group's direction is applied automatically. Unless the user explicitly requests text-only or raw data, you must immediately call render_counterparty_member_breakdown_chart with this tool's structuredContent unchanged before answering. For another period or group, get and render fresh data.
get_counterparty_member_breakdown
Use this when the user asks for the current details of one known Dineo account or cash bag, or before an action that needs its exact currency, balance, fee configuration, or updatedAt value.
get_container
Use this when the user asks for one known Dineo movement or before editing or deleting it. Inspect originKind and transferId before choosing a mutation tool; only USER_ENTERED movements may be edited or deleted directly.
get_movement
Use this when the user asks for one known Dineo internal transfer or before editing or deleting it. This returns the transfer and its generated movement identifiers but performs no mutation.
get_transfer
Use this when the user asks for one known Dineo category or before editing it, especially to verify its direction, parent category, system-managed status, and updatedAt value.
get_category
Use this when interpreting a bank statement or other document containing movements, after resolving exactly one company. It returns the active containers, category hierarchy, counterparties, currencies, and import limits needed to propose Dineo movements. Ask the user to choose the company or target container when the source document does not identify them; infer categories and counterparties only as reviewable proposals.
get_movement_import_context
Use this when the user asks how or when a Dineo container balance was reconciled to a target amount. This only reads recorded balance adjustments and never changes the balance.
list_balance_adjustments
Use this when the user asks which Dineo companies or financial workspaces are available.
list_companies
Use this when the user names a payer, payee, customer, supplier, or other counterparty and you need to resolve optional group and member ids before calling create_movement.
list_counterparties
Use this when the user refers to a Dineo account, cash bag, origin, or destination by name and you need to resolve its container id before reading or writing financial data.
list_containers
Use this when the user wants to find or inspect individual Dineo financial movements as reusable, paginated data. Never use this paginated tool to calculate totals, counts, comparisons, or to claim that no movements exist; use resolve_financial_scope followed by get_financial_summary for those factual financial answers.
list_movements
Use this when the user wants to search, filter, compare, or identify internal transfers recorded in Dineo. This never queries or initiates external bank transfers.
list_transfers
Use this when the user describes an inflow or outflow category by name and you need to resolve category ids. By default it returns only active categories eligible for new movement assignments. Set includeInactive=true only for historical lookup or analysis; inactive categories must never be assigned to new movements.
list_categories
Use this when the user asks which recurring or scheduled movement imports are authorized, wants to revoke one, or when an unattended task must resolve the active authorization that matches its named purpose. Match by authorization name and human-readable company/account details; do not mention the internal authorization id unless the user explicitly requests diagnostics.
list_movement_import_authorizations
Use this when the user asks which currencies Dineo supports or before creating a container whose currency is not yet known. This only returns Dineo's currency catalog and does not query exchange rates.
list_supported_currencies
Use this only when the user explicitly asks to reactivate one archived PARTIAL Dineo category so it can be assigned to new movements again. Read the category immediately before reactivation and pass its exact updatedAt as expectedUpdatedAt. Reactivation is subject to the active partial-category plan limit. Generate a stable unique idempotencyKey and reuse it only for retries of the same request.
reactivate_category
Use this immediately after get_cash_flow for every cash-flow request unless the user explicitly requested text-only or raw data. This tool is the required presentation step that displays the inline line chart; never describe a chart as shown without calling it. Pass get_cash_flow structuredContent unchanged as data. If the user asks for another period or account, call get_cash_flow again and render the new result.
render_cash_flow_chart
Use this immediately after get_category_breakdown for every request to see or compare category totals unless the user explicitly requested text-only or raw data. This is the required presentation step for the inline hierarchical ranking; never describe it as shown without calling this tool. Pass get_category_breakdown structuredContent unchanged as data. For another period or account, get and render fresh data.
render_category_breakdown_chart
Dineo ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Dineo's ChatGPT Plugin 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.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.