activities_get
ChatGPTExpand one or more activity references to their full payloads. Results from activities_search carry {activity_class, id} handles. Pass them here (batched — a single handle is just a list of length 1) to retrieve full activity detail, including subject, summary, logged-email subject/body, and the keyed related object of parent entities. Handles you may not access (another firm's, or an inaccessible deal's) are silently dropped from the response. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: handles: A list of {"activity_class": str, "id": int} references, e.g. [{"activity_class": "Activity", "id": 123}, {"activity_class": "ProjectActivity", "id": 9}].
activities_list_categories
ChatGPTList activity categories (interaction types, meeting types, call types, email types). Without parameters, returns all activity categories for the account. When project_id is provided, returns deal-specific activity categories (target-level categories like "NDA Sent", "CIM Sent", etc.) scoped to that deal. Use this to resolve activity_category_id values found in target-level deal activity records from deals_search_activities. Note: for deal-level (key contact), opportunity, or contact activity categories, use the entity-specific tools instead: deals_list_activity_categories, opportunities_list_activity_categories, or contacts_list_activity_categories. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: project_id: Optional deal/project ID to scope categories to a specific deal page: Page number for pagination (default 1)
activities_search
ChatGPTSearch activity (interactions, meetings, calls, emails, notes, touchpoints, logged outreach, "Passed" decisions, comments) across the ENTIRE firm — no deal, firm, opportunity, or contact id required. Use this to answer open-ended, cross-system questions such as "has anyone passed on a deal and cited AR aging as an issue?" Compose a structured filter; results come back as structured JSON, newest first. Each result carries an {activity_class, id} handle and parents (the deal/firm/contact/ opportunity it attaches to). Pass handles to activities_get to expand any hit to its full payload, or pass a parent's id to deals_get / firms_get / contacts_get / opportunities_get. When searching, the user may be looking for activities by category_id and/or a specific string in the activity description. Sometimes users are inconsistent with their data entry, and may enter an activity in the description field, but not set the correct category ID. Conversely, users may enter a category ID but not set the correct activity description. Both of these queries, run separately, may return records responsive to their search terms, and you can avoid returning incomplete results by checking both fields separately. (However, be sure that hits on the description field are actually relevant to the user's query.) If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: query: Free-text search on activity description/subject (and logged-email subject/body). category_ids: Filter deal/target activities to these activity-category ids (e.g. the "Passed" category). Use deals_list_activity_categories to discover ids. activity_types: Power-user passthrough of coarse type tokens (comma-separated). include_activity_classes: Result scope. Defaults to the five activity classes (Activity, ContactActivity, FirmDetailActivity, OpportunityActivity, ProjectActivity). Pass "all" to also include comments, or an explicit subset. project_ids: Restrict to specific deals (re-scoped to your firm). opportunity_ids: Restrict to specific opportunities (re-scoped to your firm). firm_detail_id: Restrict to a single firm (must be owned by your firm). contact_ids: Restrict to specific contacts (re-scoped to your firm). user_ids: Comma-separated user ids to filter by activity creator. start_date: ISO date for range start (e.g. "2025-01-01"). end_date: ISO date for range end (e.g. "2025-12-31"). detail: "compact" (default — lean fields + handle + parents + description) or "full" (adds subject, summary, email, and a fully-keyed related object inline). page: Page number for pagination (default 1). per: Results per page (default 25, max 100).
contacts_get
ChatGPTGet a single contact (person, client, relationship, banker, investor, counterparty) by ID. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: contact_id: The ID of the contact to retrieve
contacts_list
ChatGPTList contacts (people, clients, relationships) with pagination. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: page: Page number for pagination (default 1)
contacts_list_activity_categories
ChatGPTGet valid activity categories (interaction types, meeting types, call types) for contacts. Returns entity-specific activity category definitions with full field metadata. Use this to lookup or discover activity types that can be logged against contacts. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first.
contacts_search
ChatGPTSearch/autocomplete contacts (people, clients, relationships, bankers, investors, counterparties) by name, email, or firm. This is a free-text search endpoint (not field-based). The query matches against contact name, email, firm name, and title. Returns up to 10 results ranked by relevance. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: q: Free-text search query (matches against contact full name, email, firm name, and title) firm_detail_id: Filter results to contacts belonging to a specific firm contact_ids: Comma-separated contact IDs to exclude from results distribution_id: Filter to contacts who received a specific distribution
contacts_search_activities
ChatGPTGet activities (interactions, meetings, calls, emails, notes, touchpoints) for a contact with pagination and optional filters. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: contact_id: The contact ID additional_contact_ids: Comma-separated extra contact IDs for multi-contact lookup page: Page number for pagination (default 1) limit: Results per page (default 5) start_date: ISO date for range start (e.g. "2025-01-01") end_date: ISO date for range end (e.g. "2025-12-31") activity_types: Comma-separated activity types to filter by (e.g. "email,call") user_ids: Comma-separated user IDs to filter by activity creator query: Free-text search on activity description/subject project_ids: Filter to activities for specific deals opportunity_ids: Filter to activities for specific opportunities include_activity_classes: Filter to specific activity class types. Useful presets: Deal-related: ["Activity", "ProjectActivity", "ProjectStatusHistory", "Comment", "ProjectComment"] Opportunity-related: ["OpportunityActivity", "OpportunityStatusHistory", "OpportunityComment"]
contacts_search_tasks
ChatGPTGet incomplete tasks (to-dos, action items, follow-ups) for a contact. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: contact_id: The contact ID
deals_get
ChatGPTGet a single deal (transaction, engagement, mandate, M&A deal, aka project) by ID. NOTE: A deal is NOT the same thing as an opportunity. Do not confuse the two. Deals are active engagements representing the workflow for a possible transaction. To view the activity log for a deal, use deals_search_activities for target-level activities or deals_search_project_activities for deal-level activities. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: deal_id: The ID of the deal to retrieve
deals_get_stage_status_history
ChatGPTGet the stage/status change history for a deal (transaction, engagement, aka project). If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: deal_id: The ID of the deal to retrieve history for
deals_list
ChatGPTList active deals (aka projects) with pagination under the current user. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: page: Page number for pagination (default 1)
deals_list_activity_categories
ChatGPTGet valid activity categories for deal-level (key contact) activities. Returns categories used by deals_search_project_activities results. Use this to resolve activity_category_id values from deal-level activity records. NOTE: For target-level deal activities (from deals_search_activities), use activities_list_categories(project_id=<deal_id>) instead — those activities use a different category system. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first.
deals_list_field_list_values
ChatGPTList available filter values for a deal's targets — tags, tiers, and statuses. Returns three lists: tags — custom target tags (e.g. "Strategic Buyer", "Monthly Renewal", "Eligible for Price Increase") configured for the firm. These are the same tags visible on each target in deals_search_targets responses. tiers — target tier levels for this deal (e.g. "1", "2", "3") statuses — enabled target statuses for the firm (e.g. "Active", "Passed") Use the returned IDs with deals_search_targets's buyer_tag_id_list, tier_id_list, or status_id_list parameters to filter targets by those criteria. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: deal_id: The ID of the deal whose target filter values to list
deals_list_target_fields
ChatGPTList custom-field definitions enabled for targets on a specific deal. Returns field metadata (id, name, label, data_type) and, where applicable, the allowed values for select/picklist/boolean fields. Use the returned field IDs with deals_search_targets's field parameter to filter targets by custom criteria. Note: target fields are configured per-deal, so a deal_id is required. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: deal_id: The ID of the deal whose target field definitions to list
deals_search
ChatGPTSearch for all deals (aka projects) by name across the user's entire firm. Results here may belong to any user under the current user's firm. This is a simple name-based search. It first attempts an exact match (case-insensitive), and if no exact match is found, falls back to a wildcard/substring match limited to 10 results. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: name: Deal/project name to search for (case-insensitive)
deals_search_activities
ChatGPTGet target-level activities for a deal (interactions logged against individual buyers/targets). These are activities tied to specific targets on the deal, such as NDA tracking, CIM sends, or meetings with individual buyers. For deal-level activities not tied to a specific target, use deals_search_project_activities instead. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: deal_id: The ID of the deal to retrieve activities for page: Page number for pagination (default 1) per: Number of results per page (default 10)
deals_search_project_activities
ChatGPTGet deal-level activities for a deal (activities not tied to a specific target). These are activities logged at the deal level itself, such as general deal notes, status updates, or internal discussions about the engagement. For target-level activities (tied to individual buyers/targets), use deals_search_activities instead. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: deal_id: The ID of the deal to retrieve project activities for page: Page number for pagination (default 1) per: Number of results per page (default 10)
deals_search_targets
ChatGPTSearch and filter targets (buyers/investors) on a deal using free-text query and/or structured filters. The query performs a free-text search on target firm name. Leave query empty and use filters to browse by criteria alone. Each target in the response includes a firm_buyer_tags array of {id, name} objects showing which tags are assigned to that target. Direct filter params (comma-separated IDs): status_id_list — filter by target status (e.g. Active, Passed). tier_id_list — filter by target tier. buyer_tag_id_list — filter by target tags. To discover available tag names and their IDs, call deals_list_field_list_values first. user_id_list — filter by assigned users. Use deals_list_target_fields to discover custom field IDs for a deal, then pass them via the field param (same dict structure as firms_search / opportunities_search_advanced): {"0": {"id": "<field_id>", "operator": "is", "value": "yes", "condition": "AND"}} If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: deal_id: The ID of the deal whose targets to search query: Free-text search on target firm name (leave empty to match all) page: Page number for pagination (default 1) per: Results per page (default 50, max 500) status_id_list: Comma-separated status IDs to filter by tier_id_list: Comma-separated tier IDs to filter by buyer_tag_id_list: Comma-separated tag IDs to filter by (call deals_list_field_list_values to discover available tags) user_id_list: Comma-separated user IDs to filter by assigned user field: Structured field filter (same format as firms_search) sort: Sort field for ordering results direction: Sort direction — "ASC" or "DESC"
fields_get_list_values
ChatGPTGet the allowed picklist/dropdown values for a custom field (field values, metadata). Look up a field by its numeric ID or string name (ID takes priority). Returns the list of selectable values for that field, useful for understanding what values are valid in search filters. Exactly one of field_id or name must be provided. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: field_id: The field ID (from firms_list_fields, opportunities_list_fields, etc.) name: The field name (e.g. "stage", "status", "industry")
firms_get
ChatGPTGet a single firm (company, organization, portfolio company, target, acquirer, sponsor, client) by ID. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: firm_id: The ID of the firm to retrieve
firms_list
ChatGPTList firms (companies, organizations) with pagination. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: page: Page number for pagination (default 1)
firms_list_fields
ChatGPTList firm detail custom field definitions (metadata, picklist, dropdown fields). If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: page: Page number for pagination (default 1)
firms_search
ChatGPTSearch firms (companies, organizations, portfolio companies, targets, acquirers, sponsors) by structured field filters, covering both standard and customer-defined custom fields. This is a FIELD-BASED filter, not a free-text search: every filter targets a specific field by its numeric ID. Field IDs vary by account, so call firms_list_fields first to discover the available fields and their IDs. Representative system field names (the actual IDs come from firms_list_fields): name, city, state_abbrv, country, phone_number, email, url, about, stage, firm_industry_id, annual_revenue, annual_ebitda, employees_count, year_founded, firm_detail_object_tags, firm_detail_lists, firm_relationships, created_at, updated_at, last_interaction_at, is_public_company, contact_count How to build the field filter: field is a dict whose keys are sequential strings ("0", "1", "2", ...). Each value is one condition with these properties: - id: field ID (integer, from firms_list_fields) - operator: "is", "not", "contains", "greater", "less", "blank", "blank_not", "before", "after", or "radius" - value: the value to match (see "Setting value" below), must be a string - condition: "AND" or "OR" — how this condition combines with the others. All "AND" returns firms matching every condition; "OR" returns firms matching any. Setting value: - One value: a string or number, e.g. "Acme" or 42. - Several values for a SINGLE field (matches ANY of them): a JSON array, e.g. [5, 12]. Do NOT pass several IDs as one comma-separated string such as "5,12" — that is read as a single literal value and matches nothing. Filtering by tag (firm_detail_object_tags): Find the "firm_detail_object_tags" field ID via firms_list_fields, then use operator "is" with the tag ID(s) as the value: - Firms with ANY of several tags — one condition, value = array of tag IDs: {"0": {"id": <tags_field_id>, "operator": "is", "value": [5, 12], "condition": "AND"}} - Firms with ALL of several tags — one condition per tag, combined with "AND": {"0": {"id": <tags_field_id>, "operator": "is", "value": [5], "condition": "AND"}, "1": {"id": <tags_field_id>, "operator": "is", "value": [12], "condition": "AND"}} Filtering by list membership: Use firm_detail_list_id to restrict to firms in a single list, or the "firm_detail_lists" field within field for more complex list conditions. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: page: Page number for pagination (default 1). per: Results per page (default 10). The server enforces a minimum of 50 and a maximum of 500. firm_detail_ids: Comma-separated firm detail IDs to restrict the search to specific firms (e.g. "101,202,303"). firm_detail_list_id: Restrict to firms belonging to a single firm list. field: Structured field filter — see "How to build the field filter" above. sort: Field to sort by (e.g. "firm_details.name"). direction: Sort direction — "ASC" or "DESC".
firms_search_activities
ChatGPTGet activities (interactions, meetings, calls, emails, notes, touchpoints, outreach) for a firm with pagination and optional filters. Note: Activities for a ProjectBuyer (such as those logged against a deal) can be searched here, if you first lookup the corresponding FirmDetail ID for the ProjectBuyer. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: firm_id: The firm_detail ID page: Page number for pagination (default 1) limit: Results per page (default 10) start_date: ISO date for range start (e.g. "2025-01-01") end_date: ISO date for range end (e.g. "2025-12-31") activity_types: Comma-separated activity types to filter by (e.g. "email,call") user_ids: Comma-separated user IDs to filter by activity creator query: Free-text search on activity description/subject project_ids: Filter to activities for specific deals opportunity_ids: Filter to activities for specific opportunities include_activity_classes: Filter to specific activity class types. Useful presets: Deal-related: ["Activity", "ProjectActivity", "ProjectStatusHistory", "Comment", "ProjectComment"] Opportunity-related: ["OpportunityActivity", "OpportunityStatusHistory", "OpportunityComment"]
firms_search_tasks
ChatGPTGet incomplete tasks (to-dos, action items, follow-ups) for a firm. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: firm_id: The firm detail ID
get_tool_instructions
ChatGPTReturns setup instructions, behavioral guidance, formatting rules, and sample workflows for all MadeMarket tools (contacts, firms, deals, opportunities, tasks, activities, fields, users). MUST be called once at the start of each conversation before calling any other MadeMarket tools. Do not call it again if it has already been called in the current conversation.
opportunities_get
ChatGPTGet a single opportunity (prospects, leads, potential deals, pitches) by ID. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: opportunity_id: The ID of the opportunity to retrieve
opportunities_get_stage_status_history
ChatGPTGet the stage/status change history for an opportunity (prospects, leads, potential deals, pitches) . If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: opportunity_id: The ID of the opportunity to retrieve history for
opportunities_list
ChatGPTList all opportunities (prospects, leads, potential deals, pitches) under the current user. Note: an opportunity is NOT a deal, do not confuse the two. Opportunities are the pre-deal workflow and can eventually convert into deals. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: sort: Optional sort field (e.g. "opportunities.updated_at", "opportunities.created_at")
opportunities_list_activity_categories
ChatGPTGet valid activity categories (interaction types, meeting types, call types) for opportunities. Returns entity-specific activity category definitions with full field metadata. Use this to lookup or discover activity types that can be logged against opportunities. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first.
opportunities_list_fields
ChatGPTList opportunity custom-field definitions (metadata, picklist, dropdown fields) for the current firm. This can be used to lookup the values for IDs of custom fields, such as status, active users, client stage, financial priority, heat, marketing distribution, opportunity source, owner, tags, tier, transaction type, and more. Returns field metadata (id, name, label, data_type) and, where applicable, the allowed values for select/picklist fields. Use the returned field IDs with opportunities_search_advanced's field parameter or with fields_get_list_values to look up allowed values. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first.
opportunities_search
ChatGPTSearch for opportunities (prospects, leads, potential deals, pitches) by name across the user's entire firm. This is a simple name-based search. It first attempts an exact match (case-insensitive), and if no exact match is found, falls back to a wildcard/substring match limited to 10 results. For advanced filtering by stage, status, tier, owner, tags, or custom fields, use opportunities_search_advanced instead. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: name: Opportunity name to search for (case-insensitive; leave empty to list all) page: Page number for pagination (default 1)
opportunities_search_advanced
ChatGPTSearch opportunities (prospects, leads, potential deals, pitches) across the user's entire firm, using free-text query and/or structured filters. The query performs a free-text search across opportunity name, associated firm name, and contact names. Leave query empty and use filters to browse by criteria alone. Direct filter params (comma-separated IDs): stage_id_list, status_id_list, tier_id_list — filter by pipeline stage, status, or tier. IDs come from opportunity configuration. user_id_list — filter by opportunity owner(s). opportunity_firm_tag_ids — filter by tags applied to the opportunity's firm. Pass comma-separated tag IDs (e.g. "5,12"). opportunity_list_ids — filter to opportunities in specific lists. The field param uses the same dict structure as firms_search (numbered keys, each with id/operator/value/condition). This is for power users who know their custom field IDs. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Note: * 'is_incomplete' means the opportunity is missing at least one valid contact/email path, and does NOT pertain to the opportunity's status. To search for opportunities by their status (such as Active, etc), use the 'status_id_list' filter. Args: query: Free-text search across opportunity name, firm name, and contacts (leave empty to match all) page: Page number for pagination (default 1) per: Results per page (default 50, max 500) stage_id_list: Comma-separated stage IDs to filter by status_id_list: Comma-separated status IDs to filter by tier_id_list: Comma-separated tier IDs to filter by user_id_list: Comma-separated user IDs to filter by owner opportunity_firm_tag_ids: Comma-separated tag IDs to filter by opportunity_list_ids: Comma-separated list IDs to filter by is_incomplete: Filter to incomplete opportunities only (true/false) field: Structured field filter (same format as firms_search) sort: Sort field (e.g. "opportunities.updated_at") direction: Sort direction — "ASC" or "DESC"
tasks_search
ChatGPTSearch for tasks (to-dos, action items, follow-ups, deadlines) with optional filters. Returns tasks ordered by due date (ascending). Results are firm-wide; filtering by deal/project is not supported. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first. Args: status_ids: Integer status ID (or array of IDs) to filter by. Valid values: 301 (incomplete/open), 300 (complete). There is no "overdue" status; overdue tasks are open tasks whose due date is in the past. user_id: Filter to tasks assigned to a specific user name: Filter to tasks matching an exact name
users_get_current
ChatGPTGet the current authenticated user's profile and identity. Returns the MadeMarket user profile associated with this user. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first.
users_list
ChatGPTList all users (team members, bankers) in the current firm. Use this tool to map user IDs to names, or to discover users attached to the current firm. If get_tool_instructions hasn't been called in this chat/thread/conversation, call it first.