People — Enrich

Bulk enrich people

POST/people/bulk-enrich
from $0.02/calljson responserest · mcp
01// about this endpoint

Enrich up to 100 people in one call. Each record runs the same field-aware waterfall as `/people/enrich`, with a per-record budget cap via `max_cost_cents_per_record`.

02// code samples

Call it over REST

Authenticate with a bearer token against https://api.superagnt.com. Swap the placeholders for your key and parameter values.

curlbash
curl -s -X POST "https://api.superagnt.com/people/bulk-enrich" \
  -H "Authorization: Bearer <YOUR_AGNTDATA_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "inputs": [] }'
03// give it to your agent

Copy-paste prompt

Paste this into a coding agent. It connects the superagnt MCP server, finds the tool data_agnt_people_bulk_enrich, and runs a first call — with the REST fallback if MCP is unavailable.

agent prompttext
You are wiring up the superagnt "Lead APIs" API to use this endpoint: Bulk enrich people.

1. CONNECT over MCP (preferred). No token to paste either way.
   On Claude (claude.ai, the desktop app, or Claude Code signed in with a Claude
   account), the server is a connector: give the user this link, they click Add
   and approve:
     https://claude.ai/customize/connectors/yours?modal=add-custom-connector&connectorName=superagnt&connectorUrl=https%3A%2F%2Fmcp.superagnt.com%2Fmcp&open_in_browser=1
   Any other MCP client (or Claude Code signed in with an API key): add the server
   and let the client run the browser sign-in:
     claude mcp add --scope user --transport http superagnt https://mcp.superagnt.com/mcp
     claude mcp login superagnt
   MCP endpoint: https://mcp.superagnt.com/mcp
   After connecting, the tool you want is named exactly:
     data_agnt_people_bulk_enrich
   Call agnt_tools_search or agnt_tools_list_enabled to confirm it is available.

2. REST fallback (if you are not using MCP):
     POST https://api.superagnt.com/people/bulk-enrich
     Header: Authorization: Bearer <YOUR_AGNTDATA_API_KEY>
   Required parameters:
    - inputs (array, required)
   Optional parameters:
    - fields (array, optional) — Fields to fill. The waterfall stops calling providers once all of them are filled. Omit for the core set: email, full_name, job_title, company_name, company_domain, linkedin_url, location. Every other field (work_email, verified_email, twitter_url, first_name, last_name, seniority, department) is looked up only when named here. verified_email is filled only for a valid email: a risky or invalid one ends the search with it unfilled. personal_email is not available here, and a mobile number comes from /people/find-mobile.
    - max_cost_cents_per_record (number, optional)

3. COST & KEY. This endpoint is metered — pricing varies by request, from $0.02 per call. Only successful calls are charged.
   Get a superagnt API key at https://app.superagnt.com.

4. TEST. Connect the server (or set the key), discover the tool
   (data_agnt_people_bulk_enrich), run one minimal call with just the required parameters,
   and report back the shape of the JSON response (top-level fields).

Reference (machine-readable variant): https://www.superagnt.com/docs/apis/lead/agnt/endpoints/people_bulk_enrich.md
mcp tool definitionjson
{
  "name": "people_bulk_enrich",
  "description": "Enrich up to 100 people in one call. Each input record requires `email` and/or `linkedin_url` (either at the top level of the input object or nested under `identifiers`). `first_name`/`last_name`/`domain` are NOT accepted — if you only have name+company, call `/people/email-finder` per record first. Each input runs the same field-aware waterfall as `/people/enrich`. Use `max_cost_cents_per_record` to cap per-record spend.",
  "parameters": {
    "type": "object",
    "properties": {
      "inputs": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "identifier": {
              "type": "string",
              "minLength": 1,
              "description": "Optional caller-supplied label echoed back in the response — use it to align results to your input rows."
            },
            "identifiers": {
              "type": "object",
              "properties": {
                "email": {
                  "type": "string",
                  "format": "email",
                  "description": "Work or personal email address."
                },
                "linkedin_url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Full LinkedIn profile URL (e.g. https://www.linkedin.com/in/satyanadella/)."
                }
              },
              "additionalProperties": false,
              "description": "Unique handles used to resolve a person upstream. Provide AT LEAST ONE of `email` or `linkedin_url`. Name + company are NOT accepted here — for that flow, call `/people/email-finder` first to obtain an email. A lookup that matches nothing is not an error: it returns the identifiers you sent with every other field null with `meta.empty: true` and is not charged. Retrying the same input will not find it."
            },
            "email": {
              "type": "string",
              "format": "email",
              "description": "Shorthand: same as `identifiers.email`. Use either this OR `identifiers`, not both."
            },
            "linkedin_url": {
              "type": "string",
              "format": "uri",
              "description": "Shorthand: same as `identifiers.linkedin_url`. Use either this OR `identifiers`, not both."
            }
          },
          "additionalProperties": false,
          "description": "Each input must resolve to `email` and/or `linkedin_url` (top-level shorthand or nested under `identifiers`). Name + company are NOT accepted."
        },
        "minItems": 1,
        "maxItems": 100
      },
      "fields": {
        "type": "array",
        "items": {
          "type": "string",
          "enum": [
            "email",
            "work_email",
            "personal_email",
            "verified_email",
            "mobile",
            "linkedin_url",
            "twitter_url",
            "full_name",
            "first_name",
            "last_name",
            "job_title",
            "seniority",
            "department",
            "company_name",
            "company_domain",
            "location"
          ]
        },
        "description": "Fields to fill. The waterfall stops calling providers once all of them are filled. Omit for the core set: email, full_name, job_title, company_name, company_domain, linkedin_url, location. Every other field (work_email, verified_email, twitter_url, first_name, last_name, seniority, department) is looked up only when named here. verified_email is filled only for a valid email: a risky or invalid one ends the search with it unfilled. personal_email is not available here, and a mobile number comes from /people/find-mobile."
      },
      "max_cost_cents_per_record": {
        "type": "number",
        "minimum": 0
      }
    },
    "required": [
      "inputs"
    ]
  }
}
04// parameters
NameInTypeRequiredDescription
inputsbodyarrayrequired
fieldsbodyarrayoptionalFields to fill. The waterfall stops calling providers once all of them are filled. Omit for the core set: email, full_name, job_title, company_name, company_domain, linkedin_url, location. Every other field (work_email, verified_email, twitter_url, first_name, last_name, seniority, department) is looked up only when named here. verified_email is filled only for a valid email: a risky or invalid one ends the search with it unfilled. personal_email is not available here, and a mobile number comes from /people/find-mobile.
max_cost_cents_per_recordbodynumberoptional
05// responses

Bulk enrichment results.

200json
{
  "type": "object",
  "required": [
    "success",
    "data"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "enum": [
        true
      ]
    },
    "data": {
      "$ref": "#/components/schemas/PeopleBulkEnrichResponse"
    },
    "meta": {
      "$ref": "#/components/schemas/AgntMeta"
    }
  }
}
06// pricing
from $0.02per successful request

Metered endpoint — the exact cost depends on the request. Credits are deducted per successful call; failed requests (4xx/5xx) are not charged.

Get started at app.superagnt.com.

08// more from Lead APIs

start calling

Point your client at https://mcp.superagnt.com/mcp and your agent has this endpoint, plus every other source on one balance.

Start free→
bulk people enrichment APIbatch enrich contactslead enrichment APIemail finder APIemail verifier API