Query people
query_peopleColumns: id, display_name, title, headline, company, location, timezone,
summary, linkedin_slug, linkedin_provider_id, email, mail_host, connections_count, follower_count,
is_open_profile, is_premium, work_experience (JSONB), education (JSONB), linkedin_looked_up_at,
company_profile_id, owner_email, data (JSONB), created_at, updated_at. company_profile_id is
the person's canonical employer FK (NULL when unresolved). Sliq's CRM is deals and tasks: to
see whether someone has a deal or a task, use query_deals (status='all') / query_crm_tasks
with person_id.
mail_host is the email provider hosting this person's address (Google Workspace,
Microsoft 365, …), read from their domain's MX record: google, microsoft, gateway,
other, unknown (no mail record, or the domain's DNS is broken), or '' with no email or
no successful lookup yet.
gateway means a security gateway (Mimecast,
Proofpoint) receives the mail first, which hides the provider behind it.
timezone is the IANA time zone the person is in (such as America/Los_Angeles): one set
by hand, else the one their location names. It is '' when unknown: they have no
location, it names no single zone (a country spanning several), or it isn't classified yet.
For a prospect, set it with update_prospect's timezone when you know where they are.
connections_count / follower_count are NULL when never fetched (not 0); is_open_profile /
is_premium are NULL likewise. JSONB queries: data->>'some_key' ILIKE '%...%'.
work_experience and education are the person's full LinkedIn employment and education
history — the same arrays enrich_linkedin_profiles returns, already stored on the person from
the last profile lookup, so reading them here costs nothing (answer "where did they go to
school", "are they an LSU alum", "how long in seat" from these instead of a fresh enrich).
Each is a list, in LinkedIn display order (NOT sorted by date). linkedin_looked_up_at is when
the person's full LinkedIn profile was first looked up: NULL means it never was, and a time
with empty lists means LinkedIn had no history to give. These arrays are large for senior
people — a broad limit=200 read that returns them can exceed the 50KB direct-return cap and
truncate; for a wide pull, either narrow the where_clause or call this from run_code
(nothing truncates there) and print only the fields you need.
To list the outreach prospects tracking a person, take an id from here and call
query_prospects with where_clause="person_id = <id>".
Each row also carries segments: the person's segment tags across every segment group they're
classified into — [{group_id, group_name, tag}], tag 'No match' where the classifier couldn't
place them (empty when no group has classified them). Segments are the LLM-defined
people dimensions from the Explore Segments surface (e.g. Seniority -> VP); manage them with the
segment tools (list_segment_groups etc.).
Each row also carries degree: the user's LinkedIn degree to the person, '1', '2', '3' or
'out_of_network', null when unknown — from the user's synced LinkedIn connections and what
every one of their campaigns' searches and lookups recorded. A person the user is connected to
reads '1'. It is the degree the person's profile shows beside their name.
For how many people are in each title, company, location, outreach stage or segment, or who is in one of those groups, call list_people: it reads the People table the way the user sees it, over everyone without paging for the counts. A dict with count, truncated, and items array (each row {id, display_name, title, headline, company, location, timezone, summary, linkedin_slug, linkedin_provider_id, email, mail_host, connections_count, follower_count, is_open_profile, is_premium, work_experience, education, linkedin_looked_up_at, company_profile_id, owner_email, segments: [{group_id, group_name, tag}], degree, data, created_at, updated_at}).
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "query_people"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, capped at 200). | |
| offset | No | Rows to skip for paging (default 0). When the result is truncated, re-call with offset += limit for the next page. | |
| order_by | No | SQL ORDER BY (default: created_at DESC). | created_at DESC |
| on_behalf_of | No | A teammate's email, or an agency client's from list_agency_clients, to run this call in that account: their agents, settings, connected accounts, and credits. Omit it to act on your own account. | |
| where_clause | No | SQL WHERE condition (default: all your people). Examples: "display_name ILIKE '%chen%'", "title ILIKE '%VP%'", "company_profile_id = 42", "linkedin_slug = 'some-slug'". | 1=1 |