Skip to main content
Glama

AIsa Apollo

People Enrichment

post_apollo_people_match
Read-onlyIdempotent

Enrich one person: give whatever identifiers you have and get back Apollo's full record for them. Send identifiers in the JSON request body, not the query string. Accepts email, first_name plus last_name, name, domain, organization_name, linkedin_url or hashed_email — the more you supply, the likelier the match. Returns a person object with id, name, title, headline, linkedin_url, twitter_url, github_url, photo_url, organization_id and an employment_history array, plus a request_id. Personal emails and phone numbers are withheld unless reveal_personal_emails (body) or reveal_phone_number (query) is set, and those cost extra credits. A 200 does not guarantee a match — check whether person actually came back. Use post_apollo_people_bulk_match for up to 10 people in one call; use post_apollo_mixed_people_api_search when you do not have an identifier and need to find candidates first.

Published reference price: $0.01975 USD per successful request. Account-specific pricing and final settlement may differ.

Input Schema

NameRequiredDescriptionDefault
bodyYesIdentify one person. Give at least one identifier; the more you supply, the likelier the match.
webhook_urlNoIf you set the reveal_phone_number parameter to true, this parameter becomes mandatory. Otherwise, do not use this parameter. Enter the webhook URL that specifies where Apollo should send a JSON response that includes the phone number you requested. Apollo suggests testing this flow to ensure you receive the separate response with the phone number. If phone numbers are not revealed delivered to the webhook URL, try applying UTF-8 encoding to the webhook URL. Example: https://webhook.site/cc4cf44e-e047-4774-8dac-473d28474e40; https%3A%2F%2Fwebhook.site%2Fcc4cf44e-e047-4774-8dac-473d28474e40
reveal_phone_numberNoSet to true if you want to enrich the person's data with all available phone numbers, including mobile phone numbers. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If this parameter is set to true, you must enter a webhook URL for the webhook_url parameter. Apollo will asynchronously verify phone numbers for you, then send a JSON response that includes only details about the person's phone numbers to the webhook URL you provide. It can take several minutes for the phone numbers to be delivered.
run_waterfall_emailNoSet to true to enable email waterfall enrichment
run_waterfall_phoneNoSet to true to enable phone waterfall enrichment

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / body
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "first_name": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "first_name"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "last_name": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "last_name"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "name": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "email": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "email"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "hashed_email": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "hashed_email"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "organization_name": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "organization_name"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "domain": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "domain"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "id": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "linkedin_url": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "linkedin_url"
      +      ]
      +    }
      +  ],
      +  "description": "Identify one person. Give at least one identifier; the more you supply, the likelier the match.",
      +  "minProperties": 1,
      +  "properties": {
      +    "domain": {
      +      "description": "The domain name for the person's employer. This can be the current employer or a previous employer. Do not include www., the @ symbol, or similar. Example: apollo.io or microsoft.com",
      +      "type": "string"
      +    },
      +    "email": {
      +      "description": "The email address of the person. Example: example@email.com",
      +      "type": "string"
      +    },
      +    "first_name": {
      +      "description": "The first name of the person. This is typically used in combination with the last_name parameter. Example: tim",
      +      "type": "string"
      +    },
      +    "hashed_email": {
      +      "description": "The hashed email of the person. The email should adhere to either the MD5 or SHA-256 hash format. Example: 8d935115b9ff4489f2d1f9249503cadf (MD5) or 97817c0c49994eb500ad0a5e7e2d8aed51977b26424d508f66e4e8887746a152 (SHA-256)",
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "The Apollo ID for the person. Each person in the Apollo database is assigned a unique ID. To find IDs, call the People API Search endpoint and identify the values for person_id. Example: 587cf802f65125cad923a266",
      +      "type": "string"
      +    },
      +    "last_name": {
      +      "description": "The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng",
      +      "type": "string"
      +    },
      +    "linkedin_url": {
      +      "description": "The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010",
      +      "type": "string"
      +    },
      +    "name": {
      +      "description": "The full name of the person. This will typically be a first name and last name separated by a space. If you use this parameter, you do not need to use the first_name and last_name parameters. Example: tim zheng",
      +      "type": "string"
      +    },
      +    "organization_name": {
      +      "description": "The name of the person's employer. This can be the current employer or a previous employer. Example: apollo",
      +      "type": "string"
      +    },
      +    "reveal_personal_emails": {
      +      "description": "Set to true if you want to enrich the person's data with personal emails. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If a person resides in a GDPR -compliant region, Apollo will not reveal their personal email.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / reveal_phone_number / description
      Added value: +"Set to true if you want to enrich the person's data with all available phone numbers, including mobile phone numbers. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If this parameter is set to true, you must enter a webhook URL for the webhook_url parameter. Apollo will asynchronously verify phone numbers for you, then send a JSON response that includes only details about the person's phone numbers to the webhook URL you provide. It can take several minutes for the phone numbers to be delivered."
    • addedInput schema / properties / run_waterfall_email / description
      Added value: +"Set to true to enable email waterfall enrichment"
    • addedInput schema / properties / run_waterfall_phone / description
      Added value: +"Set to true to enable phone waterfall enrichment"
    • addedInput schema / properties / webhook_url / description
      Added value: +"If you set the reveal_phone_number parameter to true, this parameter becomes mandatory. Otherwise, do not use this parameter. Enter the webhook URL that specifies where Apollo should send a JSON response that includes the phone number you requested. Apollo suggests testing this flow to ensure you receive the separate response with the phone number. If phone numbers are not revealed delivered to the webhook URL, try applying UTF-8 encoding to the webhook URL. Example: https://webhook.site/cc4cf44e-e047-4774-8dac-473d28474e40; https%3A%2F%2Fwebhook.site%2Fcc4cf44e-e047-4774-8dac-473d28474e40"
    • changedInput schema / required
      Previous value: -[]New value: +[
      +  "body"
      +]
  2. Changed20 schema fields changed
    • removedInput schema / properties / domain
      Removed value: -{
      -  "description": "The domain name for the person's employer. This can be the current employer or a previous employer. Do not include www., the @ symbol, or similar. Example: apollo.io or microsoft.com",
      -  "type": "string"
      -}
    • removedInput schema / properties / email
      Removed value: -{
      -  "description": "The email address of the person. Example: example@email.com",
      -  "type": "string"
      -}
    • removedInput schema / properties / first_name
      Removed value: -{
      -  "description": "The first name of the person. This is typically used in combination with the last_name parameter. Example: tim",
      -  "type": "string"
      -}
    • removedInput schema / properties / hashed_email
      Removed value: -{
      -  "description": "The hashed email of the person. The email should adhere to either the MD5 or SHA-256 hash format. Example: 8d935115b9ff4489f2d1f9249503cadf (MD5) or 97817c0c49994eb500ad0a5e7e2d8aed51977b26424d508f66e4e8887746a152 (SHA-256)",
      -  "type": "string"
      -}
    • removedInput schema / properties / id
      Removed value: -{
      -  "description": "The Apollo ID for the person. Each person in the Apollo database is assigned a unique ID. To find IDs, call the People API Search endpoint and identify the values for person_id. Example: 587cf802f65125cad923a266",
      -  "type": "string"
      -}
    • removedInput schema / properties / last_name
      Removed value: -{
      -  "description": "The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng",
      -  "type": "string"
      -}
    • removedInput schema / properties / linkedin_url
      Removed value: -{
      -  "description": "The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010",
      -  "type": "string"
      -}
    • removedInput schema / properties / name
      Removed value: -{
      -  "description": "The full name of the person. This will typically be a first name and last name separated by a space. If you use this parameter, you do not need to use the first_name and last_name parameters. Example: tim zheng",
      -  "type": "string"
      -}
    • removedInput schema / properties / organization_name
      Removed value: -{
      -  "description": "The name of the person's employer. This can be the current employer or a previous employer. Example: apollo",
      -  "type": "string"
      -}
    • removedInput schema / properties / reveal_personal_emails
      Removed value: -{
      -  "description": "Set to true if you want to enrich the person's data with personal emails. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If a person resides in a GDPR -compliant region, Apollo will not reveal their personal email.",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / reveal_phone_number / default
      Added value: +false
    • removedInput schema / properties / reveal_phone_number / description
      Removed value: -"Set to true if you want to enrich the person's data with all available phone numbers, including mobile phone numbers. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If this parameter is set to true, you must enter a webhook URL for the webhook_url parameter. Apollo will asynchronously verify phone numbers for you, then send a JSON response that includes only details about the person's phone numbers to the webhook URL you provide. It can take several minutes for the phone numbers to be delivered."
    • addedInput schema / properties / run_waterfall_email / default
      Added value: +false
    • removedInput schema / properties / run_waterfall_email / description
      Removed value: -"Set to true to enable email waterfall enrichment"
    • addedInput schema / properties / run_waterfall_phone / default
      Added value: +false
    • removedInput schema / properties / run_waterfall_phone / description
      Removed value: -"Set to true to enable phone waterfall enrichment"
    • removedInput schema / properties / webhook_url / description
      Removed value: -"If you set the reveal_phone_number parameter to true, this parameter becomes mandatory. Otherwise, do not use this parameter. Enter the webhook URL that specifies where Apollo should send a JSON response that includes the phone number you requested. Apollo suggests testing this flow to ensure you receive the separate response with the phone number. If phone numbers are not revealed delivered to the webhook URL, try applying UTF-8 encoding to the webhook URL. Example: https://webhook.site/cc4cf44e-e047-4774-8dac-473d28474e40; https%3A%2F%2Fwebhook.site%2Fcc4cf44e-e047-4774-8dac-473d28474e40"
    • addedInput schema / properties / webhook_url / format
      Added value: +"https_url"
    • addedInput schema / properties / webhook_url / maxLength
      Added value: +2048
    • addedInput schema / properties / webhook_url / minLength
      Added value: +1
  3. Changed20 schema fields changed
    • addedInput schema / properties / domain
      Added value: +{
      +  "description": "The domain name for the person's employer. This can be the current employer or a previous employer. Do not include www., the @ symbol, or similar. Example: apollo.io or microsoft.com",
      +  "type": "string"
      +}
    • addedInput schema / properties / email
      Added value: +{
      +  "description": "The email address of the person. Example: example@email.com",
      +  "type": "string"
      +}
    • addedInput schema / properties / first_name
      Added value: +{
      +  "description": "The first name of the person. This is typically used in combination with the last_name parameter. Example: tim",
      +  "type": "string"
      +}
    • addedInput schema / properties / hashed_email
      Added value: +{
      +  "description": "The hashed email of the person. The email should adhere to either the MD5 or SHA-256 hash format. Example: 8d935115b9ff4489f2d1f9249503cadf (MD5) or 97817c0c49994eb500ad0a5e7e2d8aed51977b26424d508f66e4e8887746a152 (SHA-256)",
      +  "type": "string"
      +}
    • addedInput schema / properties / id
      Added value: +{
      +  "description": "The Apollo ID for the person. Each person in the Apollo database is assigned a unique ID. To find IDs, call the People API Search endpoint and identify the values for person_id. Example: 587cf802f65125cad923a266",
      +  "type": "string"
      +}
    • addedInput schema / properties / last_name
      Added value: +{
      +  "description": "The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng",
      +  "type": "string"
      +}
    • addedInput schema / properties / linkedin_url
      Added value: +{
      +  "description": "The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010",
      +  "type": "string"
      +}
    • addedInput schema / properties / name
      Added value: +{
      +  "description": "The full name of the person. This will typically be a first name and last name separated by a space. If you use this parameter, you do not need to use the first_name and last_name parameters. Example: tim zheng",
      +  "type": "string"
      +}
    • addedInput schema / properties / organization_name
      Added value: +{
      +  "description": "The name of the person's employer. This can be the current employer or a previous employer. Example: apollo",
      +  "type": "string"
      +}
    • addedInput schema / properties / reveal_personal_emails
      Added value: +{
      +  "description": "Set to true if you want to enrich the person's data with personal emails. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If a person resides in a GDPR -compliant region, Apollo will not reveal their personal email.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / reveal_phone_number / default
      Removed value: -false
    • addedInput schema / properties / reveal_phone_number / description
      Added value: +"Set to true if you want to enrich the person's data with all available phone numbers, including mobile phone numbers. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If this parameter is set to true, you must enter a webhook URL for the webhook_url parameter. Apollo will asynchronously verify phone numbers for you, then send a JSON response that includes only details about the person's phone numbers to the webhook URL you provide. It can take several minutes for the phone numbers to be delivered."
    • removedInput schema / properties / run_waterfall_email / default
      Removed value: -false
    • addedInput schema / properties / run_waterfall_email / description
      Added value: +"Set to true to enable email waterfall enrichment"
    • removedInput schema / properties / run_waterfall_phone / default
      Removed value: -false
    • addedInput schema / properties / run_waterfall_phone / description
      Added value: +"Set to true to enable phone waterfall enrichment"
    • addedInput schema / properties / webhook_url / description
      Added value: +"If you set the reveal_phone_number parameter to true, this parameter becomes mandatory. Otherwise, do not use this parameter. Enter the webhook URL that specifies where Apollo should send a JSON response that includes the phone number you requested. Apollo suggests testing this flow to ensure you receive the separate response with the phone number. If phone numbers are not revealed delivered to the webhook URL, try applying UTF-8 encoding to the webhook URL. Example: https://webhook.site/cc4cf44e-e047-4774-8dac-473d28474e40; https%3A%2F%2Fwebhook.site%2Fcc4cf44e-e047-4774-8dac-473d28474e40"
    • removedInput schema / properties / webhook_url / format
      Removed value: -"https_url"
    • removedInput schema / properties / webhook_url / maxLength
      Removed value: -2048
    • removedInput schema / properties / webhook_url / minLength
      Removed value: -1
  4. Changed20 schema fields changed
    • removedInput schema / properties / domain
      Removed value: -{
      -  "description": "The domain name for the person's employer. This can be the current employer or a previous employer. Do not include www., the @ symbol, or similar. Example: apollo.io or microsoft.com",
      -  "type": "string"
      -}
    • removedInput schema / properties / email
      Removed value: -{
      -  "description": "The email address of the person. Example: example@email.com",
      -  "type": "string"
      -}
    • removedInput schema / properties / first_name
      Removed value: -{
      -  "description": "The first name of the person. This is typically used in combination with the last_name parameter. Example: tim",
      -  "type": "string"
      -}
    • removedInput schema / properties / hashed_email
      Removed value: -{
      -  "description": "The hashed email of the person. The email should adhere to either the MD5 or SHA-256 hash format. Example: 8d935115b9ff4489f2d1f9249503cadf (MD5) or 97817c0c49994eb500ad0a5e7e2d8aed51977b26424d508f66e4e8887746a152 (SHA-256)",
      -  "type": "string"
      -}
    • removedInput schema / properties / id
      Removed value: -{
      -  "description": "The Apollo ID for the person. Each person in the Apollo database is assigned a unique ID. To find IDs, call the People API Search endpoint and identify the values for person_id. Example: 587cf802f65125cad923a266",
      -  "type": "string"
      -}
    • removedInput schema / properties / last_name
      Removed value: -{
      -  "description": "The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng",
      -  "type": "string"
      -}
    • removedInput schema / properties / linkedin_url
      Removed value: -{
      -  "description": "The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010",
      -  "type": "string"
      -}
    • removedInput schema / properties / name
      Removed value: -{
      -  "description": "The full name of the person. This will typically be a first name and last name separated by a space. If you use this parameter, you do not need to use the first_name and last_name parameters. Example: tim zheng",
      -  "type": "string"
      -}
    • removedInput schema / properties / organization_name
      Removed value: -{
      -  "description": "The name of the person's employer. This can be the current employer or a previous employer. Example: apollo",
      -  "type": "string"
      -}
    • removedInput schema / properties / reveal_personal_emails
      Removed value: -{
      -  "description": "Set to true if you want to enrich the person's data with personal emails. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If a person resides in a GDPR -compliant region, Apollo will not reveal their personal email.",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / reveal_phone_number / default
      Added value: +false
    • removedInput schema / properties / reveal_phone_number / description
      Removed value: -"Set to true if you want to enrich the person's data with all available phone numbers, including mobile phone numbers. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If this parameter is set to true, you must enter a webhook URL for the webhook_url parameter. Apollo will asynchronously verify phone numbers for you, then send a JSON response that includes only details about the person's phone numbers to the webhook URL you provide. It can take several minutes for the phone numbers to be delivered."
    • addedInput schema / properties / run_waterfall_email / default
      Added value: +false
    • removedInput schema / properties / run_waterfall_email / description
      Removed value: -"Set to true to enable email waterfall enrichment"
    • addedInput schema / properties / run_waterfall_phone / default
      Added value: +false
    • removedInput schema / properties / run_waterfall_phone / description
      Removed value: -"Set to true to enable phone waterfall enrichment"
    • removedInput schema / properties / webhook_url / description
      Removed value: -"If you set the reveal_phone_number parameter to true, this parameter becomes mandatory. Otherwise, do not use this parameter. Enter the webhook URL that specifies where Apollo should send a JSON response that includes the phone number you requested. Apollo suggests testing this flow to ensure you receive the separate response with the phone number. If phone numbers are not revealed delivered to the webhook URL, try applying UTF-8 encoding to the webhook URL. Example: https://webhook.site/cc4cf44e-e047-4774-8dac-473d28474e40; https%3A%2F%2Fwebhook.site%2Fcc4cf44e-e047-4774-8dac-473d28474e40"
    • addedInput schema / properties / webhook_url / format
      Added value: +"https_url"
    • addedInput schema / properties / webhook_url / maxLength
      Added value: +2048
    • addedInput schema / properties / webhook_url / minLength
      Added value: +1
  5. First observed

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), but the description adds material behavior beyond them: personal emails/phone numbers are withheld by default, revealing them costs extra credits, and a 200 response does not guarantee a match. That last caveat is exactly the kind of non-obvious trait an agent needs. It stops short of noting the async webhook requirement for phone reveals or any rate limiting, so it is not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is long, but front-loaded with the core action and then packed with distinct facts (identifiers, placement, return shape, cost, non-match caveat, alternatives) with no filler sentences. The return-field enumeration is arguably redundant given the output schema, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need no explanation, yet the description still sketches the person object and note fields for orientation. Combined with identifier options, payload placement, cost implications, and sibling alternatives, an agent has everything needed to invoke this correctly on the first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, and every body field is already documented with examples. The description still adds semantic value the schema does not: the identifier list is presented as a preference-ordered set ('the more you supply, the likelier the match'), and it flags that reveal_personal_emails lives in the body while reveal_phone_number is a query parameter — a distinction that is easy to get wrong from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Enrich one person', and immediately bounds scope ('one person' vs bulk). It explicitly names the sibling tools it is not (post_apollo_people_bulk_match, post_apollo_mixed_people_api_search), so an agent can discriminate among the Apollo people tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing rules: use bulk match for up to 10 people in one call, and use mixed_people_api_search when no identifier exists and candidates must be found first. It also states the entry condition (supply whatever identifiers you have, more is better) and the payload-placement rule (body, not query string).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources