← Back to all apps

Harmonic

Productivityby Harmonic AI, Inc
Launched Sep 10, 2026 on ChatGPT

Search, enrich, and research startups and companies using Harmonic's proprietary data on millions of companies and the people behind them. Get detailed company profiles with funding, location, founders, and network connections. Use natural language to find companies matching specific criteria. Create and manage lists of companies and people. Access your team's network mapping and saved searches. Discover startups earlier, research them faster, and act with confidence—an AI-powered research agent built into your workflow.

43ChatGPT Tools
23Claude Tools
Harmonic AI, IncDeveloper
ProductivityCategory

Use Cases

productivity

Available Tools

Add Companies to List

add_companies_to_list
Full Description

Add companies to an existing company list. This tool can ONLY add companies — it cannot remove companies from a list. Supports company URNs, IDs, or canonical identifiers (website URL, LinkedIn, Crunchbase, Pitchbook, etc.). Judge success by 'companies_found_count' (companies matched and written by this call); duplicates already in the list are de-duped server-side. 'total_companies_count' counts only fully-enriched entries and LAGS the write by seconds to minutes, so a low value right after adding is expected — do NOT re-add based on it. Returns 'console_link', a direct link to the list.

Parameters (2 required)
Required
entriesarray

Array of company entries to add. Each entry MUST have either 'company_urn' OR 'canonical' with at least one identifier (website_url, linkedin_url, crunchbase_url, or pitchbook_url). If an entry includes custom field 'values', selectData.value and every multiSelectData.value item must be select-option URNs of the form 'urn:harmonic:select_list_custom_field_value_option:<uuid>', taken from the matching field's options[].urn in 'custom_field_definitions' returned by get_company_list_entries. Option display names are rejected.

id_or_urnstring

Company list ID or URN

Add People to List

add_people_to_list
Full Description

Add people to an existing people list. This tool can ONLY add people — it cannot remove people from a list. Supports person URNs or canonical identifiers (LinkedIn URL). Judge success by 'people_found_count' (people matched and written by this call); duplicates already in the list are de-duped server-side. 'total_people_count' counts only fully-enriched entries and LAGS the write by seconds to minutes, so a low value right after adding is expected — do NOT re-add based on it. Returns 'console_link', a direct link to the list.

Parameters (2 required)
Required
entriesarray

Array of people entries to add. Each entry MUST have either 'person_urn' OR 'canonical' with linkedin_url. If an entry includes custom field 'values', selectData.value and every multiSelectData.value item must be select-option URNs of the form 'urn:harmonic:select_list_custom_field_value_option:<uuid>', taken from the matching field's options[].urn in 'custom_field_definitions' returned by get_people_list_entries. Option display names are rejected.

id_or_urnstring

People list ID or URN

Ask Scout

ask_scout
Full Description

Hand a research request to Scout, Harmonic's agentic research analyst, and get back a task_id. Scout runs multi-step work over Harmonic's private-market dataset (companies, people, investors, funding, the caller's team network and lists) and the web: sourcing, market maps, competitor sets, diligence, candidate searches, scoring, structured extraction. Scout owns the HOW — it plans its own methodology, knows Harmonic's data model, interprets fuzzy scopes itself, and validates its results. Brief it on the user's goal, never on how to research (see input). Search results come back as pageable result sets (fetch_search_results). Users may have saved Scout skills (stored, named procedures): when the user names one, invoke it by that name plus only their new per-run parameters — never restate what the skill does. Prefer Scout whenever the request needs judgment, several steps, or a synthesized answer. Scout is also the way to search: send every request for a LIST of companies, people, or investors matching criteria here, however simple it sounds. Route elsewhere only: a single entity THE USER NAMED (entity_lookup, one at a time — never looped over names you generated yourself: that is a search and belongs here), or fields for a user-provided set (batch get_companies / get_people with the narrowest field groups, far faster than Scout). A provided set belongs here only when the ask needs work fields do not return — ranking, scoring, anything computed across the set. Every entity you present must come from a result set, never your own recall. Scout also writes to the caller's Harmonic workspace: it can create and populate lists, add columns, set values. When a request ends in the user's workspace ('find X and add them to my Q3 list'), hand Scout the WHOLE request — the write included — in one task. Do not split off, drop, or do the write yourself with list tools. Scout is deliberately slow: this returns immediately with status='pending' and work takes 2-10+ minutes. Call check_scout_status — do not stop after the task_id. Its long-poll waits up to 90 seconds; keep calling until the status is terminal and answer from the result. If you cannot wait, say Scout is still working; never substitute a shallower tool. When the conversation already holds a Scout task, CONTINUE it: pass its task_id with only the new instruction — the thread keeps the prior criteria, findings, and files, so do not restate them and do not start a fresh task. Follow-ups are cheap: send the user's ask as they made it and refine later; never add variants, breakdowns, or 'if it's easy, also…' extras they did not request.

Parameters (1 required, 1 optional)
Required
inputstring

The user's request, relayed faithfully and whole. Pass along their goal and every constraint, definition, criterion, entity, and output shape THEY stated — near-verbatim beats paraphrase, a detailed ask is never compressed into keywords, and no part of the ask (including a workspace write like 'add them to my X list') is dropped or deferred. Add nothing of your own: do not tell Scout how to research (data sources, tags, searches, how to build or verify its candidate set); do not define the user's fuzzy terms or enumerate what a named category includes — interpreting 'notable', a sector's scope, or a superlative is Scout's judgment, and your definition makes the result worse; do not add deliverables, breakdowns, scope variants, or formatting they did not ask for; do not assert anything the user did not say — no context from your own memory or tool calls, no guesses about their workspace (e.g. whether a list exists). The one addition that helps: resolve relative dates ('this year') against today's date. If the user might want more later, send their ask as-is and refine via `task_id` follow-ups.

Optional
task_idstring

To continue a finished task with a follow-up (inheriting its conversation and files), pass the task_id it returned. Omit to start a fresh task.

Default: null

Check Scout Status

check_scout_status
Full Description

Wait for Scout to finish and retrieve its answer — this is the ONLY way a request started with ask_scout comes back; it is not a status-only probe. Status is one of: pending, running, success, error, timeout, interrupted. Call this right after asking: it BLOCKS until Scout finishes (up to wait_seconds, returning the instant it does), so a single call is how you wait — no sleeping or tight looping. If it returns with status pending/running, the wait budget simply expired; call it again to keep waiting. Each call spends the user's API rate limit, so never call it with wait_seconds=0 in a loop. On 'success' the result includes content, Scout's written answer in markdown, and result_sets: the lists of entities behind that answer, each as {search_id, title, path, columns, total_count, truncated, created_at}. Present Scout's findings as the answer, WHOLE. Relay every entity Scout named and every count it stated: you may reformat into your own table, you may not omit entities, shorten a ranked list, or reduce it to a few examples — naming 3 of the 12 companies Scout presented is a failure however well written. Always state how many matched in total (total_count), that what you are showing is a sample of that set when it is, and the criteria Scout applied; when a result set has truncated=true, say the list is partial. Do not narrate plumbing — task ids, polling, wait budgets, tool names — but the size, scope, and completeness of what Scout found are part of the answer, not plumbing. content may carry fenced

:csv_table

blocks: those are display directives for Harmonic's own UI, not text for the user — never print one; read its path/row_count and say the numbers instead. Scout may also close by offering further work ('Want me to…?'). That line is addressed to YOU, not to the user: never repeat it back to them, and never treat it as licence to defer. Decide for yourself whether to do that work, offer it in your own words, or drop it. Treat terminal content as Scout's complete answer; do not verify or enrich it with other Harmonic tools unless the user separately asks you to. content quotes only a sample of a search: the full set is pageable with fetch_search_results (search_id in result_sets), and no re-search is ever needed to get it. Judge from the request and your surface whether the user is better served by the sample, the full set, or a filtered cut of it — someone who asked for a shortlist may not want every row of a set in the hundreds or thousands; someone who asked to filter, rank, or export needs them all. A thread that refined its results lists every version it presented, each pageable; path ends in _vN.csv, and the highest N of a given name is the current cut. Entries are ordered by most recent presentation, NOT by version. On the user-authenticated MCP surface, every terminal response also includes scout_usage, a snapshot taken when that status response is produced. Treat it as historical context; call check_scout_usage when the user asks for current usage after time has passed or freshness is uncertain. For an immediate question explicitly about that just-produced snapshot, use it without refreshing. Report usage facts and available actions neutrally: do not recommend conserving or spending usage, and do not infer whether another Scout task will fit within the remaining percentage. Terminal usage behavior is required in the SAME answer as Scout's result: for limit_reached, always say that another Scout task cannot run until usage resets or more is added, give resets_on, and present only the supplied recovery actions, including each action URL when present. For approaching_limit, always give percent_remaining, resets_on, and any supplied actions. Never offer other Harmonic tools as a workaround for exhausted Scout usage or tell the user to wait for the reset. Do not mention within_limit or usage_unavailable snapshots unless the user asks about usage; omit those snapshots entirely from the answer.

Parameters (1 required, 2 optional)
Required
task_idstring

The task_id returned by ask_scout.

Optional
timezonestring

IANA timezone used to format the attached Scout usage reset time (for example, "America/New_York"). Defaults to UTC.

Default: UTC
wait_secondsinteger

Long-poll: block up to this many seconds waiting for the task to finish, returning the instant it does. Defaults to 90 — leave it alone and simply call this again if the task is still running. Each call spends the caller's API rate limit, so set 0 (respond immediately with the current status) only for a one-off status check, never in a loop.

Default: 90

Check Scout Usage

check_scout_usage
Full Description

Check how much Scout usage the user currently has left, when it resets, and the actions available if they need more. Use this whenever the user asks about current Scout usage or before Scout when they want to decide based on the remaining amount. Pass the user's IANA timezone when known; omitted timezone defaults to UTC. Do not refresh when the user explicitly asks about the usage snapshot attached to a just-completed Scout task; use that snapshot as historical context. Report the returned facts and available actions neutrally: do not recommend conserving or spending usage, and do not infer whether a particular Scout task will fit within the remaining percentage.

Parameters (0 required, 1 optional)
Optional
timezonestring

IANA timezone used to format the reset time (for example, "America/New_York"). Defaults to UTC.

Default: UTC

Create Company List

create_company_list
Full Description

Create a new company list. Can optionally include companies using URNs, IDs, or canonical identifiers (website URL, LinkedIn, Crunchbase, Pitchbook, etc.). Can also create custom columns and set their values in a single operation. Returns a response with 'urn' field (e.g., 'urn:harmonic:company_watchlist:0f818bcf-...') and a 'console_link' field. IMPORTANT: use the 'console_link' field in the returned response to view the list in the console, rather than constructing the link yourself. When initial entries are provided, the response also surfaces counts from the entry-add step: 'companies_found_count' (matched and written — the success signal), 'companies_being_processed_count' (URNs still being enriched, not yet visible), and 'total_companies_count' (current size; LAGS due to enrichment, so a low value right after creation is expected).

Parameters (3 required, 1 optional)
Required
custom_fieldsarray

Optional array of custom fields (columns) to create on the list.

entriesarray

Optional array of company entries to add. Each entry MUST have either 'company_urn' OR 'canonical' with at least one identifier (website_url, linkedin_url, crunchbase_url, or pitchbook_url). Can include custom_field_values to set values for the custom columns created in this operation.

namestring

List name

Optional
shared_with_teamboolean/null

Whether to share with team (default: false).

Default: False

Create Company List Custom Field

create_company_list_custom_field
Full Description

Create a custom field (column) for a company list. Custom fields allow you to add additional data points to companies in your list. Returns the created custom field with its URN, which you'll need when setting values on list entries.

Parameters (3 required, 4 optional)
Required
field_typestring

Type of the custom field

Options:TEXTNUMBERDATESINGLE_SELECTMULTI_SELECTPERSONWEBSITECHECKBOXSTATUS
list_urnstring

Company list URN (e.g., 'urn:harmonic:company_watchlist:uuid')

namestring

Name of the custom field (column header)

Optional
dateMetadataobject
numberMetadataobject
personMetadataobject
selectMetadataobject

Create Global Custom Field

create_global_custom_field
Full Description

Create a new global custom field for companies or people. Unlike list custom fields (columns on a specific list), global fields are properties on the company/person record itself, visible across all lists.

Parameters (3 required, 4 optional)
Required
entity_typestring

Type of entity this field applies to

Options:companypeople
field_typestring

Type of the custom field

Options:TEXTNUMBERDATESINGLE_SELECTMULTI_SELECTPERSONWEBSITECHECKBOXSTATUS
namestring

Name of the custom field

Optional
dateMetadataobject
numberMetadataobject
personMetadataobject
selectMetadataobject

Create People List

create_people_list
Full Description

Create a new people list. Can optionally include people using URNs or canonical identifiers (LinkedIn URL). Can also create custom columns and set their values in a single operation. Returns a response with 'urn' field (e.g., 'urn:harmonic:people_watchlist:0f818bcf-...'). and a 'console_link' field. IMPORTANT: use the 'console_link' field in the returned response to view the list in the console, rather than constructing the link yourself. When initial entries are provided, the response also surfaces counts from the entry-add step: 'people_found_count' (matched and written — the success signal), 'people_being_processed_count' (URNs still being enriched, not yet visible), and 'total_people_count' (current size; LAGS due to enrichment, so a low value right after creation is expected).

Parameters (3 required, 1 optional)
Required
custom_fieldsarray

Optional array of custom fields (columns) to create on the list.

entriesarray

Optional array of people entries to add. Each entry MUST have either 'person_urn' OR 'canonical' with linkedin_url. Can include custom_field_values to set values for the custom columns created in this operation.

namestring

List name

Optional
shared_with_teamboolean/null

Whether to share with team (default: false).

Default: False

Create People List Custom Field

create_people_list_custom_field
Full Description

Create a custom field (column) for a people list. Custom fields allow you to add additional data points to people in your list. Returns the created custom field with its URN, which you'll need when setting values on list entries.

Parameters (3 required, 4 optional)
Required
field_typestring

Type of the custom field

Options:TEXTNUMBERDATESINGLE_SELECTMULTI_SELECTPERSONWEBSITECHECKBOXSTATUS
list_urnstring

People list URN (e.g., 'urn:harmonic:people_watchlist:uuid')

namestring

Name of the custom field (column header)

Optional
dateMetadataobject
numberMetadataobject
personMetadataobject
selectMetadataobject

Enrich Companies

enrich_companies
Full Description

Get detailed data for one or more companies by their identifiers (website URL, domain, LinkedIn, etc.). Accepts an array of company objects, each with at least one identifier. Use this for company lookups when you have specific identifiers. For company name searches, use typeahead_search with search_type=COMPANY first to get the URN. For multi-company searches with criteria, use search_companies_natural_language. REQUIRED: You must specify field_groups to control which fields are returned. Select only the smallest field group(s) needed for your question to avoid bloating the response and slowing down the request. Available field groups: 'name_id_description_headcount_website' (basic info), 'funding' (funding data), 'location' (location data), 'highlights' (company highlights), 'team_correspondence_and_connections' (team connections), 'notes_and_list_membership' (notes and lists), 'web_social_headcount_timeseries' (traction metrics), 'founders_and_execs' (founders and executives), 'founders_ceo' (founders and CEO only), 'synced_affinity_lists' (affinity lists), 'mergers_acquisitions_subsidiaries' (M&A data), 'competitor_research_fields' (competitor research), 'date_added_to_harmonic' (initialization date), 'contact' (contact info), 'all' (all fields - use sparingly).

Parameters (2 required)
Required
companiesarray

Array of company identifier objects. Each object should contain at least one identifier.

field_groupsarray

REQUIRED - Specify which field groups to include. Select only the smallest field group(s) needed to avoid bloating the response.

Enrich People

enrich_people
Full Description

Enrich one or more people by their LinkedIn URLs. Accepts an array of LinkedIn profile URLs. REQUIRED: You must specify field_groups to control which fields are returned. Select only the smallest field group(s) needed for your question to avoid bloating the response and slowing down the request. Available field groups: 'basic' (id, name, profile picture, headline), 'experience' (work experience with company details), 'education' (education history), 'location' (location data), 'socials' (social media links), 'all' (all fields - use sparingly).

Parameters (2 required)
Required
field_groupsarray

REQUIRED - Specify which field groups to include. Select only the smallest field group(s) needed to avoid bloating the response.

linkedin_urlsarray

Array of LinkedIn profile URLs to enrich

Entity Lookup

entity_lookup
Full Description

Look up a SINGLE company, person, or investor by a natural-language reference and return its canonical Harmonic record(s). Use for individual lookups: an exact name ('Anthropic', 'Max Ruderman'), a name plus descriptor ('John Smith at Stripe'), or a short description of one entity. Returns a resolved match plus a few alternatives when the reference is ambiguous, each with its Harmonic URN. DO NOT use for multi-entity criteria search (e.g. 'fintech companies in NY that raised Series B') — use natural_language_search when it is available; otherwise use search_companies_natural_language. Resolves names, affiliations, descriptions, and typos.

Parameters (1 required)
Required
querystring

Natural-language reference to a single entity: an exact name, a name + descriptor, or a short description of one company, person, or investor.

Fetch Search Results

fetch_search_results
Full Description

Read the complete list of entities behind one of the result_sets returned by check_scout_status. Given its search_id plus offset/limit, returns columns, parsed JSON rows, total_count, returned_count, offset, has_more, and truncated. A result set is immutable once presented — a later refinement publishes a NEW result set rather than changing this one — so pages never overlap or shift, no matter how long you take or how many follow-up tasks run in between: call repeatedly, advancing offset by returned_count, until has_more is false, and you will have every row exactly once. truncated=true means Scout hit its row cap and the list is partial — say so, or ask Scout for a narrower query. An unknown or purged search_id is an error, not an empty page. Max 1000 rows per call. Only works on Scout result sets; for a user's saved searches use get_saved_search_results.

Parameters (1 required, 2 optional)
Required
search_idstring

The search_id of a result set returned by check_scout_status.

Optional
limitinteger

Maximum rows to return in this page. Clamped to [1, 1000].

Default: 100
offsetinteger

Zero-based row offset into the result set.

Default: 0

Get Companies

get_companies
Full Description

Get detailed data for one or more companies. Accepts Harmonic company IDs, URNs, or external identifiers (website URL, domain, LinkedIn, etc.). Harmonic IDs and URNs identify existing company records. Supported external identifiers resolve company records when a Harmonic ID or URN is unavailable. For individual company name searches, use entity_lookup. For multi-company searches with criteria, use natural_language_search when it is available; otherwise use search_companies_natural_language. REQUIRED: You must specify field_groups to control which fields are returned. Additional field groups increase response size and latency. Available field groups: 'name_id_description_headcount_website' (basic info), 'funding' (funding data), 'location' (location data), 'highlights' (company highlights), 'team_correspondence_and_connections' (team connections), 'notes_and_list_membership' (notes and lists), 'web_social_headcount_timeseries' (traction metrics), 'founders_and_execs' (founders and executives), 'founders_ceo' (founders and CEO only), 'synced_affinity_lists' (affinity lists), 'mergers_acquisitions_subsidiaries' (M&A data), 'competitor_research_fields' (competitor research), 'date_added_to_harmonic' (initialization date), 'contact' (company emails, phone numbers, exec emails, and the primary contact email with the person it belongs to), 'external_profiles' (LinkedIn, Twitter, Crunchbase, Pitchbook URLs), 'founder_submissions' (founder-submitted data including fundraising status, founder story narrative, and file attachments like pitch decks), 'custom_fields' (the company's global custom field values; requires custom-field permission), 'all' (combined field set). Limit of 50 companies per request. Note: If a company ID is -1, that means we don't yet have a canonical company record. Company profiles can be viewed in Harmonic console at: https://console.harmonic.ai/dashboard/company/<id or urn>

Parameters (1 required, 3 optional)
Required
field_groupsarray

REQUIRED - Specify which field groups to include. Additional groups increase response size and latency. 'custom_fields' returns the company's global custom field values; it requires custom-field permission, and if the caller lacks it the results are returned without custom fields (with a customFieldsWarning) rather than failing.

Optional
identifiersarray

Supported external identifier objects that resolve company records when a Harmonic ID or URN is unavailable. Each object should contain at least one identifier.

idsarray

Harmonic company IDs for existing records.

urnsarray

Harmonic company URNs for existing records.

Get Companies By Id

get_companies_by_id
Full Description

Get companies by ID or URN using GraphQL. Pass in a list of company IDs or URNs. Use the 'fields' parameter to specify which fields to include for better performance. Limit of 50 companies per request. Note: If a company ID is -1, that means we don't yet have a canonical company record. The data in latest company snapshot might not match the current state for up to 14 days. Company profiles can be viewed in Harmonic console at: https://console.harmonic.ai/dashboard/company/<id or urn>

Parameters (0 required, 3 optional)
Optional
field_groupsarray

Optional. Specify which field groups to include. If not specified, returns minimal fields (id, name, entityUrn, logoUrl). Available groups: 'name_id_description_headcount_website' (basic info), 'funding' (funding data), 'location' (location data), 'highlights' (company highlights), 'team_correspondence_and_connections' (team connections), 'notes_and_list_membership' (notes and lists), 'web_social_headcount_timeseries' (traction metrics), 'founders_and_execs' (founders and executives), 'founders_ceo' (founders and CEO only), 'synced_affinity_lists' (affinity lists), 'mergers_acquisitions_subsidiaries' (M&A data), 'competitor_research_fields' (competitor research), 'date_added_to_harmonic' (initialization date), 'contact' (contact info), 'external_profiles' (LinkedIn, Twitter, Crunchbase, Pitchbook URLs), 'all' (all fields).

idsarray

List of company IDs

urnsarray

List of company URNs

Get Companies User Connections

get_companies_user_connections
Full Description

Get team network connections to multiple companies. Returns usersInNetwork (team members connected to company) and detailed userConnections including: targetPerson (person at company with full profile, LinkedIn, current role), connectionSources, latestEmail (title, timestamp, sender/receiver emails), and latestCalendarEvent (name, time, participants).

Parameters (1 required)
Required
company_idsarray

List of company IDs (e.g., [1, 123, 456])

Get Company Connections

get_company_connections
Full Description

Get network connections into one or more companies — the people your team knows at each company, and through whom. Pick a mode: • Whole team (default, no scoping param set): every team member's connections. E.g. 'who on the team knows someone at', 'team connections to'. • Just me (only_my_connections=true): only the caller's OWN connections, scoped server-side to the authenticated user — do not pass a URN. E.g. 'do I know anyone at', 'my connections to'. • A specific teammate (connected_to_user_urn=<their URN>): only that teammate's connections; resolve the name to a URN via get_team_members first. E.g. 'who does Tyler know at'. userConnections is grouped by connected person: one row per distinct target person (name, LinkedIn, current role) with a connectedVia list of the teammate(s) who know them and each one's connectionSources — enough to answer 'who do we know / who is connected'. Email-only connections to people not resolved in Harmonic are summarized as an unresolvedEmailConnections count per company. Use connection_fields to additively pull more ONLY when needed: 'contact' for the target person's emails (outreach), 'correspondence' for each teammate's latest email + calendar event (meeting prep, last touchpoint).

Parameters (1 required, 5 optional)
Required
company_idsarray

List of company IDs (e.g., [1, 123, 456])

Optional
connected_to_user_urnstring

Optional. A specific teammate's user URN (e.g. 'urn:harmonic:user:12345') to return only that teammate's connections — for 'who does <teammate> know at'. Resolve the name to a URN via get_team_members first. For the caller's OWN connections, use only_my_connections instead of passing your own URN. Omit for team-wide queries.

connection_fieldsarray

Optional, additive. Omit for the default lean record (team member + target person name/id/LinkedIn/current role + connectionSources), which answers 'who do we know / who is connected'. Add 'contact' to include the target person's emails (only when the user wants to reach out). Add 'correspondence' to include the latest email and latest calendar event (only for meeting prep / 'what's our last touchpoint'). Each group materially enlarges the response, so request only what the user actually needs.

employee_search_inputobject

Optional. Narrows which people from the target company are surfaced in employee-based fields and connection results when using field_groups like founders_and_execs, founders_ceo, or all.

field_groupsarray

Optional. Specify which additional company field groups to include. The response always includes company id, name, entityUrn, and userConnections. Add groups like 'funding', 'location', or 'all' to include more company data alongside the connection results.

only_my_connectionsboolean

Optional (default false). Set true to return ONLY the calling user's own connections — for 'do I know anyone at', 'my connections to'. Scoped server-side to the authenticated user; do NOT also pass connected_to_user_urn (the two are mutually exclusive).

Get Company List Entries

get_company_list_entries
Full Description

Get company list entries. Pass the ID or URN of the list to get entries. Supports cursor pagination. The response includes a top-level 'custom_field_definitions' array listing every custom field on the list (URN, name, type, and option URNs for SINGLE_SELECT/MULTI_SELECT/STATUS). When calling update_company_list_entries, look up the field URN — and option URN for select-typed fields — from this array. Do not infer URNs from the name keys in per-entry 'custom_fields'.

To sort entries, pass 'sort_custom_field_urn' with the URN of the attribute to sort by (and 'sort_descending' for direction). You can sort by any of:

  • a Harmonic attribute — official record fields like name, funding total, or headcount; call explore_list_columns to get its URN (e.g. Name -> 'urn:harmonic:company_field:company_name');
  • a custom list attribute the user added to this list; get its URN from the 'custom_field_definitions' in this response;
  • a custom global attribute on the company record; get its URN from list_global_custom_fields.

If the attribute the user named is NOT in 'custom_field_definitions', do not give up — it may be a global attribute, so call list_global_custom_fields before concluding it isn't sortable. When sorting by a custom attribute (list or global), also pass 'sort_field_type' — the field's type from custom_field_definitions / list_global_custom_fields (e.g. TEXT, NUMBER, DATE).

Parameters (1 required, 7 optional)
Required
id_or_urnstring

Company list ID or URN (e.g., '780c2910-b21d-4ad2-ba04-c98ac939dbd8' or 'urn:harmonic:company_watchlist:780c2910-b21d-4ad2-ba04-c98ac939dbd8')

Optional
cursorstring

Pagination cursor from previous response

sizenumber

Number of results per page (default: 50)

sort_custom_field_urnstring

URN of the attribute to sort by: a Harmonic attribute (from explore_list_columns), a custom list attribute (from custom_field_definitions), or a custom global attribute (from list_global_custom_fields).

sort_descendingboolean

Sort in descending order (default: false)

sort_fieldstring

Field to sort by (e.g., 'company_id', 'company_entry_created_at')

sort_field_typestring

Only when sorting by a CUSTOM attribute: the field's type from custom_field_definitions / list_global_custom_fields. Not needed for Harmonic attributes.

Options:TEXTNUMBERDATESINGLE_SELECTMULTI_SELECTPERSONWEBSITECHECKBOXSTATUS
urnsarray

Filter by specific company URNs (e.g., ['urn:harmonic:company:22', 'urn:harmonic:company:1690'])

Get Company Lists

get_company_lists
Full Description

Get all company lists that the requesting user has access to. Returns lists with 'entityUrn' (e.g., 'urn:harmonic:company_watchlist:0f818bcf-...'), name, metadata, and console_link. IMPORTANT: use the 'console_link' field to view the list in the console instead of constructing the link yourself

Get Monthly Email Enrichment Usage

get_email_enrichment_usage
Full Description

Get the caller's current team-level monthly email-enrichment quota. Email credits are a pooled allowance Harmonic provides to the team for requesting verified email lookups: one credit funds one eligible person's lookup, although finding an email is not guaranteed. Harmonic's documented standard allowance is 5,000 requests per customer account per month, resetting on the first of each month; use this tool's live result as the authority for the caller's actual plan. Call this immediately before asking the user to approve request_person_emails. Explain that the contemplated request may use up to one credit per submitted person, and tell the user how many credits remain out of the team's actual monthly limit. This result is a current snapshot, not a reservation or a guarantee of final consumption.

Get Email Request Status

get_email_request_status
Full Description

Poll a job returned by request_person_emails. Status is PENDING, IN_PROGRESS, COMPLETED, or FAILED. Enrichment commonly takes at least a minute, so do not poll immediately after submission: wait at least 60 seconds before the first status check. If the job is still PENDING or IN_PROGRESS, wait at least 15 seconds between later checks. A harness that can wait should keep polling; a chat client that cannot wait should explain that no email is available yet because enrichment is still running, and let the user check later with this job ID. Terminal responses include per-person outcomes: SUCCESS, NOT_FOUND, FAILED, or SKIPPED. Each SUCCESS result with a canonical person URN also includes its numeric person ID. When a person succeeds, call get_people with that person ID to retrieve the newly found email.

Parameters (1 required)
Required
job_idstring

Job ID returned by request_person_emails. Keep it to check a still-running email request later.

Get Investors

get_investors
Full Description

Get detailed investor data for one or more investors by URN or website URL. Accepts an array of investor identifier objects. Harmonic investor URNs identify existing records; website URLs resolve investor records when a Harmonic URN is unavailable. REQUIRED: You must specify field_groups to control which fields are returned. Additional field groups increase response size and latency. Investor profiles can be viewed in Harmonic console at: https://console.harmonic.ai/dashboard/investor/<urn>

Parameters (2 required, 3 optional)
Required
field_groupsarray

Field groups to include: 'basic' (name, AUM, check size, focus areas, location), 'investments' (portfolio companies), 'co_investors' (frequent co-investors), 'partners' (investment partners), 'activity' (investment activity trends), 'network' (team connections, correspondence), 'unicorns' (unicorn companies), 'all' (all available groups). Additional groups increase response size and latency.

investorsarray

Array of investor identifier objects. Each object should contain either a Harmonic investor 'urn' for an existing record or a 'url' to resolve an investor record when a Harmonic URN is unavailable.

Optional
co_investors_limitinteger

Max co-investors to return per investor (default: 10)

Default: 10
investments_limitinteger

Max investments to return per investor (default: 20)

Default: 20
partners_limitinteger

Max partners to return per investor (default: 10)

Default: 10

Get People

get_people
Full Description

Get detailed data for one or more people. Accepts Harmonic person IDs, Harmonic person URNs, or LinkedIn profile URLs. Harmonic IDs and URNs identify existing person records. LinkedIn profile URLs resolve person records when neither is available. REQUIRED: You must specify field_groups to control which fields are returned. Additional field groups increase response size and latency. Available field groups: 'basic' (id, name, profile picture, headline, contact emails including the primary email, and email enrichment status), 'experience' (work experience with company details), 'education' (education history), 'location' (location data), 'socials' (social media links), 'custom_fields' (the person's global custom field values; requires custom-field permission), 'all' (all available groups). Limit of 50 people per request. Person profiles can be viewed in Harmonic console at: https://console.harmonic.ai/dashboard/person/<id or urn>

Parameters (1 required, 3 optional)
Required
field_groupsarray

REQUIRED - Specify which field groups to include. Additional groups increase response size and latency. 'custom_fields' returns the person's global custom field values; it requires custom-field permission, and if the caller lacks it the results are returned without custom fields (with a customFieldsWarning) rather than failing.

Optional
idsarray

Harmonic person IDs for existing records.

linkedin_urlsarray

LinkedIn profile URLs that resolve person records when a Harmonic ID or URN is unavailable.

urnsarray

Harmonic person URNs (e.g. 'urn:harmonic:person:123') for existing records.

Get People List Entries

get_people_list_entries
Full Description

Get people list entries. Pass the ID or URN of the list to get entries. Supports cursor pagination. The response includes a top-level 'custom_field_definitions' array listing every custom field on the list (URN, name, type, and option URNs for SINGLE_SELECT/MULTI_SELECT/STATUS). When calling update_people_list_entries, look up the field URN — and option URN for select-typed fields — from this array. Do not infer URNs from the name keys in per-entry 'custom_fields'.

To sort entries, pass 'sort_custom_field_urn' with the URN of the attribute to sort by (and 'sort_descending' for direction). You can sort by any of:

  • a Harmonic attribute — official record fields like name; call explore_list_columns to get its URN (e.g. Name -> 'urn:harmonic:person_field:person_name');
  • a custom list attribute the user added to this list; get its URN from the 'custom_field_definitions' in this response;
  • a custom global attribute on the person record; get its URN from list_global_custom_fields.

If the attribute the user named is NOT in 'custom_field_definitions', do not give up — it may be a global attribute, so call list_global_custom_fields before concluding it isn't sortable. When sorting by a custom attribute (list or global), also pass 'sort_field_type' — the field's type from custom_field_definitions / list_global_custom_fields (e.g. TEXT, NUMBER, DATE).

Parameters (1 required, 6 optional)
Required
id_or_urnstring

People list ID or URN (e.g., '780c2910-b21d-4ad2-ba04-c98ac939dbd8' or 'urn:harmonic:people_watchlist:780c2910-b21d-4ad2-ba04-c98ac939dbd8')

Optional
cursorstring

Pagination cursor from previous response

sizenumber

Number of results per page (default: 50)

sort_custom_field_urnstring

URN of the attribute to sort by: a Harmonic attribute (from explore_list_columns), a custom list attribute (from custom_field_definitions), or a custom global attribute (from list_global_custom_fields).

sort_descendingboolean

Sort in descending order (default: false)

sort_fieldstring

Field to sort by (e.g., 'person_id', 'person_entry_created_at')

sort_field_typestring

Only when sorting by a CUSTOM attribute: the field's type from custom_field_definitions / list_global_custom_fields. Not needed for Harmonic attributes.

Options:TEXTNUMBERDATESINGLE_SELECTMULTI_SELECTPERSONWEBSITECHECKBOXSTATUS

Get People Lists

get_people_lists
Full Description

Get all people lists that the requesting user has access to. Returns lists with 'entityUrn' (e.g., 'urn:harmonic:people_watchlist:0f818bcf-...'), name, metadata, and console_link. IMPORTANT: use the 'console_link' field to view the list in the console instead of constructing the link yourself

Get People User Connections

get_people_user_connections
Full Description

Get team network connections to multiple people. Returns each person's profile (name, LinkedIn, current role) and detailed userConnections including: which team member has the connection, connectionSources, latestEmail (title, timestamp, sender/receiver emails), and latestCalendarEvent (name, time, participants).

Parameters (1 required)
Required
person_idsarray

List of person IDs (e.g., [311822, 162553104])

Get Person Connections

get_person_connections
Full Description

Get network connections to one or more people by person ID. Returns all team members' connections by default. Pass a user URN in connected_to_user_urn to filter results to a single teammate's connections (either the caller themselves — e.g. 'my connections', 'do I know this person' — or a specific teammate, e.g. 'does Tyler know this person'). Leave connected_to_user_urn blank for general team-level queries (e.g. 'who on the team knows this person', 'team connections to'). Returns each person's profile (name, LinkedIn, current role) and userConnections. Each connection always includes the team member who has it and connectionSources — enough to answer 'do we know this person'. Add connection_fields=['correspondence'] to also include the latest email and calendar event, ONLY when the user needs correspondence/meeting context.

Parameters (1 required, 2 optional)
Required
person_idsarray

List of person IDs (e.g., [311822, 162553104])

Optional
connected_to_user_urnstring

Optional. A user URN (e.g. 'urn:harmonic:user:12345') to filter connections to only those belonging to that user. Can be the caller themselves or any teammate (use get_team_members to resolve names to URNs). Omit for team-wide queries.

connection_fieldsarray

Optional, additive. Omit for the default lean record (team member + connectionSources), which answers 'do we know this person'. Add 'correspondence' to include the latest email and latest calendar event, ONLY for meeting prep / 'what's our last touchpoint'. It materially enlarges the response.

Get Persons By Id

get_persons_by_id
Full Description

Get persons by ID or URN using GraphQL. Pass in a list of person IDs. Use the 'fields' parameter to specify which fields to include for better performance. Limit of 50 people per request. Note: Currently only supports IDs (not URNs) via GraphQL. Person profiles can be viewed in Harmonic console at: https://console.harmonic.ai/dashboard/person/<id or urn>

Parameters (0 required, 3 optional)
Optional
field_groupsarray

Optional. Specify which field groups to include. If not specified, returns minimal fields (id, entityUrn, fullName, profilePictureUrl). Available groups: 'basic' (id, name, headline, picture), 'experience' (work experience with company details), 'education' (education history), 'location' (location data), 'socials' (social media links), 'all' (all fields).

idsarray

List of person IDs

urnsarray

List of person URNs

Get Saved Search Companies Net New

get_saved_search_companies_net_new
Full Description

Get net new company results for a subscribed saved search (cursor pagination). Requires the saved search to be subscribed in Harmonic console.

Parameters (1 required, 3 optional)
Required
id_or_urnstring

Saved search ID or URN

Optional
cursorstring

Pagination cursor from previous response

new_results_sinceDateTimestring

ISO8601 datetime to get results since

sizenumber

Number of results per page (default: 50)

Get Saved Search Companies Results

get_saved_search_companies_results
Full Description

Get company saved search results with metadata (cursor pagination). Team API key can access only team-public saved searches. The saved search can be viewed in Harmonic console at: https://console.harmonic.ai/dashboard/companies/<urn>

Parameters (1 required, 2 optional)
Required
id_or_urnstring

Saved search ID or URN

Optional
cursorstring

Pagination cursor from previous response

sizenumber

Number of results per page (default: 50, max: 100)

Get Saved Search Investors Net New

get_saved_search_investors_net_new
Full Description

Get net new investor results for a subscribed saved search (cursor pagination). Requires the saved search to be subscribed in Harmonic console.

Parameters (1 required, 3 optional)
Required
id_or_urnstring

Saved search ID or URN

Optional
cursorstring

Pagination cursor from previous response

new_results_sinceDateTimestring

ISO8601 datetime to get results since

sizenumber

Number of results per page (default: 50)

Get Saved Search Investors Results

get_saved_search_investors_results
Full Description

Get investor saved search results with metadata (cursor pagination).

Parameters (1 required, 2 optional)
Required
id_or_urnstring

Saved search ID or URN

Optional
cursorstring

Pagination cursor from previous response

sizenumber

Number of results per page (default: 50, max: 100)

Get Saved Search Net New

get_saved_search_net_new
Full Description

Get net new results for a subscribed saved search (cursor pagination). Works for company, people, and investor saved searches — the entity type is determined by the saved search URN. Requires the saved search to be subscribed in the Harmonic console.

Parameters (1 required, 3 optional)
Required
id_or_urnstring

Saved search ID or URN (must be a urn:harmonic:saved_search:* URN — do NOT pass people_watchlist, company_watchlist, or other URN types)

Optional
cursorstring

Pagination cursor from previous response

new_results_since_datetimestring

ISO8601 datetime to get results since

sizenumber

Number of results per page (default: 50)

Get Saved Search People Net New

get_saved_search_people_net_new
Full Description

Get net new people results for a subscribed saved search (cursor pagination). Requires the saved search to be subscribed in Harmonic console.

Parameters (1 required, 3 optional)
Required
id_or_urnstring

Saved search ID or URN

Optional
cursorstring

Pagination cursor from previous response

new_results_sinceDateTimestring

ISO8601 datetime to get results since

sizenumber

Number of results per page (default: 50)

Get Saved Search People Results

get_saved_search_people_results
Full Description

Get people saved search results with metadata (cursor pagination). Team API key can access only team-public saved searches. The saved search can be viewed in Harmonic console at: https://console.harmonic.ai/dashboard/people/<urn>

Parameters (1 required, 2 optional)
Required
id_or_urnstring

Saved search ID or URN

Optional
cursorstring

Pagination cursor from previous response

sizenumber

Number of results per page (default: 50, max: 100)

Get Saved Search Results

get_saved_search_results
Full Description

Get saved search results with metadata (cursor pagination). Works for company, people, and investor saved searches — the entity type is determined by the saved search URN. Team API key can access only team-public saved searches. The saved search can be viewed in the Harmonic console at https://console.harmonic.ai/dashboard/companies/<urn> (people saved searches use /dashboard/people/<urn>).

Parameters (1 required, 2 optional)
Required
id_or_urnstring

Saved search ID or URN (must be a urn:harmonic:saved_search:* URN — do NOT pass people_watchlist, company_watchlist, or other URN types)

Optional
cursorstring

Pagination cursor from previous response

sizenumber

Number of results per page (default: 50, max: 100)

Get Scout Progress

get_scout_progress
Full Description

Watch a running Scout task and return what it is currently doing, as display copy for a progress view. Blocks for up to window_seconds, returning early when the task finishes. Intended for the interactive progress panel, not for reading results — use check_scout_status for the answer.

Parameters (1 required, 2 optional)
Required
task_idstring

The task_id returned by ask_scout.

Optional
include_historyboolean

Set on the first call of a caller with nothing on screen yet — a panel opening onto a task already under way, or revisiting a finished one. Replays the task's earlier steps into `steps`, and skips watching an already-finished task, returning its status a round-trip sooner.

Default: False
window_secondsinteger

Watch the task for up to this many seconds and return everything observed in that window, or return early the moment the task finishes.

Default: 20

Get Team Members

get_team_members
Full Description

Get all team members for the current customer account. Returns each team member's email, name, entityUrn, role (ADMIN, MEMBER), and status (ACTIVE, INVITED). Use this tool to find team member emails for PERSON-type custom fields on watchlists.

Get Team Network Connection Count

get_team_network_connection_count
Full Description

Get the total number of people in the account's Team Network. Returns the count as network_connection_count.

List Global Custom Fields

list_global_custom_fields
Full Description

List all global custom fields for companies or people. Unlike list custom fields (columns on a specific list), global fields are properties on the company/person record itself, visible across all lists. Use this to discover available fields and their URNs before writing field values.

Parameters (1 required)
Required
entity_typestring

Type of entity to list global fields for

Options:companypeople

List Saved Searches

list_saved_searches
Full Description

List all saved searches the user has access to. Returns saved searches with their query, type, name, creator, privacy status, and entity URN.

WARNING: Request Person Emails — May Use Monthly Email Credits

request_person_emails
Full Description

IMPORTANT: Email credits are a pooled allowance Harmonic provides to the team for requesting verified email lookups. One credit funds one eligible person's lookup, although finding an email is not guaranteed. Harmonic's documented standard allowance is 5,000 requests per customer account per month, resetting on the first; the caller's live plan may differ. Before asking for approval, call get_email_enrichment_usage and tell the user that this request may use up to one credit per submitted person, plus how many credits currently remain out of the team's actual monthly limit. People who already have an email, were attempted within the last 30 days, or cannot be resolved are dropped; if everyone is dropped, no credits are consumed. The usage result is a snapshot, not a reservation or final charge. The user must explicitly approve the possible credit use before this tool is called. Accepts either Harmonic person URNs or LinkedIn profile URLs, with up to 5,000 identifiers in one job. The response reports accepted and dropped identifiers plus a job_id. Email enrichment is asynchronous: plan for completion to take at least a minute and do not request status immediately. A harness that can wait should wait 60 seconds before the first get_email_request_status call; after completion, call get_people again to retrieve any newly found emails. A chat client that cannot wait should explain that no email is available yet because enrichment is still running, and let the user check the job status later with its job_id.

Parameters (2 required, 2 optional)
Required
maximum_email_enrichment_creditsinteger

Maximum monthly email-enrichment credits this request may consume. Must equal the number of submitted identifiers; actual consumption may be lower after backend eligibility filtering or refunds.

warning_monthly_email_credits_may_be_consumedboolean

WARNING: This request may consume monthly email-enrichment credits associated with the user's Harmonic account.

Optional
person_linkedin_urlsarray

LinkedIn profile URLs to resolve and request emails for. Provide exactly one of 'person_urns' or 'person_linkedin_urls'; leave the other unset or null.

Default: null
person_urnsarray

Harmonic person URNs to request emails for. Provide exactly one of 'person_urns' or 'person_linkedin_urls'; leave the other unset or null.

Default: null

Search Companies Natural Language

search_companies_natural_language
Full Description

Search for multiple companies matching criteria using natural language and return enriched company data. Use for queries with filters/criteria like 'fintech companies in NY that raised Series B in the last 6 months' or 'AI startups with founders from OpenAI'. DO NOT use for individual company lookups - use typeahead_search with search_type=COMPANY for company name/domain search, or enrich_company for detailed company data by website/domain. This tool returns enriched company information directly, so you don't need to make a separate call to get company details. REQUIRED: You must specify field_groups to control which fields are returned. Select only the smallest field group(s) needed for your question to avoid bloating the response and slowing down the request.

Parameters (2 required, 3 optional)
Required
field_groupsarray

REQUIRED - Specify which field groups to include. Select only the smallest field group(s) needed to avoid bloating the response.

querystring

Natural language search query with criteria/filters (e.g., 'fintech companies in NY that raised Series B', 'AI startups with OpenAI founders'). Do NOT use for single company name lookups.

Optional
cursorstring

Pagination cursor from previous response

similarity_thresholdnumber

Similarity threshold for results

sizenumber

Number of results (default: 25, max: 1000)

Set Company Global Custom Fields

set_company_global_custom_fields
Full Description

Set multiple global custom field values on a single company. Global fields are properties on the company record (not columns on a specific list). Use this when you need to update several fields at once on one company.

Parameters (2 required)
Required
company_urnstring

URN of the company to update

fieldsarray

Array of field/value pairs to set

Set People Global Custom Fields

set_people_global_custom_fields
Full Description

Set multiple global custom field values on a single person. Global fields are properties on the person record (not columns on a specific list). Use this when you need to update several fields at once on one person.

Parameters (2 required)
Required
fieldsarray

Array of field/value pairs to set

person_urnstring

URN of the person to update

Submit Data Report

submit_data_report
Full Description

Submit a data issue report to Harmonic for a company or person. Use this to report incorrect, outdated, or missing data.

Parameters (2 required, 2 optional)
Required
entity_typestring

Whether the report is about a company or a person

Options:companyperson
entity_urnstring

The URN of the company or person (e.g. 'urn:harmonic:company:123' or 'urn:harmonic:person:456'). An integer ID is also accepted.

Optional
json_detailsobject/null

Additional structured details about the data issue (free-form JSON)

textstring/null

Description of the data issue

Typeahead Search

typeahead_search
Full Description

Fast typeahead search for companies, people, or investors by name. Use this for individual lookups when you have a name (e.g., 'Clay', 'Max Ruderman', 'Sequoia'). For companies and people, returns enriched data directly via GraphQL with configurable field_groups. For investors, returns limited fields (entityUrn, type, name, logo) - use get_investors for full enrichment. For multi-company searches with criteria, use search_companies_natural_language instead.

Parameters (2 required, 2 optional)
Required
querystring

Name to search (company name, person name, or investor name)

search_typestring

Type of entity to search for

Options:COMPANYPERSONINVESTOR
Optional
company_field_groupsarray

For COMPANY search: Field groups to include. If not specified, returns basic fields (id, name, entityUrn, logoUrl, website). Available: 'name_id_description_headcount_website', 'funding', 'location', 'highlights', 'founders_and_execs', 'all'.

person_field_groupsarray

For PERSON search: Field groups to include. If not specified, returns basic fields (id, entityUrn, fullName, profilePictureUrl). Available: 'basic', 'experience', 'education', 'location', 'socials', 'all'.

Update Company List

update_company_list
Full Description

Update a company list's name or shared_with_team setting. Returns 'console_link', a direct link to the list.

Parameters (1 required, 2 optional)
Required
id_or_urnstring

Company list ID or URN

Optional
namestring

New list name

shared_with_teamboolean

Whether to share with team (true: team can see on console, false: only accessible via API)

Update Company List Custom Field

update_company_list_custom_field
Full Description

Update a custom field's name or metadata on a company list. You can update the field name or modify metadata like select options. For SINGLE_SELECT/MULTI_SELECT/STATUS fields: the options array in selectMetadata fully replaces the existing list. To rename, recolor, or reorder options without wiping data, first fetch the current field and pass each existing option's urn back unchanged in your payload; omit urn only for brand-new options. Any option whose urn is missing from the payload is deleted, which NULLs that option's value on every entry in the list.

Parameters (2 required, 5 optional)
Required
custom_field_urnstring

Custom field URN (e.g., 'urn:harmonic:company_list_custom_field:uuid')

list_urnstring

Company list URN (e.g., 'urn:harmonic:company_watchlist:uuid')

Optional
dateMetadataobject
namestring

New name for the custom field (optional)

numberMetadataobject
personMetadataobject
selectMetadataobject

Update Company List Entries

update_company_list_entries
Full Description

Update (upsert) custom field values on companies in a company list: if the company exists in the list its values are updated, otherwise it is added. Field URNs (custom_field_urn) and option URNs (data.selectData.value, every data.multiSelectData.value item) must come from 'custom_field_definitions' returned by get_company_list_entries; option display names (rather than URNs) are rejected. Judge success by 'companies_found_count' (entries matched and written); 'total_companies_count' reflects only fully-enriched entries and LAGS the write, so a low value right after the upsert is expected.

Parameters (2 required)
Required
entriesarray

Array of company entries to update. Each entry must have either 'company_urn' or 'canonical' to identify the company, plus 'values' array containing the custom field values to set. For SINGLE_SELECT, MULTI_SELECT, and STATUS fields, values[].data.selectData.value (a single URN) and every entry of values[].data.multiSelectData.value (an array of URNs) must be select-option URNs of the form 'urn:harmonic:select_list_custom_field_value_option:<uuid>', taken from the matching field's options[].urn in 'custom_field_definitions' returned by get_company_list_entries. Option display names are rejected.

list_urnstring

Company list URN (e.g., 'urn:harmonic:company_watchlist:uuid')

Update Global Custom Field

update_global_custom_field
Full Description

Update a global custom field's name or metadata (e.g., select options, number format). The field type cannot be changed after creation. For SINGLE_SELECT/MULTI_SELECT/STATUS fields: the options array in selectMetadata fully replaces the existing list. To rename, recolor, or reorder options without wiping data, first fetch the current field and pass each existing option's urn back unchanged in your payload; omit urn only for brand-new options. Any option whose urn is missing from the payload is deleted, which NULLs that option's value on every entity the field is set on.

Parameters (3 required, 4 optional)
Required
custom_field_urnstring

URN of the global custom field to update

entity_typestring

Type of entity this field belongs to

Options:companypeople
namestring

New name for the custom field

Optional
dateMetadataobject
numberMetadataobject
personMetadataobject
selectMetadataobject

Update People List

update_people_list
Full Description

Update a people list's name or shared_with_team setting. Returns 'console_link', a direct link to the list.

Parameters (1 required, 2 optional)
Required
id_or_urnstring

People list ID or URN

Optional
namestring

New list name

shared_with_teamboolean

Whether to share with team (true: team can see on console, false: only accessible via API)

Update People List Custom Field

update_people_list_custom_field
Full Description

Update a custom field's name or metadata on a people list. You can update the field name or modify metadata like select options. For SINGLE_SELECT/MULTI_SELECT/STATUS fields: the options array in selectMetadata fully replaces the existing list. To rename, recolor, or reorder options without wiping data, first fetch the current field and pass each existing option's urn back unchanged in your payload; omit urn only for brand-new options. Any option whose urn is missing from the payload is deleted, which NULLs that option's value on every entry in the list.

Parameters (2 required, 5 optional)
Required
custom_field_urnstring

Custom field URN (e.g., 'urn:harmonic:people_list_custom_field:uuid')

list_urnstring

People list URN (e.g., 'urn:harmonic:people_watchlist:uuid')

Optional
dateMetadataobject
namestring

New name for the custom field (optional)

numberMetadataobject
personMetadataobject
selectMetadataobject

Update People List Entries

update_people_list_entries
Full Description

Update (upsert) custom field values on people in a people list: if the person exists in the list their values are updated, otherwise they are added. Field URNs (custom_field_urn) and option URNs (data.selectData.value, every data.multiSelectData.value item) must come from 'custom_field_definitions' returned by get_people_list_entries; option display names (rather than URNs) are rejected. Judge success by 'people_found_count' (entries matched and written); 'total_people_count' reflects only fully-enriched entries and LAGS the write, so a low value right after the upsert is expected.

Parameters (2 required)
Required
entriesarray

Array of people entries to update. Each entry must have either 'person_urn' or 'canonical' (with linkedin_url) to identify the person, plus 'values' array containing the custom field values to set. For SINGLE_SELECT, MULTI_SELECT, and STATUS fields, values[].data.selectData.value (a single URN) and every entry of values[].data.multiSelectData.value (an array of URNs) must be select-option URNs of the form 'urn:harmonic:select_list_custom_field_value_option:<uuid>', taken from the matching field's options[].urn in 'custom_field_definitions' returned by get_people_list_entries. Option display names are rejected.

list_urnstring

People list URN (e.g., 'urn:harmonic:people_watchlist:uuid')

Upsert Company Global Custom Field Values

upsert_company_global_custom_field_values
Full Description

Set a global custom field value on one or more companies. Global fields are properties on the company record (not columns on a specific list). Sets the same field and value across all specified companies. To set different values per company, call this multiple times.

Parameters (3 required, 1 optional)
Required
company_urnsarray

Company URNs to set the value on

custom_field_urnstring

URN of the global custom field

valuestring

The value to set. Format depends on field type: TEXT: "string", NUMBER: number, DATE: "YYYY-MM-DD", SINGLE_SELECT/STATUS: "Option Name", MULTI_SELECT: ["Option 1", "Option 2"], PERSON: ["email@example.com"], WEBSITE: "https://example.com", CHECKBOX: true/false

Optional
field_typestring

Type of the custom field. If omitted, auto-detected (slightly slower).

Options:TEXTNUMBERDATESINGLE_SELECTMULTI_SELECTPERSONWEBSITECHECKBOXSTATUS

Upsert People Global Custom Field Values

upsert_people_global_custom_field_values
Full Description

Set a global custom field value on one or more people. Global fields are properties on the person record (not columns on a specific list). Sets the same field and value across all specified people. To set different values per person, call this multiple times.

Parameters (3 required, 1 optional)
Required
custom_field_urnstring

URN of the global custom field

person_urnsarray

Person URNs to set the value on

valuestring

The value to set. Format depends on field type: TEXT: "string", NUMBER: number, DATE: "YYYY-MM-DD", SINGLE_SELECT/STATUS: "Option Name", MULTI_SELECT: ["Option 1", "Option 2"], PERSON: ["email@example.com"], WEBSITE: "https://example.com", CHECKBOX: true/false

Optional
field_typestring

Type of the custom field. If omitted, auto-detected (slightly slower).

Options:TEXTNUMBERDATESINGLE_SELECTMULTI_SELECTPERSONWEBSITECHECKBOXSTATUS