Skip to main content
Glama
This connector has been deprecated

Duplicate listing. The official PumpGTM connector is https://glama.ai/mcp/connectors/com.pumpgtm/mcp (same server, https://mcp.pumpgtm.com/mcp).

Find a phone number

find_phone_number

Find a person's mobile phone number from their public LinkedIn profile URL, or from an email address you already have (send exactly one). Returns id, person with name, title, company, linkedin and mobile: a verified number, or null with missing.mobile giving the reason (not_found means no confident match, not that none exists). Uses Energy when the person is matched, most when a number is found (the energy tool's peopleDataPricing lists both prices); no match and cached lookups are free. energyUsed is what this call spent and energyLeft the balance after it. Requires Energy enabled. With only a name, ask the customer for the person's LinkedIn URL. Never automatically retry a timeout or error, because a repeated call can cost Energy again. Creates no lead and contacts no one.

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": "find_phone_number"
  }
}

Input Schema

NameRequiredDescriptionDefault
emailNoAn email address you already have for the person; send this or linkedin, not both.
linkedinNoThe person's public LinkedIn profile URL; send this or email, not both.
workspaceIdNoA teammate's workspace you may manage: an active workspace ID from list_team_workspaces. Omit for your own workspace. Supply on every call for a teammate.

Output Schema

NameRequiredDescriptionDefault
idYesThis lookup's id, for support; not needed for any other tool.
leadNoOnly with leadId: whether the found email was saved on that lead.
personYesThe matched person; null when nobody matches (no Energy is spent then).
missingNoRequested extras that did not come back, each with a reason: not_found (no confident match, not proof none exists), energy_exhausted or unavailable (try later). Absent when everything requested came back.
energyLeftYesThe workspace's Energy after it; null when unreadable.
energyUsedYesEnergy this call spent; 0 for a cached lookup or no match.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / email / description
      Previous value: -"An email address you already have for the person."New value: +"An email address you already have for the person; send this or linkedin, not both."
    • changedInput schema / properties / linkedin / description
      Previous value: -"The person's public LinkedIn profile URL."New value: +"The person's public LinkedIn profile URL; send this or email, not both."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "energyLeft": {
      +      "description": "The workspace's Energy after it; null when unreadable.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "energyUsed": {
      +      "description": "Energy this call spent; 0 for a cached lookup or no match.",
      +      "type": "number"
      +    },
      +    "id": {
      +      "description": "This lookup's id, for support; not needed for any other tool.",
      +      "type": "string"
      +    },
      +    "lead": {
      +      "additionalProperties": {},
      +      "description": "Only with leadId: whether the found email was saved on that lead.",
      +      "properties": {
      +        "email": {
      +          "description": "What happened to the found email: attached (saved on the lead), lead_has_email (lead already had one, kept), different_person (lead is someone else), email_on_another_lead (another lead already has it) or no_email (none found).",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "id": {
      +          "description": "The leadId sent.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "email"
      +      ],
      +      "type": "object"
      +    },
      +    "missing": {
      +      "additionalProperties": {},
      +      "description": "Requested extras that did not come back, each with a reason: not_found (no confident match, not proof none exists), energy_exhausted or unavailable (try later). Absent when everything requested came back.",
      +      "properties": {
      +        "mobile": {
      +          "description": "Why the requested mobile number is absent.",
      +          "type": "string"
      +        },
      +        "workEmail": {
      +          "description": "Why the requested work email is absent.",
      +          "type": "string"
      +        },
      +        "x": {
      +          "description": "Why the requested X account is absent.",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "person": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "company": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "domain": {
      +                      "description": "Current employer's website domain, such as acme.com; null when only the name is known.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "name": {
      +                      "description": "Current employer's name; null when only the domain is known.",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "name",
      +                    "domain"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Current employer; null when unknown."
      +            },
      +            "connections": {
      +              "description": "Previously observed public follows involving this person (up to 100), only when there are any. Absence is not proof of no connections.",
      +              "items": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "from": {
      +                    "description": "Profile URL of the account that follows.",
      +                    "type": "string"
      +                  },
      +                  "observedAt": {
      +                    "description": "When it was last seen (ISO time).",
      +                    "type": "string"
      +                  },
      +                  "sourceUrl": {
      +                    "description": "Public page where the follow was seen.",
      +                    "type": "string"
      +                  },
      +                  "to": {
      +                    "description": "Profile URL of the account followed.",
      +                    "type": "string"
      +                  },
      +                  "type": {
      +                    "description": "The relationship observed; follows is a one-way public follow, not friendship or employment.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "from",
      +                  "to",
      +                  "type",
      +                  "sourceUrl",
      +                  "observedAt"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "headline": {
      +              "description": "Their LinkedIn headline; null when not known.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "linkedin": {
      +              "description": "The person's public LinkedIn profile URL; use it as their identity in other tools.",
      +              "type": "string"
      +            },
      +            "location": {
      +              "description": "Where they are, as city, region and country; null when not known.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "mobile": {
      +              "description": "Verified mobile number when requested and found; null otherwise (missing.mobile says why).",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "name": {
      +              "description": "The person's full name; null when not known.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "title": {
      +              "description": "Their current job title; null when not known.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "workEmail": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "address": {
      +                      "description": "The verified email address.",
      +                      "type": "string"
      +                    },
      +                    "matchesCompanyDomain": {
      +                      "description": "Check before using: true when the address is on their company's domain, false when it is another domain (possibly personal or an old employer).",
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "address",
      +                    "matchesCompanyDomain"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Verified work email when requested and found; null otherwise."
      +            },
      +            "x": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "evidence": {
      +                      "description": "Why the account is theirs: which of LinkedIn, company domain or company name its bio or link points at.",
      +                      "type": "string"
      +                    },
      +                    "handle": {
      +                      "description": "Their X username, without @.",
      +                      "type": "string"
      +                    },
      +                    "url": {
      +                      "description": "Link to their X profile.",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "handle",
      +                    "url",
      +                    "evidence"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "description": "Their X account when x was requested and matched; null otherwise."
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "title",
      +            "headline",
      +            "location",
      +            "company",
      +            "linkedin",
      +            "x",
      +            "workEmail",
      +            "mobile"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "The matched person; null when nobody matches (no Energy is spent then)."
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "person",
      +    "energyUsed",
      +    "energyLeft"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, idempotentHint=false, openWorldHint=true; the description goes well beyond by disclosing the Energy billing model (charged when matched, most when found, free on no-match and cached lookups), the energyUsed/energyLeft accounting, and the cost risk of retrying. It also states the tool creates no lead and contacts no one, which is exactly the reassurance a non-readonly, non-idempotent call needs.

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?

Front-loaded with purpose, then cost, then preconditions, then failure guidance—good ordering with no filler. The parenthetical billing explanation and the run-on final sentence are dense, but every clause carries operational information.

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?

Covers everything an agent needs for a paid, non-idempotent, open-world lookup: inputs, return fields, null/missing.mobile semantics including that not_found is not proof of absence, cost model, precondition, and retry prohibition. Output schema exists but the description's summary of returns and the missing.mobile reasons adds genuine value.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already documents itself, including the 'send this or email, not both' constraint. The description echoes the exactly-one rule but adds nothing about workspaceId or input formats, so it sits at the baseline for fully documented schemas.

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?

States a specific verb and resource ('Find a person's mobile phone number') plus the exact two accepted inputs, which cleanly separates it from find_work_email (email discovery) and find_people (people search). Scope is stated up front in the first clause.

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?

Gives explicit when-to-use rules: exactly one of linkedin or email, requires Energy enabled, and 'With only a name, ask the customer for the person's LinkedIn URL' tells the agent what to do when preconditions fail. It also gives an explicit when-not-to: never automatically retry a timeout or error because of cost.

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