discover_companies
ChatGPTSearch for companies in the Daloopa database using ticker symbols or company names. This tool searches the Daloopa database for companies matching the provided keyword, which can be either a ticker symbol or company name. The search results include for each keyword, the ticker, full company name, and company ID needed for subsequent data retrieval. Search Strategy: 1. PRIMARY: Ticker Symbol Search - For ticker search: Use the exact ticker symbol (e.g., "AAPL", "MSFT") 2. SECONDARY: Company Name Search (only if ticker fails) - IMPORTANT: Omit legal entity designations (Inc., Ltd., Corp., LLC, GmbH, S.A., etc.) - Examples: Use "Apple" instead of "Apple Inc.", "Microsoft" instead of "Microsoft Corporation" 3. FALLBACK: Alternative Name Forms (if standard name fails) - If initial search returns no results, try alternative forms of the company name - Try shorter versions of the name if the full name doesn't yield results - For companies with multiple words, try the most distinctive word
discover_company_documents
ChatGPTList the financial documents Daloopa has for a company in the given quarters. !!! WHEN TO USE !!! Call this tool whenever the user wants to know which filings exist in some quarter (or wants to read one) without searching for keywords inside them. Examples of prompts that should trigger this tool: - "show me Apple's filings from last quarter" - "what did NVIDIA file in Q3 2024?" - "pull Tesla's most recent earnings transcript" - "Summarize Apple's earnings transcript from 2025Q4" For keyword-based search inside documents, use `search_documents instead. !!! HOW THIS COMPOSES WITH OTHER TOOLS !!! The intended flow is: 1. discover_companies(keywords=[...]) to resolve a ticker or company name to a numeric company_id. 2. discover_company_documents(company_id, calendar_quarters=[...]) (this tool) to list every filing in those quarters. The response includes filing_type so you can pick the row that matches what the user asked for (10-K, 10-Q, 8-K, Transcript, etc.) and then read its document_id. For Others filings, the response also includes document_type (e.g. Earnings Presentation, Investor Day Presentation) so you can disambiguate the bucket without reading every row. 3. get_document_content(document_id)` to pull document content.
discover_company_series
ChatGPTDiscover and retrieve all available financial data series for a specific company. This is the primary discovery tool for exploring what financial metrics and time series data are available for any given company in Daloopa's financial database. Use this tool to understand the breadth of financial data available before requesting specific metrics. Key Use Cases: - Explore available financial metrics for a company - Find specific series by searching with relevant keywords - Check data availability for specific time periods - Identify series IDs needed for detailed data retrieval
discover_comparable_companies_metrics
ChatGPTLook up Daloopa's taxonomy metric catalog: the canonical set of financial metrics Daloopa tracks (e.g. "Total Revenue", "Diluted EPS"), for one or more companies and/or a GICS industry, optionally narrowed further by keywords. This returns metric DEFINITIONS from the catalog, not their reported values. To pull actual numbers, pass the returned `metric_ids to get_comparable_companies_fundamentals. USE WHEN: you need the metrics common to a peer group before building a comparison, want metrics for a whole GICS industry, or need to check whether a specific metric exists for a company, e.g. "find the KPIs Apple and Google both report" or "does Tesla report free cash flow?". For a single company's full metric list, use discover_company_series instead. !!! company_ids OR industry_id IS REQUIRED !!! At least one of company_ids or industry_id must be provided. !!! HOW THIS COMPOSES WITH OTHER TOOLS !!! Pass several company_ids (a peer group) to find the metrics every company in that group reports in common -- a shared taxonomy, useful before building a peer comparison. Use the returned metric_ids with get_comparable_companies_fundamentals to pull comparable data across the whole peer group. !!! INTERSECTION, NOT UNION !!! With more than one company_id`, the result is the INTERSECTION -- only metrics mapped for EVERY listed company are returned. There is no way to request the union in a single call; if you need the union, call this tool once per company_id and merge the results yourself. !!! OUT-OF-COVERAGE IS NOT AN ERROR !!! If nothing matches (an unknown company, an industry with no coverage, or keywords with no hits), this returns an empty list, never an error.
get_company_fundamentals
ChatGPTRetrieve financial fundamentals for a specific company across specified periods. This tool fetches detailed financial data for a given company across requested time periods, filtered by specific series IDs. The data includes metrics from Income Statement, Balance Sheet, Cash Flow Statement, and various financial ratios. ═══════════════════════════════════════════════════════════════════ OUTPUT CONTRACT — READ BEFORE DOING ANYTHING ELSE ═══════════════════════════════════════════════════════════════════ Every numeric value from this tool MUST be rendered as a markdown hyperlink using the id field from the response: Format: $<value> <unit> Example: response {id: 158655532, value_quarter: 62314, unit: "Million"} renders as: $62,314 million UNACCEPTABLE outputs (these are rule violations): ✗ $62,314 million ✗ $62,314 million (source: Daloopa) ✗ $62,314 million [Daloopa] ✗ Stating "Data sourced from Daloopa" without per-number links ACCEPTABLE output: ✓ $62,314 million This applies to ALL contexts: prose, tables, artifacts, charts, bullets. End every response with: "Data sourced from Daloopa" Before responding, verify every number in your answer is linked. If any aren't, fix them before sending. ═══════════════════════════════════════════════════════════════════ get_company_status
ChatGPTTell an agent that follows a set of companies over time which of them have new data, so it can refresh only those instead of pulling fundamentals for all of them again. Covers up to 500 companies per call. Use it on any repeat run (a scheduled job, a watchlist, a later session) for companies whose fundamentals were already pulled: call this first, then call get_company_fundamentals only for the companies whose last_published_at moved since that pull. This tool is free and does not count toward datapoint usage. Returns one entry per company with company_id, latest_period (the most recent calendar period with data, e.g. "2026Q2" or "2026FY"), last_published_at (ISO 8601) and earnings_status. Unknown company IDs come back with those fields null. last_published_at moves on every publish, including a re-publish or correction of a quarter that was already out, so a moved date alone does not mean a new quarter. A change in latest_period is the signal that a new quarter was published. earnings_status is one of: - IN_PROGRESS: the latest earnings quarter is being published. Its data can be pulled now, but more of it may still be added. - READY_FOR_UPDATE: the latest quarter was published in the last 21 days. - NO_PENDING_UPDATES: the latest quarter was published more than 21 days ago and no new earnings are being processed.
get_comparable_companies_fundamentals
ChatGPTRetrieve reported values for comparable metrics across several companies, for cross-company analysis. Cite every figure as $X.XX million/billion using the returned `id. Pass exactly one of calendar_periods or fiscal_periods`; default to calendar periods. Company/metric/period combinations with no data are omitted from the result, not returned as errors. get_document_content
ChatGPTRetrieve the full text of a Daloopa-indexed financial document. Access to a document is gated on the company it belongs to: the tool resolves that company from the document and runs the same access-control and subscription flow as get_company_fundamentals. When access is denied (e.g. the user's company subscription limit is reached), a plain-text message is returned and no document content is provided; relay that message to the user verbatim. Returns one of three shapes depending on what the document needs: 1. content payload (whole document or a single section, when the document is small enough or the caller passed a valid section for a large filing): { "title": "...", "filing_type": "10-K", "document_type": "10-K", "content": "...", "section_returned": null | "Item 1A. Risk Factors", "truncated": false, "url": "https://marketplace.daloopa.com/document/{document_id}", } `content is capped on the server side and never exceeds MCP_SECTION_MAX_CHARACTERS characters. truncated is true when the cap was hit; ask for a specific section to get less text in one call. document_type is the source classification carried alongside filing_type and is useful for disambiguating broad buckets such as "Others" (for example an Earnings Presentation or Investor Day Presentation). 2. section required (when the document is a large 10-K or 10-Q and the caller did not pass a section, or passed a section that is not in available_sections): { "instruction": "This document is too large ...", "title": "...", "filing_type": "10-K", "document_type": "10-K", "total_characters": 250000, "total_sections": 16, "available_sections": [{"name": "...", "characters": 12345}, ...], "url": "https://marketplace.daloopa.com/document/{document_id}", } On a section-required response you MUST present the full available_sections list to the user (each entry's name and characters count) and ask the user which section to pull. Do NOT auto-pick a section. Once the user chooses one, call get_document_content again with that section` argument. 3. refusal (when content retrieval is not supported for this document, e.g. filing types outside the allowlist): { "error": "Document not supported for content retrieval", "filing_type": "20-F", "document_type": "20-F", "reason": "Filing type '20-F' is not supported ...", "url": "https://marketplace.daloopa.com/document/{document_id}", }
get_expert_call_transcripts
ChatGPTRetrieve expert call interview transcripts for a company: Q&A sessions with former employees, suppliers, customers and industry insiders, sourced from BlueHeron. Available only when the user's firm has the feature enabled. USE WHEN: the user wants primary-research color beyond filings: expert calls, expert interviews, channel checks, former-employee or insider views, or "what are experts saying about..." on demand, supply chain, pricing, competition, margins, product adoption or strategy. !!! STRICT RULE: CITE THE CALL URL, NO EXCEPTIONS !!! Whenever you show the user ANY content from a transcript (quote, paraphrase, summary or a single insight), cite that call's url inline: [Expert call: {interviewed_affiliation}, {call_date}]({url}) Never show transcript content without its BlueHeron link. Never alter or fabricate a URL. HOW TO USE RESULTS: - Triage with summary; read content only for the calls that are relevant. - State interviewed_affiliation (role and tenure) so the user can weigh credibility; favor the most recent call_date when views conflict. - Expert views are personal opinion, not company guidance or fact. Label them as such and corroborate with get_company_fundamentals / search_documents where possible.
get_skill
ChatGPTFetch the full instructions for a single investing skill, with inputs filled in. Use `list_skills first to discover the skill name and the inputs` it requires. Collect every required input from the user (never guess them), then call this tool to retrieve the skill's full template with those values substituted in. Follow the returned instructions to produce the deliverable.
get_stock_prices
ChatGPTRetrieve daily OHLCV stock price data for one or more companies. All dates YYYY-MM-DD. USE WHEN: user asks about P/E, EV/EBITDA, Price/Book, Price/Sales, stock reactions to earnings, price performance, or any question needing a specific stock price. DATES: use start_date/end_date for a range OR dates=[...] for discrete dates — not both. Always batch all dates into one call instead of calling once per date or quarter. QUARTER-END DATES FOR MULTIPLES: Quarter-ends can fall on weekends/holidays — always pass the last 3 days of the quarter and take the most recent date returned in ohlcv_data per quarter: Q1 → YYYY-03-29, YYYY-03-30, YYYY-03-31 Q2 → YYYY-06-28, YYYY-06-29, YYYY-06-30 Q3 → YYYY-09-28, YYYY-09-29, YYYY-09-30 Q4 → YYYY-12-29, YYYY-12-30, YYYY-12-31 Multi-quarter example (batch all windows in one call): dates=["2026-03-29","2026-03-30","2026-03-31","2026-06-28","2026-06-29","2026-06-30",...] SPOT PRICE: pass dates=[yesterday, today] — today may be a non-trading day or data not yet available. Take the most recent date returned. Example: ["2026-05-04","2026-05-05"] TTM: sum of last 4 quarters for EPS, EBITDA, Revenue; single quarter for book value.
get_usage
ChatGPTThis is a reporting assistant tool. When given usage data, present it clearly and helpfully. Follow these rules: Formatting rules - Use a compact visual summary (emoji gauges or progress indicators work well) - Show consumed / limit and percentage for each resource - Highlight resources that are APPROACHING_LIMIT (≥80%) or LIMIT_REACHED with appropriate urgency — but don't be alarmist for healthy usage - For "unlimited" limits, just say "unlimited" — skip percentage/gauge - For null resets_at (lifetime cap), say "never resets" — don't mention a date - Always mention the reset date for resources that do reset - datapoints counts distinct datapoints for the UTC month in period and is the only limit that can block. Repeat pulls of the same datapoint are free - If datapoints.scope is CUSTOMER the limit is shared with everyone at the user's firm, so say so and name customer_name - companies is information only. Never call it a limit or say it can block Tone rules by status - OK → neutral/informative tone - APPROACHING_LIMIT → mild urgency, suggest the user be mindful - LIMIT_REACHED → clear warning, tell them what they can't do and what to do next What to output 1. A one-line status summary (overall health) 2. Per-resource breakdown with gauge, numbers, and reset info 3. A short contextual note if any resource is APPROACHING_LIMIT or LIMIT_REACHED Do not output raw JSON, field names, or internal status codes.
list_skills
ChatGPTList every available investing skill (analysis/valuation/deliverable workflow). !!! PROACTIVE USE — START HERE FOR WORKFLOW REQUESTS !!! Call this tool FIRST, without waiting for the user to ask for it, whenever the user wants a structured deliverable or repeatable analysis, e.g.: - "do an earnings review of AAPL" - "build me a DCF / comps / tearsheet" - "write a research note", "prep me for NVDA earnings" The catalog is intentionally lightweight (a one or two sentence `description per skill) so this discovery call is cheap to make often. Each entry includes the inputs the skill needs to run: - name (str): The skill slug to pass to get_skill. - title (str): Human-readable skill title. - description (str): One or two sentences on what the skill produces. - inputs (list[dict]): The parameters the skill expects, each shaped {"name": ..., "type": ..., "required": bool}. !!! HOW TO PROCEED AFTER LISTING !!! 1. Pick the skill whose description matches the user's request. 2. Read its inputs. For every required input you do NOT already know, ASK THE USER for it (e.g. ticker, peer set, valuation date) before calling get_skill. Do NOT invent, guess, or default required inputs. 3. Once you have the values, call get_skill(name=..., params={...})` to fetch the full skill instructions. Returns: list[dict[str, Any]]: The full skill catalog, or a string message when no skills are available.
search_documents
ChatGPTSearch financial documents and filings with keyword matching. !!! PROACTIVE USE REQUIRED !!! Call this tool automatically when users ask about: - Qualitative information (management commentary, risk factors, strategy) - Topics like "guidance", "outlook", "risks", "competition", "acquisitions" - What management said about specific topics - Context or explanations for financial performance - Specific events, announcements, or disclosures DO NOT wait for the user to explicitly request a document search. Search across financial documents (10-K, 10-Q, 8-K, etc.) to find specific content, disclosures, management commentary, risk factors, and other qualitative information. Returns simplified document results with context snippets.
discover_companies
Claudediscover_company_series
Claudeget_company_fundamentals
Claude