- Brand
- Atominvest
- Category
- Finance
- Primary Subcategory
- Private Capital Portfolio Operations
Integration details
Description
Connect ChatGPT to your Atominvest platform to query Portfolio Management or Investor Management data, including portfolio company metrics, investor data, and fund commitments, directly from your conversation. Retrieve financial KPIs such as revenue, EBITDA, and debt for portfolio assets across any reporting period, look up investor accounts and their associated entities, and get detailed commitment breakdowns across funds, including amounts and statuses, all without leaving ChatGPT. Ideal for portfolio managers and investor relations teams who need fast, conversational access to their Atominvest data to support reporting, investor queries, and portfolio monitoring.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Private Capital Portfolio Operations
- Secondary Subcategories
- None listed
- Brand
- Atominvest
- Access
- Account required
- First tracked
- 2026-08-14
- Tool count
- 31
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Atominvest
Get updates when Atominvest’s Discoverability Score or category rank changes.
Competing in ChatGPT Private Capital Portfolio Operations
View Category31 tools agents can invoke
Get full account details by ID. This is the authoritative source for which entities belong to an account — read the entities field. Also surfaces linked contacts, companies, and commitment relationship IDs. Resolve the account ID first using list_accounts.
get_account
Get full details for a specific asset by ID, including metric settings such as yearEnd. ALWAYS call this before calling get_metric_data to retrieve the required yearEnd value (asset.metricSettings.yearEnd).
get_asset_details
Get full details for a specific commitment record by ID.
get_commitment
Get full details for a specific company by ID.
get_company
Tracks investor engagement with a specific fund's dataroom and portal page. Use this to answer: - How many times has an investor visited/accessed this fund? → investmentViews in byUser - Who has downloaded or viewed documents? → downloads and views in byUser - Which documents are most accessed? → byDocument - How has engagement trended over time? → byDate WHAT EACH METRIC MEANS: - downloads: number of times an investor downloaded a document from the dataroom - views: number of times an investor previewed/viewed a document in the dataroom - investmentViews: number of times an investor visited this fund's page in the investor portal. This is the closest available proxy for "how many times did this investor access/log into this fund." Use this to answer questions about portal visit counts, engagement frequency, or investor activity on a fund. WHAT THIS TOOL CANNOT DO: - True platform login counts (LOG_IN events) are not captured by this endpoint — investmentViews is the best available proxy - Cross-fund activity (investmentId is always required) - Account-level grouping — byUser is flat, one row per person WORKFLOW NOTES: - investmentId is REQUIRED — use list_investments first if you only have a fund name - dateFrom is optional — omit to get all-time activity; use YYYY-MM-DD format - byUser is sorted by downloads descending - byDocument is sorted by downloads descending with a 1-based index - byDate shows daily download and view totals in ascending date order
get_dataroom_activity
Lists, per fund, which investor contacts are ALLOWED to see and download that fund's dataroom, and what level of access each contact has been granted. This is CONFIGURED ACCESS — not activity. NOT ACTIVITY — DO NOT CONFUSE WITH get_dataroom_activity: - This tool answers "who is allowed to access this dataroom, and can they download?" — i.e. the permission grant itself, as configured by the fund admin. - It does NOT tell you whether a contact has actually logged in, viewed, or downloaded anything. - For real usage/engagement (actual downloads, views, portal visits), use get_dataroom_activity instead. A contact can be granted full access here and still show zero activity there, and vice versa (e.g. access was later revoked after downloads already happened). Never infer download activity from the restrictDownload flag — the two are unrelated. FOUR SEPARATE CONCEPTS — DO NOT CONFLATE: - viewOn: whether the contact currently has dataroom/portal access switched on for this fund at all. Says nothing about which stage they see or whether they can download. - permissions: which dataroom stage(s)/folder(s) the contact can see — "all" (everything), "none" (nothing), or one or more of "s1"/"s2"/"s3" (specific dataroom stages). If the contact has no explicit stage assignment, this falls back to the fund's default dataroom permission. Independent of download rights. - restrictDownload: whether the contact can download, or is view-only. This is ORTHOGONAL to permissions — e.g. permissions:["all"] + restrictDownload:true means the contact can see everything but download nothing. true = view-only (cannot download). false = can download. Always present (defaults to false when not explicitly restricted). - sentEmail: whether an access-notification email has been sent to this contact for this fund. Says nothing about current access rights. FILTERING (all optional, can be combined — they AND together): - investmentIds: narrow to specific fund(s). Omit to return permissions across every fund in the environment — this can be thousands of rows, so prefer passing investmentIds when you know the fund(s). To resolve a fund name to an ID, call list_investments first. - contactIds: narrow to specific contact(s). - unpublished: true = only unpublished funds, false = only published funds. Omit for both. - restrictDownload: "true" = only contacts who CANNOT download (view-only). "false" = only contacts who CAN download. Omit to return both. ID GOTCHA — investmentIds here are Investment IDs, NOT Portfolio IDs: - investmentIds takes the same ID that list_investments / get_investment return (the fund's _id). - This is DIFFERENT from get_investment_transactions, get_investment_schedule, and list_asset_transactions, which all expect the portfolioId instead. Do not resolve or pass a portfolioId here — pass the plain fund ID directly. - contactIds takes Person IDs — the same ID used by list_persons / get_person. RESOLVING IDS: - resolveIds defaults to false — investmentId/contactId hold the raw ObjectIds. - With resolveIds=true, the investmentId/contactId KEYS REMAIN, but their VALUES are resolved in place: investmentId becomes the fund name; contactId becomes the contact's email — not their name. Same shape either way, just human-readable values. - Trade-off: once resolved, the raw ObjectIds are no longer available in that response. If you need the ID to act on afterwards (e.g. to call another tool), call without resolveIds, or resolve separately.
get_dataroom_permissions
Get the full raw entity record by ID. Use this only when the user explicitly requests the full entity record, or when fields needed are not available from list_entities.
get_entity
Get time-series metric data for a specific fund and metric. IMPORTANT WORKFLOW: 1. Call list_investments to find the fund ID. 2. Call list_fund_metrics to find the metric ID. 3. Call this tool with those values. yearEnd is optional — omit it to use the fund's own default fiscal year end automatically. TABLE INDEX MODES: - Use tableIndex=actuals (default) for actual reported data. Do NOT send scenario. - Use tableIndex=scenarios for scenario/forecast data. MUST send scenario (UUID from list_scenarios). QUERY MODES — choose exactly ONE: A) Point-in-time: provide asOfDate only. B) Date range: provide both filterDateFrom AND filterDateTo. Do NOT mix query modes. METRIC NAME MATCHING: - The metricId passed here must come from an EXACT (case-insensitive) match between the user's requested metric name and a 'name' field returned by list_fund_metrics. - If the user's requested metric name has no exact match in list_fund_metrics, do NOT substitute a similarly-named metric (e.g. do not return "Net Profit" data when the user asked for "Net Income"). - Instead, state explicitly that no exact match was found, list the closest candidate metric name(s) that do exist for that fund, and ask the user to confirm which one they meant before calling this tool.
get_fund_metric_data
Get full details for a specific investment (fund) by ID.
get_investment
Returns holdings summary / investment schedule data — NAV, IRR, subscriptions, distributions, multiples, and ownership — broken down by security, asset, or fund as of a specific date. FOUR SECTIONS — request whichever you need: - showSecurityAsset: one row per security, in security native currency. Use when you need security-level detail or want native-currency figures. - showSecurityAssetFund: one row per (security × fund), in fund currency. Use when you need to see how a specific security performs within a specific fund. - showAssetFund: one row per (asset × fund), in fund currency. Use for asset-level rollup within a specific fund. - showFund: one row per fund, in fund currency. Use for top-level fund performance. Returns full fund totals — not filtered to any asset. CURRENCY — no currency param. Each section has a fixed currency: - showSecurityAsset → security native currency (matches "Security Currency" view in UI) - showSecurityAssetFund, showAssetFund, showFund → fund currency (matches "Fund Currency" view in UI) This means NAV values will differ between showSecurityAsset and showSecurityAssetFund for the same security — this is correct, not a bug. FILTERS — each section takes its own filter object with either assetIds or fundIds (not both): - { "assetIds": ["id1", "id2"] } → returns rows for those assets - { "fundIds": ["id3", "id4"] } → returns rows for those funds - showFund only accepts fundIds. BEFORE CALLING: - Get assetIds from list_assets. - fundIds accepts the Investment ID returned by list_investments — pass it directly. No additional lookup required. - At least one section must be provided — the backend returns 400 if none are passed. READING THE RESPONSE: - All sections are under response.output — e.g. response.output.SecurityAsset, response.output.Fund. - response.rateLimits and response.filters are metadata — ignore when reporting results. - Each section is { columns: [...], rows: [[...]] } — use columns to map row values by name. - resolveIds is always true — assetId and fundId fields contain names, not ObjectIds. - ValuationDate is NOT the as-of date, and may lag asOfDate — this lag is expected, do not warn the user about it. What it represents depends on valuationType: - "Market": the date of the last booked VALUATION transaction. - "Cost": no valuation exists, or a subscription, return of cost, or accrued-income transaction is dated after the last valuation. valuationDate is then the date of that triggering transaction (NOT a valuation transaction), and NAV = subscriptions minus return of cost plus accrued income. - "" (empty): no valuation and no cost-triggering transaction exist — valuationDate is empty. valuationType is populated on security rows (SecurityAssetFund, SecurityAsset). On asset rows (AssetFund) it is always empty — the platform only shows the Market/Cost label at security level — but valuationDate is still set there. NAV = 0 ON SecurityAsset ROWS: - This is correct when no VALUATION transaction exists in the security's native currency. - Use showSecurityAssetFund for the same security to get the fund-currency NAV. STATUS FIELD: - status on SecurityAssetFund and AssetFund rows is correct (active / partiallyExited / exited). - status on SecurityAsset and Fund rows may return "" — this is a known bug being fixed separately. Do not report "" as the actual status. Use SecurityAssetFund status for the same security instead. COMBINING SECTIONS: - You can request multiple sections in one call. Each runs an independent query in parallel. - showFund returns the full fund total regardless of what other sections are filtering to. Example: showAssetFund filtered to Octopus Inc + showFund filtered to CryptoAlpha Fund → AssetFund shows Octopus-only data; Fund shows the full CryptoAlpha Fund total (all assets). - Do not expect the numbers to reconcile across sections when their filters differ — they answer different questions. Within the same fund and date, the fund-currency sections (SecurityAssetFund, AssetFund, Fund) now match the platform's fund page.
get_investment_schedule
Returns investment transaction values and financial metric values for a fund as of a specific date. One result object is returned per type requested, inside response.output[]. BEFORE CALLING: - Get investmentId from list_investments. Never guess or construct an ID. - investmentId is a portfolioId, NOT the Investment ID from list_investments. To resolve a fund name: call list_investments → get the Investment ID → call get_investment with that ID → read portfolioId from the result → pass that as investmentId. - Get assetId from list_assets if narrowing to a specific asset. HOW TO PASS TYPES: - Pass as a comma-separated string e.g. "SUBSCRIPTION,NAV,DISTRIBUTION". - Results come back in the same order as types were passed. - Available types: SUBSCRIPTION, DISTRIBUTION, NAV, RETURN_OF_COST, ACCRUED_INCOME, COMMITMENT, EXPENSES, GROSSIRR, GROSS_MULTIPLE, REALIZED_MULTIPLE, REALIZED_CAPITAL, REALIZED_INCOME, VALUATION. WHAT EACH TYPE MEANS: - SUBSCRIPTION: capital called/invested - DISTRIBUTION: cash returned to investors - NAV: net asset value - GROSS_MULTIPLE: (NAV + distributions) / subscriptions - GROSSIRR: gross internal rate of return - RETURN_OF_COST: capital returned against cost basis - ACCRUED_INCOME: income accrued but not yet distributed - COMMITMENT: total committed capital - EXPENSES: fund expenses - REALIZED_MULTIPLE: distributions / subscriptions - REALIZED_CAPITAL: realised capital - REALIZED_INCOME: realised income - VALUATION: valuation transaction amount CURRENCY — IMPORTANT DEFAULT: - Default is "security" if currency is NOT passed. - To get fund reporting currency values, explicitly pass currency="fund". CUMULATIVE vs PERIOD: - isCumulative=true: cumulative value up until the date specified. - isCumulative=false (default): value for the period ending on the date only. - The following types ignore isCumulative — passing it has no effect: GROSSIRR, GROSS_MULTIPLE, NAV, REALIZED_MULTIPLE. - VALUATION rejects isCumulative=true (the call errors) — a valuation is a point-in-time snapshot, not a flow, so summing successive valuations has no financial meaning. Omit isCumulative or pass "false" instead. Request VALUATION in a separate call if you also need cumulative values for other types. - For SUBSCRIPTION, COMMITMENT, EXPENSES: Always pass isCumulative=true unless the user explicitly asks for a specific period's activity only. READING THE RESPONSE: - Results are in response.output — NOT at the root level. - response.filters echoes back what was requested (metadata only). - response.rateLimits is also metadata — ignore when reporting results. - Only investment, date, type, and value are always present in each output object. Optional fields (asset, security, currency, isCumulative, isInverted) only appear in the output if they were included in the request. ZERO VALUE WARNING: - A value of 0 does NOT confirm the metric is zero — it may mean no transactions of that type exist for the fund/date combination. - Do not report 0 as a definitive figure. Qualify it as "no data found or zero." SCOPE: - Without assetId: values cover the entire fund across all assets. - With assetId: values are filtered to that specific asset within the fund.
get_investment_transactions
Get the full definition of a metric by its ID, including the formula field for formula metrics. The 'category', 'subCategory', 'tags' and 'libraries' fields are returned as human-readable names, not IDs. 'tags' and 'libraries' are arrays of names. If a name could not be resolved the raw ID is returned instead — treat any 24-character hex value in these fields as unresolved and do not present it to the user as a name. RESOLVED REFERENCE FIELDS — DO NOT PASS THESE TO OTHER TOOLS: - 'assetId' holds the asset NAME, not an ID. Do NOT pass it to get_metric_data, which requires a real asset UUID — get that from list_assets instead. - 'parentMetricId' holds the parent metric's NAME, not an ID. Do NOT pass it back into get_metric. To get the parent's ID, look its name up in list_metrics. (list_metrics returns this same field as a raw ObjectId — the two tools differ.) Use this when the user asks to break down or analyse a formula metric: 1. Call this tool with the formula metric's ID. 2. Read the returned 'formula' field to identify component metric IDs. 3. Call get_metric_data for each component metric ID separately. Do NOT infer formula components from domain knowledge — only use what this endpoint returns. The metricId passed here must come from an EXACT (case-insensitive) name match found via list_metrics — do not guess an ID for a similarly-named metric.
get_metric
Get time-series metric data for a specific asset and metric. IMPORTANT WORKFLOW: 1. Call list_assets to find the asset ID. 2. Call get_asset_details to retrieve the asset's yearEnd value (asset.metricSettings.yearEnd). 3. Call list_metrics to find the metric ID and period. 4. Call this tool with those values. TABLE INDEX MODES: - Use tableIndex=actuals (default) for actual reported data. Do NOT send scenario. - Use tableIndex=scenarios for scenario/forecast data. MUST send scenario (UUID from list_scenarios). QUERY MODES — choose exactly ONE: A) Point-in-time: provide asOfDate only. B) Date range: provide both filterDateFrom AND filterDateTo. Do NOT mix query modes. METRIC NAME MATCHING: - The metricId passed here must come from an EXACT (case-insensitive) match between the user's requested metric name and a 'name' field returned by list_metrics. - If the user's requested metric name has no exact match in list_metrics, do NOT substitute a similarly-named metric (e.g. do not return "Net Profit" data when the user asked for "Net Income"). - Instead, state explicitly that no exact match was found, list the closest candidate metric name(s) that do exist for that asset, and ask the user to confirm which one they meant before calling this tool.
get_metric_data
Get full details for a specific person by ID.
get_person
Returns accounting transaction ledger records — the same accounting transactions as list_accounting_transactions, but split out per investor. If a $100,000 distribution is allocated across 5 LPs, that's 1 transaction and 5 ledger rows, one per investor's share. BEFORE CALLING: - fundId is required. Get it from list_investments. FILTERING: - fundId (required) — filters to a single fund. - updatedAfter — ISO date, only ledger rows updated after this timestamp. - dateFrom / dateTo — transaction date range. Either or both. ISO date (YYYY-MM-DD accepted). READING THE RESPONSE: - Results are in response.output — NOT at the root level. - allocation and transactionType come back as raw ids only when resolveIds=false. - resolveIds (default true) resolves fundId, entity, asset, security, allocation, transactionType, and transactionTags from raw ids to readable names in place. parentTransaction stays an id — use it to match rows from list_accounting_transactions. - The transaction type name is in the transactionType column. PAGINATION: - Supported params: limit (max records per page), offset (records to skip), page (page number). - Use limit + offset, or limit + page — not both offset and page together. - Without limit, all records are returned in one response. Max limit is 1000. The response has no pagination/hasMore object and no total count: keep paging until a page returns fewer rows than limit.
list_accounting_ledgers
Returns fund-level accounting transaction records — capital calls, distributions, management fees, expenses. One entry per transaction event. For the per-investor breakdown of these same transactions, use list_accounting_ledgers instead. BEFORE CALLING: - fundId is required. Get it from list_investments. FILTERING: - fundId (required) — filters to a single fund. - updatedAfter — ISO date, only transactions updated after this timestamp. - dateFrom / dateTo — transaction date range. Either or both. ISO date (YYYY-MM-DD accepted). READING THE RESPONSE: - Results are in response.output — NOT at the root level. - allocation and transactionType are already full populated objects by default, regardless of resolveIds. - resolveIds (default true) additionally resolves fundId, asset, security, and transactionTags from raw ids to readable names in place. parentValuationTransaction stays an id — use it to match rows from list_asset_transactions. Set resolveIds=false to get the raw ids instead. - The transaction type name is in the transactionType.transactionType column. PAGINATION: - Supported params: limit (max records per page), offset (records to skip), page (page number). - Use limit + offset, or limit + page — not both offset and page together. - Without limit, all records are returned in one response. Max limit is 1000. The response has no pagination/hasMore object and no total count: keep paging until a page returns fewer rows than limit.
list_accounting_transactions
Find an investor account ID from a human-readable account name. Use this ONLY for ID lookup — do NOT use it to answer which entities or people belong to an account. After finding the ID, call get_account for full details. The account name column is "investorName" — accounts have no "name" field. Returns name/ID columns by default — call get_account for full record details (it accepts comma-separated IDs, max 300), or set allFields only when the request genuinely requires additional fields for many accounts at once. PAGINATION: - Use limit (rows per page, max 1000) and page. An unfiltered call defaults to the first 500 rows. - The response includes a "pagination" object: { limit, page, returned, hasMore }. - Follow pagination.hasMore to decide whether to request the next page; equivalently, returned == limit means there is likely another page. - Do NOT combine filterString with limit/page. Filtered results are capped server-side by this tool and report a totalMatches count instead — refine filterString rather than paging.
list_accounts
List all assets (portfolio companies / investments). Supports filtering by name. Use this to find an asset ID before querying its metrics or details. Always returns table format.
list_assets
The authoritative source for onboarding/KYC progress on commitments. Use this for: - Which investors onboarding into a fund or entity haven't finished KYC - What onboarding stage a commitment is stuck on, and since when - Which subscription documents are still pending approval - Overall onboarding status per commitment Do NOT use list_commitments for onboarding questions — it does not return stage or status data. Fund, entity, account, and stage names are already resolved and included by default — no separate lookup needed. PAGINATION: - Use limit (rows per page, max 1000) and page. - pagination.hasMore / pagination.totalPages tells you whether to request another page.
list_commitment_onboarding
The AUTHORITATIVE source for commitment analytics. Use this for: - Exact commitment amounts per entity or account - Commitment statuses (committed / pending) - Commitment dates - Total invested amounts by entity, account, or fund - Mapping commitments to entities and funds Do NOT use embedded commitment arrays from account or entity records for any of the above — always use this endpoint instead. WORKFLOW NOTES: - To get commitments for an account: pass account=<accountId> - To get commitments for a single entity: pass entity=<entityId> - Resolve entity IDs to names using list_entities - Resolve fund IDs to names using list_investments - Flag blanks, tiny values, duplicates, and outliers rather than silently normalising them
list_commitments
List companies by name, to resolve a company name into a company ID. Returns name/ID columns by default — call get_company for full record details (it accepts comma-separated IDs, max 300), or set allFields only when the request genuinely requires additional fields for many companies at once. PAGINATION: - Use limit (rows per page, max 1000) and page. An unfiltered call defaults to the first 500 rows. - The response includes a "pagination" object: { limit, page, returned, hasMore }. - Follow pagination.hasMore to decide whether to request the next page; equivalently, returned == limit means there is likely another page. - Do NOT combine filterString with limit/page. Filtered results are capped server-side by this tool and report a totalMatches count instead — refine filterString rather than paging.
list_companies
List entities by name, to resolve an entity name into an entity ID. Returns name/ID columns by default. For entity attributes (type, domicile, source of wealth, registration, legal structure, risk fields, etc.) call get_entity with the ID — that is the authoritative source. Set allFields here only when the request genuinely requires attributes for many entities at once; for a single entity, always prefer get_entity. Do NOT infer entity attributes from account-embedded entity objects — resolve the entity ID and call get_entity instead. PAGINATION: - Use limit (rows per page, max 1000) and page. An unfiltered call defaults to the first 500 rows. - The response includes a "pagination" object: { limit, page, returned, hasMore }. - Follow pagination.hasMore to decide whether to request the next page; equivalently, returned == limit means there is likely another page. - Do NOT combine filterString with limit/page. Filtered results are capped server-side by this tool and report a totalMatches count instead — refine filterString rather than paging.
list_entities
List all available fund-level metrics (KPIs like NAV, IRR, DPI, and custom fund KPIs) for a specific fund. Returns enriched data with metric IDs and names. Use this to discover which fund metrics are available before querying their data. This list returns identifying fields only: '_id', 'name', 'dataType', 'isParentMetric', 'parentMetricId', 'carryType', 'createdAt' and 'updatedAt'. The 'category', 'subCategory', 'tags' and 'libraries' fields are NOT included here — call get_metric for a specific metric if you need them. Do not group, filter or report on those fields based on this tool's output. METRIC NAME MATCHING: When resolving a user-requested metric name to a metric ID, require an EXACT (case-insensitive) match against the returned 'name' field. Do NOT treat a similarly-named metric as a match (e.g. "Net Income" is NOT a match for "Net Profit"). If no exact match exists, do not guess — report that no exact match was found and list the closest candidate names instead.
list_fund_metrics
List investments (funds). Use this mainly to resolve a fund ID to a human-readable fund name. Do not send allFields or resolveIds — only outputFormat and optional filterString.
list_investments
List all available metrics (KPIs like Revenue, EBITDA, Headcount, etc.). Can be filtered by a specific asset. Returns enriched data with metric IDs and names. Use this to discover which metrics are available before querying their data. This list returns identifying fields only: '_id', 'name', 'dataType', 'isParentMetric', 'parentMetricId', 'carryType', 'createdAt' and 'updatedAt'. The 'category', 'subCategory', 'tags' and 'libraries' fields are NOT included here — call get_metric for a specific metric if you need them. Do not group, filter or report on those fields based on this tool's output. 'parentMetricId' is a raw ObjectId in this list (note: get_metric returns the same field as a NAME instead). METRIC NAME MATCHING: When resolving a user-requested metric name to a metric ID, require an EXACT (case-insensitive) match against the returned 'name' field. Do NOT treat a similarly-named metric as a match (e.g. "Net Income" is NOT a match for "Net Profit"). If no exact match exists, do not guess — report that no exact match was found and list the closest candidate names instead.
list_metrics
List persons (contacts/individuals) by name or filter. Use this when enrichment beyond account-linked contacts is needed. Always returns allFields, table format.
list_persons
List available scenarios (forecasts/projections) for an asset or fund. Use this to find a scenario UUID before calling get_metric_data with tableIndex=scenarios.
list_scenarios
The source for Smart Workflow progress — general stage-based workflows attached to accounts, entities, commitments, assets, or people. This is separate from fund onboarding. For fund onboarding workflows, use list_commitment_onboarding instead. Use this tool to: - Check what stage an account, entity, commitment, asset, or person is at in a workflow - See what is left to complete or review for a specific workflow assignment - Check the overall status of each workflow entry Use list_smart_workflow_templates first to find the template ID by name. Template and relationship names are resolved by default. Stage names are returned in stages[]; keys inside stagesData remain raw stage IDs. Per-stage status and overallStatus are included by default. Set includeStageStatuses=false for a leaner response when you only need relationship or workflow-existence data. Status values (stages[].status, overallStatus, and stagesData[stageId].status): - resolveIds=true (default): Not Started, In Progress, Submitted/Under Review, Completed, Not required, Archived - resolveIds=false: not_started, in_progress, submitted, approved, not_required, archived (stagesData may also contain the legacy value completed, equivalent to approved) Known limitations: - For account-linked workflows, the entity behind the account is not resolved; for asset-linked workflows, the account/entity behind the asset is not resolved. This is a platform limitation, not specific to this tool. - For commitment-linked workflows, the account and entity names are returned as accountName / entityName inside relationshipFields. - For kyc_document_upload stages, raw document data in stagesData uses KCYDocuments / KCYDocumentsSettingId (a known typo in the underlying schema, not KYCDocuments). Pagination: - Use limit (rows per page, max 1000) and page. - pagination.hasMore / pagination.totalPages tells you whether to request another page.
list_smart_workflow_entries
List Smart Workflow templates (the checklist definitions) by name, to resolve a template name into a templateId. Use list_smart_workflow_entries to see actual progress against a template. PAGINATION: - Use limit (rows per page, max 1000) and page. - pagination.hasMore tells you whether to request another page; pagination.totalPages is only present when page was passed.
list_smart_workflow_templates
Search across multiple object types by name in a single call. Returns a flat list of matches, each tagged with its objectType (asset, entity, person, company, account, investment) and id. USE THIS FIRST when the user refers to something by name but you do not yet know its type or ID — e.g. "how is Algolia doing?" or "show me everything for Altman". It resolves a fuzzy name into concrete { id, name, objectType } records so you know which get_* tool to call next. This tool ONLY finds records and their IDs/types — it does NOT return details. After identifying the right record, call the matching tool (get_asset_details, get_entity, get_person, get_company, get_account, get_investment) with the returned id. Matching is case-insensitive partial match on the object name (accounts match on investor name).
search
Returns raw individual asset transaction records for a fund, asset, or security. DIFFERENCE FROM get_investment_transactions: - get_investment_transactions returns aggregated metric values (NAV, IRR, subscription totals). - list_asset_transactions returns the raw individual transaction records themselves. Use this tool when you need the actual transaction entries, not rolled-up metrics. BEFORE CALLING: - investment is a Portfolio ID, NOT the Fund Vehicle ID returned by list_investments. To filter by a fund name: call list_investments → get the Investment ID → call get_investment with that ID → read portfolioId from the result → pass that as investment. - Get asset ID from list_assets if filtering by asset. - All params are optional — omitting all returns every transaction in the environment. FILTERING: - Pass investment, asset, security, or type to narrow results. - Pass updatedAfter (ISO date) to get only transactions updated after that point — matches updatedAt, not createdAt, so edits to existing records are captured. - IMPORTANT: the fund filter param is called "investment", not "investmentId". - type must be one or multiple of the enum values — the backend validates and throws if an invalid value is passed. Custom transaction type names configured in the admin UI are also valid — do not flag unrecognised type values as invalid or non-standard. READING THE RESPONSE: - Results are in response.output — NOT at the root level. - response.filters is {} when no filter params were passed — this is normal. - response.rateLimits is metadata — ignore when reporting results. - Each record has two amount fields: - amount: transaction amount in the security's native currency. - amountInfundCurrency: transaction amount converted to fund reporting currency. - amount can be negative — this is normal and represents returns or redemptions. - units and unitPrice are only populated for transactions tied to a specific security (e.g. SUBSCRIPTION, VALUATION) — they are empty for types with no unit-level basis, such as EXPENSES and ACCRUED_INCOME. - unitPrice has no fund-currency equivalent (unlike amount → amountInfundCurrency) — it is always expressed in the security's native currency. - reportingDate is in YYYY-MM-DD format — not a full ISO timestamp. - Results are ordered by createdAt, not reportingDate. Do not assume chronological order. MATCHING FIELDS — IMPORTANT: - The "investment" filter param matches against the "portfolio" field in the response, NOT the "fund" field. - "portfolio": the Portfolio ID — matches the portfolioId from get_investment, NOT the ID from list_investments. - "fund": the parent Fund Vehicle ID — one level above, a different entity. - Do not cross-reference the passed investment ID against "fund" in results — they will not match. ZERO AMOUNT WARNING: - amount: 0 does NOT mean the transaction is zero in all currencies. A record can have amount: 0 with amountInfundCurrency: 30,000,000 when the security currency differs from the fund currency. - Always check amountInfundCurrency for the fund-level figure. DYNAMIC FIELDS: - dynamicFields[] contains custom fields configured per client environment. - Use renderedValue (not outputValue) when displaying dynamic field values to users. outputValue can be a raw ID array — renderedValue is always human-readable. - dynamicFields can be an empty array [] — this is normal. - The "type" field inside each dynamicField object is the UI field type (e.g. "selectMultiple") — not the transaction type. DELETED TRANSACTIONS: - By default, deleted transactions are excluded from results. - Pass includeDeleted=true to include them. Deleted records will have isDeleted: true. - Deletion tracking is only available on environments upgraded after 22 May 2026. Transactions deleted before that date cannot be retrieved even with includeDeleted=true. PAGINATION: - Supported params: limit (max records per page), offset (records to skip), page (page number). - Use limit + offset, or limit + page — not both offset and page together. - The response includes a "pagination" object: { limit, offset, hasMore }. - Use pagination.hasMore to know when to stop — if true, there are more records to fetch. - response.count is the number of records in the current page, not the total record count. - Without limit, the endpoint appears to return all records in one response.
Atominvest ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Atominvest'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.
What are Atominvest alternatives on ChatGPT?
As of 2026-11-02, Atominvest competes with Capable Cap Table, Capital Company, Chronograph GP, Chronograph LP, Clerky, Dillien VDR, FamilyOFX, Further and 1 more in ChatGPT Private Capital Portfolio Operations, 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.