Atominvest
Query Atominvest data directly
- 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
- 26
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for Atominvest
Get updates when Atominvest’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 Private Capital Portfolio Operations
View Category26 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 here are Portfolio IDs — NOT the Fund Vehicle ID returned by list_investments. To resolve a fund name to a fundId: list_investments → get_investment → read portfolioId → pass here. - 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 across all sections is the date of the last booked VALUATION transaction — it is NOT the as-of date. It may lag the asOfDate and may be empty if no valuation transaction exists. This lag is expected — do not warn the user about it. 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 — they answer different questions.
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
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.
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 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. Always returns allFields, table format.
list_companies
List entities by name. This is the PRIMARY source of truth for entity attributes (type, domicile, source of wealth, registration, legal structure, risk fields, etc.). Always returns allFields, table format. Do not infer entity attributes from account-embedded entity objects — use this endpoint instead.
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
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. - 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.
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 Atominvest alternatives on ChatGPT?
As of 2026-09-28, Atominvest competes with Chronograph GP, Chronograph LP, Clerky, Dillien VDR, Further, Vestd 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.