{
  "id": "pdl.v5.person.search",
  "object": "tool",
  "name": "Find People",
  "summary": "Search the People Data Labs person dataset with Elasticsearch or SQL queries.",
  "description": "Search and filter the full People Data Labs person dataset using Elasticsearch or SQL queries (provide one, not both; Elasticsearch recommended). The query runs directly against the Person Dataset without cleaning or preprocessing. Build queries from any field in the Person Schema (name, job title, company, location, skills, education, etc.); the field descriptions in the Person Schema and the underlying Elasticsearch Mapping are the reference for writing effective queries. Returns up to 100 matching person records per request with scroll_token pagination; a valid query with no matches is a 200 with an empty data array. Charged per record retrieved.\n\nRaw pdl#v5/person/search endpoint: input is { body, queryParams, pathParams } as the provider documents them (https://docs.peopledatalabs.com/docs/reference-person-search-api).",
  "category": "lookup",
  "hosted_by": "People Data Labs",
  "runtime": "partner",
  "side_effects": false,
  "status": "live",
  "credits": 0,
  "price": null,
  "providers": [
    {
      "id": "pdl",
      "name": "People Data Labs",
      "price": null,
      "own_key_only": true
    }
  ],
  "mcp_name": "pdl_v5_person_search",
  "input_schema": {
    "type": "object",
    "properties": {
      "body": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {},
                "description": "Elasticsearch v7.7 query object run directly against the dataset. Provide EITHER query OR sql."
              },
              "size": {
                "description": "Records to return (1-100). Each returned record is one credit.",
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "scroll_token": {
                "description": "Pagination token from a previous response's scroll_token.",
                "type": "string"
              },
              "titlecase": {
                "description": "Titlecase the returned records. Default false.",
                "type": "boolean"
              },
              "pretty": {
                "description": "Pretty-print the response. Default false.",
                "type": "boolean"
              },
              "dataset": {
                "description": "Dataset(s) to search, comma-separated — all, resume, email, phone, mobile_phone, street_address, consumer_social, developer. Use `-` once to exclude every name after it (e.g. 'all,-phone,consumer_social'). Default resume.",
                "type": "string",
                "minLength": 1
              },
              "data_include": {
                "description": "Comma-separated fields to include in each returned record.",
                "type": "string"
              }
            },
            "required": [
              "query",
              "size"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "sql": {
                "type": "string",
                "minLength": 1,
                "description": "SQL query of the form SELECT * FROM <dataset> WHERE ... . Provide EITHER sql OR query."
              },
              "size": {
                "description": "Records to return (1-100). Each returned record is one credit.",
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "scroll_token": {
                "description": "Pagination token from a previous response's scroll_token.",
                "type": "string"
              },
              "titlecase": {
                "description": "Titlecase the returned records. Default false.",
                "type": "boolean"
              },
              "pretty": {
                "description": "Pretty-print the response. Default false.",
                "type": "boolean"
              },
              "dataset": {
                "description": "Dataset(s) to search, comma-separated — all, resume, email, phone, mobile_phone, street_address, consumer_social, developer. Use `-` once to exclude every name after it (e.g. 'all,-phone,consumer_social'). Default resume.",
                "type": "string",
                "minLength": 1
              },
              "data_include": {
                "description": "Comma-separated fields to include in each returned record.",
                "type": "string"
              }
            },
            "required": [
              "sql",
              "size"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    "required": [],
    "additionalProperties": false
  },
  "kind": "endpoint"
}