accounting_and_disclosure
ChatGPTRetrieves accounting & disclosure flags for a company by ticker and country. Returns every flag in the accounting_and_disclosure category — the same set the web /accounting tab lists — not just new_accounting_issue flags. The category's flag types are resolved live from flag_type_categories, so the tool tracks taxonomy changes without code edits. Registered as accounting_and_disclosure, matching the category it returns. It was previously registered as new_accounting_issue, which named one flag type inside that category rather than the category itself; the old name is still accepted as an alias (see WebCore.MCP.ToolRegistry).
accounting_waterfall
ChatGPTReturns Canary's Forensic Accounting Report for a company — an AI-generated analysis that adjusts reported figures for known accounting anomalies and benchmarks them against analyst consensus. How to use the response: - available — check this first. If false, no report exists yet for this company. Tell the user: "Canary hasn't generated a forensic accounting report for this company yet. Coverage expands regularly — check back later." Do not attempt to read other fields. - key_takeaways — start here. A plain-language narrative summary of the most significant accounting findings. Read this before any structured data — it is the primary output. - units — read this before quoting any figure in waterfall or summary_comparison. units.money is exactly "millions" or "unverified". On "millions" the report's revenue was checked against CapIQ, and every money cell in those 2 tables is in millions of units.currency. Per-share rows are per share. On "unverified", do not assume a scale and tell the user the size of the figures couldn't be confirmed. units.currency is given either way, so it says nothing about verification. A null units.currency means the currency is unknown. units covers the cells of waterfall and summary_comparison only. Amounts in key_takeaways, notes and appendix state their own unit in the text. - waterfall — the structured accounting breakdown. Contains: - periods: list of fiscal period labels (e.g. ["FY2022", "FY2023", "FY2024"]) - labels: row names (e.g. "Reported Revenue", "Accrual Adjustment") - types: row type for each label ("reported", "adjustment", "adjusted", "consensus") - values: 2D array — values[row_index][period_index], null where data is unavailable - notes: per-row annotation strings (null when no note) - summary_comparison — reported vs. adjusted vs. consensus across key metrics in tabular form. Use for a concise multi-metric overview. - flag_types_used — list of accounting signal identifiers that triggered this analysis (e.g. ["accounts_receivable_growth", "recurring_one_time"]). Use these to explain what specific anomalies Canary detected. - appendix — supplementary analysis sections with deeper per-adjustment explanations. May be absent for some reports. - metadata — report provenance: generated_at (ISO 8601 timestamp), model (Gemini version used), version (integer report version), periods (period labels if present). Surface generated_at only if the user asks how fresh the data is. Use this tool to answer questions like: - "What is Apple's quality-adjusted revenue vs. consensus?" - "Has this company been systematically overstating earnings?" - "Which accounting adjustments are the largest and why?" Requires ticker — a ticker, ticker variant, or company name (e.g. "AAPL" or "Apple Inc"). country (e.g. "US") narrows an ambiguous match and can be omitted when the ticker or name alone is unambiguous. A query that still matches more than one company returns a list of candidates instead of a guess — re-ask passing one candidate's exact name as ticker.
business_description
ChatGPTReturns the business description for a company by ticker and country. The description has five sections: business_model, market, competition, challenges and opportunities. Each section carries its text, or is null until it has been generated.
business_quality_score
ChatGPTReturns Canary's Business Quality Score for a company — a single AI-generated letter grade, A through F, summarising market position, competitive moat and unit economics. How to use the response: - available — check this first. If false, no grade exists yet for this company. Tell the user: "Canary hasn't graded this company on business quality yet. Coverage expands regularly — check back later." Do not attempt to read other fields. - grade — the letter grade: A, B, C, D, or F. - grade_context — a preformatted, human-readable interpretation of the grade and its scale. Surface this string verbatim alongside grade. Do not rephrase it — it is designed to be read directly (e.g. "B is Good — 90 to 140 (inclusive) across 38 criteria."). - metadata — grade provenance: calculated_at (ISO 8601 timestamp). Surface it only if the user asks how recent the grade is. Use this tool to answer questions like: - "What is Apple's business quality grade?" - "What's the business quality score for Micron (A-F)?" This returns the headline grade only. It is not scored out of anything and has no numeric form here. For the underlying picture — 60 metrics scored 1 to 5 across market, business, financial and outlook — use fundamentals_metrics, which is a separate and more granular dataset rather than a decomposition of this grade. Requires ticker — a ticker, ticker variant, or company name (e.g. "AAPL" or "Apple Inc"). country (e.g. "US") narrows an ambiguous match and can be omitted when the ticker or name alone is unambiguous. A query that still matches more than one company returns a list of candidates instead of a guess — re-ask passing one candidate's exact name as ticker.
document_search
ChatGPTSearches document text. Start here for "What did the company say about X?" Returns snippets, IDs, and links, newest-first. Omit keywords to browse. Each canary_url opens this search in the Canary web app with that document selected: share it so the user can read the full document and explore the results in detail. Documents may contain third-party commentary: attribute statements to the speaker. Search related terms with OR; retry irrelevant results with exact: true. Check meta.has_more and filters. Snippets are partial: report findings, never infer absence.
document_summaries
ChatGPTLists generated summaries of a company's earnings calls and podcasts, newest-first, with source document IDs. Use for broad briefings; search the documents for specific subjects. Summaries can omit details and are not verbatim quotes. Filter document_type by call_transcript or podcast (omit for both); supports date ranges and after/before cursors.
document_summary
ChatGPTRetrieves an existing generated summary using the source document_id from document_search or document_summaries, not a summary ID. Some documents have no summary. Returns an overview, not full text or verbatim quotes; use document_search to find specific statements.
document_topic_mentions
ChatGPTLists all mentions of a single topic across a company's earnings call transcripts and podcast episodes. Use the topic_id of any entry returned by the document_topics tool to page through every mention (the spoken sentences) of that topic for the company, ordered from most recent to oldest. Each mention names the document_type it came from. Pass document_type to restrict mentions to one source type — call_transcript or podcast. Omit it to receive both. Supports date range filtering and cursor-based pagination.
document_topics
ChatGPTLists the most recent topics discussed in a company's earnings call transcripts and podcast episodes. Returns one entry per company-specific topic, newest-first. Each entry carries the topic label/category, document_count (how many of the company's documents mentioned it), and up to 5 example mentions (the actual spoken sentences). Use the topic id with the document_topic_mentions tool to page through all of a topic's mentions. A topic can span both source types, so the topic itself carries no document_type — each individual mention names the document it came from. Pass document_type (call_transcript or podcast) to restrict both the topics and their mentions to one source type; document_count then counts only documents of that type. Supports date range filtering and cursor-based pagination.
flag_screen
ChatGPTScreens the whole company universe for flags and returns one row per matching company. Use this when the question is "which companies have X?" rather than "what does company Y have?". Every other flag tool needs a ticker up front; this one finds the tickers. Each row identifies a company and summarises what it matched: flag count, the flag types hit, the most recent flag date, and a severity breakdown. To go deeper on any company in the result, pass its ticker and country straight into insider_trading, fraud_and_malfeasance, accounting_and_disclosure, management_background or fundamentals_analysis — no lookup step in between. Saying what to screen for Two ways, and exactly one is required: `category` — screen a whole group at once. Prefer this for broad questions ("any management issue", "anything accounting-related"). Its flag types are resolved live, so it keeps up with taxonomy changes. flag_types — name exact types when the question is specific. An unrecognised name is rejected and echoed back, never answered with an empty result. What the dates mean Windows filter on the date the event happened, not the date Canary detected it. "In the last month" means the executive departure, restatement or filing occurred in the last month. Scope Active companies only. No market-cap floor — small caps are included, so a result is not limited to well-known names. A bounded window is always required, which is why there is no "all history" option: an unbounded screen of the entire flag history has no natural size. Matching the web Screen page This returns the same companies as the Canary web Screen page given equivalent filters. A disagreement is a bug worth reporting, not expected variance.
fraud_and_malfeasance
ChatGPTRetrieves fraud & malfeasance flags for a company by ticker and country. Combines two flag categories — illegal_or_questionable (fraud, illegal activity, stock manipulation, investigations, regulatory scrutiny, civil lawsuits) and questionable_associations (problematic shareholders, underwriters, business partners, SPAC/reverse-merger history, stock promoters, and listing-jurisdiction risk). Both categories' flag types are resolved live from flag_type_categories, so the tool tracks taxonomy changes without code edits. Returns flags only; the internal fraud score is not exposed via MCP.
fundamentals_analysis
ChatGPTRetrieves fundamental business risk flags for a company by ticker and country. Returns every flag in the fundamental_business category — declining sales and margins, going-concern letters, financial distress, competitive and AI/positioning shifts, and the broader fundamentals-metrics signals — not a single flag type. The category's flag types are resolved live from flag_type_categories, so the tool tracks taxonomy changes without code edits.
fundamentals_metrics
ChatGPTReturns Canary's Fundamentals Metrics for a company — an AI-generated scorecard of 60 metrics across four sections (Market, Business, Sales, Margins), each with a 1-5 score, a one-year trend, and a one-sentence rationale. Scoring direction — read this first: every score is normalized so that 5 always means "favorable for the business" and 1 always means "unfavorable," regardless of which raw direction that implies for the specific metric. Low customer concentration, low capital intensity, low country risk, and low cyclicality all score toward 5, not 1. Underearning (understating true earnings power) scores better than overearning. Do not assume "high underlying number = high score" — always read the rationale if the direction isn't obvious from the metric name alone. Trend follows the same convention: "improving" always means moving toward more favorable for the business (e.g. "improving" on Churn means churn is going down). Scores are calibrated across companies so that a 3 is a genuine median outcome, not a warning sign — only roughly the top and bottom 15% of companies land on 5 or 1 for any given metric. How to use the response: - available — check this first. If false, no scorecard exists yet for this company. Tell the user: "Canary hasn't generated fundamentals metrics for this company yet. Coverage expands regularly — check back later." Do not attempt to read other fields. - metrics — a flat list of all 60 metrics. Each entry is an object with: - section: one of "Market", "Business", "Sales", or "Margins" - metric: the metric name (e.g. "Pricing power", "AI winner or loser") - score: integer 1-5, or null - trend: one of "improving_a_lot", "improving", "neutral", "worsening", "worsening_a_lot", or null - rationale: one sentence explaining the score, sourced from web search (not Canary's proprietary data) score and trend are always either both present or both null together. When both are null, the metric was deliberately judged not applicable to this company — rationale will read "Not applicable." Skip these when summarizing strengths/weaknesses; they are not missing data and not a weakness, they're a documented non-answer. To describe a company's profile in a section, filter metrics by section and look at the spread of scores — e.g. mostly 4s and 5s in "Margins" indicates a structurally strong margin profile. To find the single strongest or weakest attribute overall, sort by score across all sections. - metadata — updated_at (ISO 8601 timestamp of the last regeneration — there is no history, only the latest snapshot), total_metrics (always 60), section_counts (metric count per section, keyed by section name), scored_metrics_count (how many of the 60 have a non-null score for this company — the rest were judged not applicable). Surface updated_at only if the user asks how recent the data is. Use this tool to answer questions like: - "Is this company an AI winner or loser, and why?" - "How strong are this company's margins relative to what you'd expect?" - "What's driving the growth outlook for this company?" - "Does this company have pricing power?" This is the metric-level view of business quality. It is a different dataset than business_quality_score (one holistic A-F letter grade, not a roll-up of these metrics) and more granular than fundamentals_analysis (a short list of flags derived from a subset of these same 60 metrics when they cross a threshold). Use this tool when the user wants the full underlying picture across all four sections, not just a single grade or a triggered-flag summary. Requires ticker — a ticker, ticker variant, or company name (e.g. "AAPL" or "Apple Inc"). country (e.g. "US") narrows an ambiguous match and can be omitted when the ticker or name alone is unambiguous. A query that still matches more than one company returns a list of candidates instead of a guess — re-ask passing one candidate's exact name as ticker.
insider_trading
ChatGPTRetrieves insider trading flags (all sub-types) for a company by ticker and country.
key_debates_detail
ChatGPTReturns the full bull/bear debate for a single key debate, selected by order. Use key_debates_list first to retrieve available debates and their order values. The order field is 1-based and may shift between regenerations — if the requested order is no longer present, re-list to get current debates.
key_debates_list
ChatGPTLists key debates (bull/bear cases) for a company by ticker and country. Returns a lightweight summary of each debate — title, description, and order. Use key_debates_detail to retrieve the full bull/bear cases and evidence for a specific debate by its order.
kpi_history
ChatGPTRetrieves the full historical time series for a specific KPI metric. Use the id of any KPI entry returned by the kpi_snapshot tool to fetch all historical values for that metric and company, ordered from most recent to oldest. Values are extracted from earnings call transcripts and podcast episodes. Every entry names its origin in document_type, and document_type can be passed to restrict the series to one of them (call_transcript or podcast). Supports date range filtering and cursor-based pagination.
kpi_snapshot
ChatGPTRetrieves the most recent KPI per metric for a company. Returns one entry per distinct metric (e.g. Revenue, EPS, Active Users), each showing the value from the most recent source document. KPIs are extracted from earnings call transcripts and podcast episodes; every entry names its origin in document_type, and document_type can be passed to restrict results to one of them (call_transcript or podcast). Because only the newest value per metric is returned, a recent podcast figure can take the place of an earnings-call one. Pass document_type: "call_transcript" for the earnings-call-only view. Supports filtering by metric type (financial / non_financial) and date range. Use the after / before cursors to paginate through all metrics.
list_document_types
ChatGPTLists valid document_search types, category groupings, and default types. Pass exact leaf values as document_types, not category labels. Omit document_types or pass [] to search with defaults without calling this tool.
management_background
ChatGPTRetrieves management track-record & background flags for a company by ticker and country. Returns every flag in the management_track_record category — executive and board turnover, prior bankruptcies/delistings, related-party transactions and insider-enrichment, nepotism, poor capital allocation, insider buying/selling behaviour, and related governance signals. The category's flag types are resolved live from flag_type_categories, so the tool tracks taxonomy changes without code edits. Returns flags only; the internal insider score is not exposed via MCP.
podcast_episodes
ChatGPTLists a company's podcast episodes from the last two years, newest first. Pass the ticker and the listing country. Each row returns the episode title, the description stored from the podcast feed, the document id and the filing date. A missing description is null. Use the document id to read the full transcript of that episode. This list is not a summary and not a quote. Pages use after and before cursors. limit is from 1 to 100 and defaults to 25.
podcast_transcript
ChatGPTReads the full transcript of one podcast episode. Pass the document id from the podcast episode list. Earnings-call transcripts are not available here. The reply names each speaker and what they said. One reply holds at most 40000 characters. It stops before the next speaker when that speaker would pass the limit, and it can also stop in the middle of one speaker, after a complete segment. One segment longer than 40000 characters is returned whole. When the episode is longer, meta.after is the cursor for the next part; pass it as after. When the episode fits in one reply, there is no after cursor.
superanalyst_monitoring_plan
ChatGPTReturns the SuperAnalyst monitoring plan for a company by ticker and country. The plan contains KPIs grouped into sales, costs, and (optionally) other_key_metrics categories. Each KPI has a list of monitoring methods with a name and rationale.
superanalyst_questions_list
ChatGPTLists active SuperAnalyst questions for a company by ticker and country. Returns questions grouped by category. Each group has a human-readable category label and a questions list. Each question entry has a 1-based global order (display label only), a stable id (UUID selector), the question text, and why_important. Use superanalyst_research_plan with the id from an entry to fetch its research plan — order is a display label only and must not be used as a selector. Only categories that have at least one active question are included.
superanalyst_research_plan
ChatGPTReturns the research plan for a single SuperAnalyst question, selected by its stable id. Use superanalyst_questions_list first to retrieve available questions and their id values. Pass the id from the question the user referred to — order is a display label only. If the requested id is no longer present (question archived or replaced), re-list to get current questions.
thirteenf_firm_detail
ChatGPTReturns the full profile for a 13F investment firm identified by CIK. Use this tool after thirteenf_search_firms resolves a fund name to a CIK. You can also call it directly when the CIK is already known. How to use the response: - available — check this first. If false, the CIK was not found. Do not read other fields. Tell the user the CIK is not recognised in our 13F database. - firm — basic identity: name and cik. - track_record — historical return averages across all positions this firm has ever filed, by holding period. Each entry is {variation, price, date}. Key fields: - cagr_1year, cagr_3years, cagr_5years, cagr_10years — annualised return over the stated horizon since the position was opened - next_3months, next_6months, next_12months, next_24months — average forward return after a new position was filed May be null for firms with no computed track record yet. - latest_quarter — analytics for the most recent quarter on file. May be null for very new firms. Contains: - label — human-readable quarter label, e.g. "Q2 2025" - aum — total assets under management in USD (decimal string) - aum_change — fractional change in AUM vs prior quarter ((current − previous) / previous, e.g. 0.10 is +10%; can be negative). null when there is no prior quarter. - sector_distribution — list of {name, value, count, percentage} entries - portfolio_concentration — top-holdings concentration metrics - holding_period_distribution — distribution of how long this firm holds positions, broken down into buckets with period, total_value, count, and percentage. Sourced from the firm record and may be an empty list for newer firms.
thirteenf_firm_holdings
ChatGPTReturns a paginated list of positions a 13F investment firm holds in a given quarter. This is one firm's book. Ranked owners of an issuer → thirteenf_holders. Funds matching traits → thirteenf_screen. Use this tool after thirteenf_firm_detail or thirteenf_search_firms resolves the firm's CIK. You can also call it directly when the CIK is already known. How to use the response: - available — present only when false. If the CIK is not found in our 13F database, stop and tell the user the firm is not recognised. - quarter — the quarter whose holdings are returned, e.g. "Q2 2025". May be null when the firm has no holdings on file (or no entity-linked holdings available for auto-resolve). - quarter_resolved — true when the quarter was resolved automatically (you did not supply both year and quarter); false when you explicitly provided both. Use this to confirm which quarter was used when it matters. - data — list of position entries, ordered by value descending. Each entry: - company_name — issuer name - shares — number of shares held (integer) - value — position market value in USD (decimal string), not thousands - portfolio_percentage — share of total portfolio (string, percent) - shares_change — change in shares vs prior quarter (integer; null for new positions or when prior quarter data is unavailable) - shares_change_percentage — percentage change in shares (string; same nullability as shares_change) - sector — GICS sector label (string; may be null) - meta — pagination metadata: page, per_page, total (total positions in the resolved quarter, across all pages). When year and quarter are both omitted, the tool resolves the firm's most recent available quarter automatically. Supplying only year resolves the latest quarter in that year. Supplying only quarter resolves the latest year that has that quarter number. To pin an exact period, supply both.
thirteenf_holders
ChatGPTReturns a ranked holder list (by position dollars) for a 13F-linked issuer in a given quarter, one aggregated row per firm. Quarter is auto-resolved when omitted. If the ask is AUM and an issuer weight (or any second trait), that is a fund screen, not this list. If ranked owners vs funds matching traits is unclear, ask the human one product-language question, then pick the tool. Never name tools to the human. Call thirteenf_search_companies first when the user only has a company name or ticker. Use this tool when entity_id is already known. How to use the response: - available — present only when false. If the entity_id is unknown or not 13F-linked, stop and tell the user the issuer is not recognised. - entity — issuer extras (entity_id, name, ticker_symbol, country, sector, exchange_symbol). - quarter — the quarter whose holders are returned, e.g. "Q1 2025". May be null when nothing resolves inside the quality window. - quarter_resolved — true when the quarter was resolved automatically (you did not supply both year and quarter); false when you explicitly provided both. - available_quarters — labels inside a rolling 5-year window, newest first. - total_value — sum of holder values in the resolved quarter (USD decimal string), independent of the current page. - data — list of holder entries, ordered by value descending. Each entry: - firm_name, cik - shares, value (USD, not thousands) - portfolio_percentage — value-weighted share of the firm's portfolio - shares_change, shares_change_percentage, previous_quarter_shares - firm_aum, aum_change - rank — 1-based rank among all holders in the quarter - form_url - meta — pagination metadata: page, per_page, total (firm count). When year and quarter are both omitted, the tool resolves the issuer's most recent canonical quarter inside the last 5 calendar years. Supplying only year resolves the latest quarter in that year. Supplying only quarter resolves the latest year in the 5-year window that has that quarter. Explicit year and quarter still fetch older periods when rows exist.
thirteenf_screen
ChatGPTScreens 13F investment firms by portfolio traits and returns one row per matching fund. Use this when the question is "which funds match these traits?" (AUM, sector mix, concentration, track record, holding period, position count, and/or owns as a filter). Example: funds with AUM > $1B and Nike ≥ 3% of book in a given quarter. Results are sorted by firm name, not ranked by stake. The universe is each firm's latest analytics quarter with AUM > 0; that quarter can be stale for dead CIKs. When owns is set, owns_year and owns_quarter are required — copy them from a prior holders or firm-detail quarter in the conversation, then switch to this tool; do not keep paging a ranked list. There is no auto-resolve. If ranked owners of an issuer vs funds matching traits is unclear, ask the human one product-language question, then pick the tool. Never name tools to the human. Do not use this for "who are the largest holders of company X?" — that is thirteenf_holders (ranked by stake, auto-resolved quarter). Do not use this for "what does this fund hold?" — that is thirteenf_firm_holdings. At least one complete filter group is required. Call thirteenf_search_companies to obtain entity_ids. meta.total may be null on page > 1.
thirteenf_search_companies
ChatGPTSearch for 13F-linked companies by name, ticker, or partial phrase. Use this tool to resolve a company name or ticker to its entity_id. Many names collide, so the search step prevents agents from having to guess the exact id. Returns up to 25 ranked matches. An empty result list is a valid response — it means no company matched the query.
thirteenf_search_firms
ChatGPTSearch for 13F investment firms by name or partial name. Use this tool to resolve a fund name to its CIK before calling thirteenf_firm_detail or thirteenf_firm_holdings. Many funds share similar names (e.g. multiple "Vanguard" or "BlackRock" entities), so the search step prevents agents from having to guess the exact CIK. Returns up to 25 ranked matches ordered by trigram similarity + prefix bonuses. An empty result list is a valid response — it means no firm matched the query.
transactions_describe_dataset
ChatGPTDescribe one Transactions dataset in full: description, the columns transactions_fetch returns for it, whether it accepts an entity (brand), and example questions it answers. The advertised columns are the post-sanitization names returned for a company-grain data row from transactions_fetch. For most datasets, entity-level rows are the ones that omit a column the entity view does not carry — but the direction isn't fixed: on cross_shopping it's the company/ticker-grain row that omits peer_entity_name/focal_entity_name, which only the entity grain carries. That omission is the object-per-row shape's behavior; for a wire_format: :columnar dataset (cross_shopping, wallet_share), a column absent from a given grain's row still appears in every row's positional array, as an explicit null, since all rows share one header. Either way, describe_dataset's columns list is exact: nothing is ever emitted that isn't declared here, and nothing declared here is ever missing from a row's key set. When to use: to learn a dataset's shape before fetching. When NOT to use: to fetch data (use transactions_fetch) or to browse all datasets (use transactions_list_datasets).
transactions_fetch
ChatGPTFetch Transactions card-data for a company and dataset. Pick a dataset from the menu below (or call transactions_list_datasets / transactions_describe_dataset to explore). company accepts a name, brand, bare ticker, or SYMBOL:EXCHANGE identifier (e.g. "Apple", "AAPL", or "AAPL:NASDAQ") and is resolved automatically. When the input matches more than one company the response lists the candidates (status AMBIGUOUS_TICKER) so you can re-call with a specific ticker_exchange, each marked with entity_status the same way as below. Returns {company, data, narrative_summary, caveats, metadata}. data rows use the post-sanitization columns from transactions_describe_dataset. When the data is for an entity that was sold, shut down or added later, company.entity_status carries status, label and detail. REMOVED means the entity is no longer part of that company as of the date in label: its data is history, never present it as part of today's company. ADDED means it joined the company on that date, and data before it reflects its prior owner. Without entity_status the entity is a current part of its company. Response shape Most datasets return data as a list of row objects. Wide competitive time-series datasets (e.g. wallet_share) instead return data in a compact columnar form so years of focal-plus-peers history fit one response: "data": {"columns": ["peer_group", "period", ...], "rows": [["CLOSEST_COMPETITORS", "Q2 26", ...], ...]} Map each value in a rows entry positionally to the same index in columns. No rows or columns are dropped; the keys are simply factored into one header. Pagination (columnar datasets) These datasets hold more history than one response can carry, so a call returns the most recent whole periods that fit and a cursor for the rest under metadata.pagination: "pagination": { "more_history_available": true, "oldest_period_returned": "Q3 23", "next_call": {"tool": "transactions_fetch", "args": {"company": "...", "dataset": "wallet_share", "before": "2023-07-01"}} } To walk further back, repeat the call with the args in next_call (the before cursor returns strictly older periods). Stop when more_history_available is false. Periods come back newest-last within each page. Do not reach for date_from/date_to/days to get older data on these datasets — they are rejected; before is the only way back. Pagination (Store Level high-cardinality cuts) store_level_breakdown with store_type: "CITY" or "STORE_LEVEL" supports top_n/offset/search/rank_by (defaults: top_n 25, offset 0). This is a different pagination model from the columnar cursor above — there is no before token to copy. Page forward by incrementing offset: "metadata": { "store_type": "STORE_LEVEL", "pagination": {"total": 412, "offset": 0, "top_n": 25, "rank_by": "adjusted_sales", "more_pages_available": true} } Repeat the call with offset: offset + top_n from the previous response until more_pages_available is false. Every other store_type value (REGION, STATE, VINTAGE, STORE_AGE_BAND, ALL) returns every row in one call when the payload fits — no metadata.pagination block appears then. If the ~25KB budget truncates that response, metadata.pagination is added and the same top_n/offset/search params page the dropped stores. Datasets [Competitive] wallet_share: Card-transaction-derived WALLET SHARE for a public company against its competitive set: the focal company's and each peer's share of the peer group's combined card spend (by sales, customers, and transactions), the focal's year-over-year share change in points, and share rankings cross_shopping: Card-transaction-derived CROSS-SHOPPING metrics for a public or private focal company against each competitor within one of 5 peer-group cuts — SINGLE_CLOSEST_COMPETITOR, CLOSEST_COMPETITORS (the default), EXPANDED_PEER_GROUP, WALLET_SHARE_LIST, or AI_SUBCATEGORY: customer, spend, and transaction overlap; wallet share inside the served cut; exclusivity; and retained wallet share, each with a …
transactions_list_datasets
ChatGPTList the Transactions card-data datasets available through transactions_fetch. Returns one entry per dataset: key, title, category, shape, and a one-line summary. Optionally filter by category (substring, e.g. "Revenue") or query (keyword matched against key/title/summary). When to use: to discover which dataset answers a question before calling transactions_fetch. When NOT to use: to fetch the actual data (use transactions_fetch) or to resolve a company ticker (use transactions_resolve_company).
transactions_resolve_company
ChatGPTResolve a company name, brand, or ticker to a canonical SYMBOL:EXCHANGE identifier for Transactions card data. Accepts bare tickers (e.g. "NKE"), exchange-qualified tickers (e.g. "NKE:NYSE"), company names, or Canary brand names. Returns a single resolved company when unambiguous, a candidate list when multiple matches exist, or a not-found status when nothing matches. Use before transactions_fetch when the caller only has a fuzzy name or bare symbol rather than a SYMBOL:EXCHANGE identifier. A result for an entity that was sold, shut down or added later carries entity_status with status, label and detail. REMOVED means the entity is no longer part of that company as of the date in label: never present it as part of today's company. ADDED means it joined the company on that date, and history before it reflects its prior owner. A result without entity_status is a current part of its company.
new_accounting_issue
Claude