19 tools for phone, WhatsApp, email, caller ID, IP geo, blacklist, scraping & SERP
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Reverse phone lookup: retrieve the registered caller name (CNAM) associated with a phone number. Costs 1 caller-ID credit per call. Use to identify who owns a number.
Phone number to look up, in E.164 (+14155552671) or local format.
Reverse phone lookup: retrieve the registered caller name (CNAM) associated with a phone number. Costs 1 caller-ID credit per call. Use to identify who owns a number.
| Argument | Type | Description |
|---|---|---|
| phone_number* | string | Phone number to look up, in E.164 (+14155552671) or local format. |
{
"type": "object",
"required": [
"phone_number"
],
"properties": {
"phone_number": {
"type": "string",
"description": "Phone number to look up, in E.164 (+14155552671) or local format."
}
},
"additionalProperties": false
}Check an IP address, domain, or URL against major global blacklists and spam databases (DNSBL/RBL sources). Returns per-source listed/clean results and an overall summary. Costs 1 blacklist credit per successful check. Use for deliverability debugging, reputation checks, and abuse triage.
| Argument | Type | Description |
|---|---|---|
| target* | string | The IP address, domain, or URL to check (e.g. "192.0.2.1", "example.com", "https://example.com/page"). |
| sources | string | Optional comma-separated list of specific blacklist source identifiers to check instead of the full default set. |
| target_type | string | What kind of target this is. Default "auto" detects it for you. |
{
"type": "object",
"required": [
"target"
],
"properties": {
"target": {
"type": "string",
"description": "The IP address, domain, or URL to check (e.g. \"192.0.2.1\", \"example.com\", \"https://example.com/page\")."
},
"sources": {
"type": "string",
"description": "Optional comma-separated list of specific blacklist source identifiers to check instead of the full default set."
},
"target_type": {
"enum": [
"ip",
"domain",
"url",
"auto"
],
"type": "string",
"description": "What kind of target this is. Default \"auto\" detects it for you."
}
},
"additionalProperties": false
}Analyze email subject and/or body text for spam trigger words and get a 0-100 spam score, a risk level (Low/Medium/High Risk), and a per-trigger breakdown. Costs 1 spam-checker credit per successful request. Use before sending marketing/transactional email to predict deliverability. At least one of subject or content must be provided.
| Argument | Type | Description |
|---|---|---|
| content | string | The email body text to analyze. |
| subject | string | The email subject line to analyze. |
{
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "The email body text to analyze."
},
"subject": {
"type": "string",
"description": "The email subject line to analyze."
}
},
"additionalProperties": false
}Check whether a phone number has an active WhatsApp account (without sending any message or OTP), including whether it is a WhatsApp Business account. Also returns phone enrichment (carrier, line type, country). Costs 1 WA credit per successful call. Response fields: numberstatus (true = on WhatsApp), businessnumber (true = business account).
| Argument | Type | Description |
|---|---|---|
| country_code | string | ISO 3166-1 alpha-2 country hint when phone_number is in local format. |
| phone_number* | string | Phone number to check, in E.164 (+14155552671) or local format. |
{
"type": "object",
"required": [
"phone_number"
],
"properties": {
"country_code": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country hint when phone_number is in local format."
},
"phone_number": {
"type": "string",
"description": "Phone number to check, in E.164 (+14155552671) or local format."
}
},
"additionalProperties": false
}Look up geolocation, ISP, and organization details for an IPv4 or IPv6 address (country, region, city, coordinates, timezone, ASN). Deducts from your Geo-IP quota. Use for traffic analysis, fraud checks, or localizing users.
| Argument | Type | Description |
|---|---|---|
| ip* | string | The IPv4 or IPv6 address to look up (e.g. "8.8.8.8"). |
{
"type": "object",
"required": [
"ip"
],
"properties": {
"ip": {
"type": "string",
"description": "The IPv4 or IPv6 address to look up (e.g. \"8.8.8.8\")."
}
},
"additionalProperties": false
}Check remaining ProWebLook API credits for a service. Free (consumes no credits). Only these services are supported here: phonevalidation, wavalidation, calleridvalidation, blacklistchecker. Most other tools (scraping, spam, SERP, social, audits) return your remaining balance inside their own responses.
| Argument | Type | Description |
|---|---|---|
| service* | string | Service to check the credit balance for. |
{
"type": "object",
"required": [
"service"
],
"properties": {
"service": {
"enum": [
"phonevalidation",
"wavalidation",
"calleridvalidation",
"blacklistchecker"
],
"type": "string",
"description": "Service to check the credit balance for."
}
},
"additionalProperties": false
}Get the status/results of an AI Visibility Audit by audit_id. Free to call. Use detail "summary" (default) while polling — it returns progress and job_status; once job_status is "completed", call again with detail "full" for the complete report (visibility score, per-LLM coverage, competitive benchmarking, query results, recommendations).
| Argument | Type | Description |
|---|---|---|
| detail | string | How much detail to return. Default "summary". |
| audit_id* | string | The audit_id returned by run_brand_audit. |
{
"type": "object",
"required": [
"audit_id"
],
"properties": {
"detail": {
"enum": [
"summary",
"full"
],
"type": "string",
"description": "How much detail to return. Default \"summary\"."
},
"audit_id": {
"type": "string",
"description": "The audit_id returned by run_brand_audit."
}
},
"additionalProperties": false
}Get the historical AI-visibility score trend (up to 90 data points) for a brand + domain that has been audited before. Free to call. Use to show visibility change over time.
| Argument | Type | Description |
|---|---|---|
| brand* | string | The brand name used in past audits. |
| domain* | string | The bare domain used in past audits. |
{
"type": "object",
"required": [
"brand",
"domain"
],
"properties": {
"brand": {
"type": "string",
"description": "The brand name used in past audits."
},
"domain": {
"type": "string",
"description": "The bare domain used in past audits."
}
},
"additionalProperties": false
}Fetch the full content of a single public Reddit, X (Twitter), or LinkedIn post by its URL, including replies/comments where available. Costs 1 scraper credit per successful call.
| Argument | Type | Description |
|---|---|---|
| url* | string | The full URL of the post to fetch. |
| platform | string | Platform the URL belongs to. Default "reddit". |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The full URL of the post to fetch."
},
"platform": {
"enum": [
"reddit",
"x",
"linkedin"
],
"type": "string",
"description": "Platform the URL belongs to. Default \"reddit\"."
}
},
"additionalProperties": false
}Fetch comments/replies for a single X (Twitter) post URL. Costs 1 scraper credit per successful call. Use after finding a post with search_social (platform "x") to read its discussion thread.
| Argument | Type | Description |
|---|---|---|
| url* | string | The full URL of the X (Twitter) post. |
| maxItems | integer | Maximum top-level items to return. Default 10. |
| maxComments | integer | Maximum comments to return. Default 20. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The full URL of the X (Twitter) post."
},
"maxItems": {
"type": "integer",
"description": "Maximum top-level items to return. Default 10."
},
"maxComments": {
"type": "integer",
"description": "Maximum comments to return. Default 20."
}
},
"additionalProperties": false
}Run a Google search and get structured organic results (title, URL, snippet, position) as JSON. Costs 1 SERP credit per successful search. Use for rank tracking, competitor research, or finding sources on a topic. Pagination: start must be a multiple of 10 (0 = first page).
| Argument | Type | Description |
|---|---|---|
| num | integer | Number of results to return (10-100). Default 10. |
| query* | string | The search query (1-2000 characters). |
| start | integer | Result offset for pagination — must be a multiple of 10. Default 0. |
| device | string | Device type to emulate. Default "desktop". |
| domain | string | Google domain to search on. Default "google.com". |
| country | string | Country to localize results for (gl). |
| language | string | Result language (hl). Default "en". |
{
"type": "object",
"required": [
"query"
],
"properties": {
"num": {
"type": "integer",
"maximum": 100,
"minimum": 10,
"description": "Number of results to return (10-100). Default 10."
},
"query": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "The search query (1-2000 characters)."
},
"start": {
"type": "integer",
"maximum": 990,
"minimum": 0,
"multipleOf": 10,
"description": "Result offset for pagination — must be a multiple of 10. Default 0."
},
"device": {
"enum": [
"desktop",
"mobile"
],
"type": "string",
"description": "Device type to emulate. Default \"desktop\"."
},
"domain": {
"enum": [
"google.com",
"google.co.uk",
"google.in",
"google.de",
"google.fr",
"google.es",
"google.it",
"google.com.au",
"google.ca"
],
"type": "string",
"description": "Google domain to search on. Default \"google.com\"."
},
"country": {
"enum": [
"US",
"GB",
"IN",
"DE",
"FR",
"ES",
"IT",
"AU",
"CA"
],
"type": "string",
"description": "Country to localize results for (gl)."
},
"language": {
"enum": [
"en",
"es",
"fr",
"de",
"it",
"pt",
"ru",
"ja",
"ko",
"zh-CN"
],
"type": "string",
"description": "Result language (hl). Default \"en\"."
}
},
"additionalProperties": false
}List this account's past AI Visibility Audits (paginated, newest first). Free to call. Useful for finding an earlier audit_id instead of re-running (and re-paying for) an audit.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Default 1. |
| per_page | integer | Results per page (1-50). |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number. Default 1."
},
"per_page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Results per page (1-50)."
}
},
"additionalProperties": false
}Start an AI Visibility Audit: measures how visible a brand is in AI assistant answers (ChatGPT, Claude, Gemini, Perplexity) across a set of queries, with competitor benchmarking and recommendations. Costs 1 audit credit. Asynchronous — returns an audit_id immediately; audits take several minutes. Poll with get_brand_audit (detail "summary") until job_status is "completed", then fetch detail "full". Identical requests within 24h may return a cached audit.
| Argument | Type | Description |
|---|---|---|
| llms | array | Which LLM providers to test against (see the audit docs for supported values). Leave empty for all enabled providers. |
| brand* | string | The brand name to audit (e.g. "ProWebLook"). |
| domain* | string | The brand's bare domain (e.g. "proweblook.com" — no scheme or path). |
| queries | array | Specific user queries to test. Leave empty to have relevant queries auto-generated. |
| industry | string | Industry/category context (e.g. "API SaaS", "running shoes"). |
| competitors | array | Up to 5 competitor brand names to benchmark against. |
| sample_size | integer | Samples per query per LLM (1-10). Default 3. |
Scrape any web page: get clean Markdown, rendered/raw HTML, all links, SEO metadata, and/or a full-page screenshot in a single call. Costs 1 scraping credit per successful request regardless of how many formats you ask for. Screenshots use a full Chromium render (~5-15s); other formats are faster (~1-5s). Screenshots are returned as an image attachment. Use for reading article content, extracting page metadata, link discovery, or visual captures.
| Argument | Type | Description |
|---|---|---|
| url* | string | Full URL to scrape. Must start with http:// or https://. |
| formats | array | Output formats to return. Default ["markdown", "metadata"]. |
| timeout | integer | Maximum milliseconds for the entire scrape. Default 30000. |
| waitFor | integer | Extra milliseconds to wait after page load (for lazy-loaded content). Default 0. |
| onlyMainContent | boolean | Strip navigation/footer/ads, keeping only the main article content. Default true. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full URL to scrape. Must start with http:// or https://."
},
"formats": {
"type": "array",
"items": {
"enum": [
"markdown",
"html",
"rawHtml",
"links",
"metadata",
"screenshot"
],
"type": "string"
},
"description": "Output formats to return. Default [\"markdown\", \"metadata\"]."
},
"timeout": {
"type": "integer",
"maximum": 120000,
"minimum": 1000,
"description": "Maximum milliseconds for the entire scrape. Default 30000."
},
"waitFor": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"description": "Extra milliseconds to wait after page load (for lazy-loaded content). Default 0."
},
"onlyMainContent": {
"type": "boolean",
"description": "Strip navigation/footer/ads, keeping only the main article content. Default true."
}
},
"additionalProperties": false
}Search public posts on Reddit, X (Twitter), or LinkedIn by keyword. Returns post items (title/text, author, URL, engagement) plus meta. Costs 1 scraper credit per successful search. Use for social listening, market research, or finding discussions about a topic or brand.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort order (platform-dependent, e.g. "new", "top", "relevance"). Default "new". |
| time | string | Time window (e.g. "day", "week", "month", "all"). Default "week". |
| query* | string | Search keywords. |
| maxItems | integer | Maximum results to return (1-50). Default 10. |
| platform | string | Platform to search. Default "reddit". |
| subreddits | string | Reddit only: comma-separated subreddit names to restrict the search to (e.g. "webdev,programming"). |
{
"type": "object",
"required": [
"query"
],
"properties": {
"sort": {
"type": "string",
"description": "Sort order (platform-dependent, e.g. \"new\", \"top\", \"relevance\"). Default \"new\"."
},
"time": {
"type": "string",
"description": "Time window (e.g. \"day\", \"week\", \"month\", \"all\"). Default \"week\"."
},
"query": {
"type": "string",
"description": "Search keywords."
},
"maxItems": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum results to return (1-50). Default 10."
},
"platform": {
"enum": [
"reddit",
"x",
"linkedin"
],
"type": "string",
"description": "Platform to search. Default \"reddit\"."
},
"subreddits": {
"type": "string",
"description": "Reddit only: comma-separated subreddit names to restrict the search to (e.g. \"webdev,programming\")."
}
},
"additionalProperties": false
}Validate a phone number and enrich it with carrier, line type (mobile/landline/voip), country, location, timezone, and national/international formatting. Costs 1 phone-validation credit per successful call. Use when you need to know whether a number is real, who operates it, or where it is registered.
| Argument | Type | Description |
|---|---|---|
| country_code | string | Optional ISO 3166-1 alpha-2 country hint (for example, "US" or "IN") for a local/national phone_number. This is not a numeric calling prefix such as +91. Omit it, or use the literal "none", only with a full international number. |
| phone_number* | string | Phone number to validate. When country_code is omitted or set to none, provide the full international number including its country calling code, preferably E.164 (for example, +14155552671). A local or national number requires country_code. |
{
"type": "object",
"required": [
"phone_number"
],
"properties": {
"country_code": {
"type": "string",
"pattern": "^(?:[A-Za-z]{2}|none)$",
"maxLength": 4,
"description": "Optional ISO 3166-1 alpha-2 country hint (for example, \"US\" or \"IN\") for a local/national phone_number. This is not a numeric calling prefix such as +91. Omit it, or use the literal \"none\", only with a full international number."
},
"phone_number": {
"type": "string",
"description": "Phone number to validate. When country_code is omitted or set to none, provide the full international number including its country calling code, preferably E.164 (for example, +14155552671). A local or national number requires country_code."
}
},
"additionalProperties": false
}Verify an email address: syntax, MX records, SMTP deliverability, and disposable-address detection. Costs 1 email credit per successful check. Use to validate signup emails or clean mailing lists one address at a time.
| Argument | Type | Description |
|---|---|---|
| email* | string | The email address to verify. |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "The email address to verify."
}
},
"additionalProperties": false
}Poll the status and results of a WhatsApp batch validation job created with whatsapp_batch_submit. Free to call. Poll every 5-10 seconds for small batches, 30-60 seconds for large ones, until status is "completed"; results are included once done.
| Argument | Type | Description |
|---|---|---|
| batch_id* | string | The batch_id (UUID) returned by whatsapp_batch_submit. |
{
"type": "object",
"required": [
"batch_id"
],
"properties": {
"batch_id": {
"type": "string",
"description": "The batch_id (UUID) returned by whatsapp_batch_submit."
}
},
"additionalProperties": false
}Submit up to 1,000 phone numbers for asynchronous WhatsApp validation. Deducts 1 WA credit PER NUMBER upfront (the whole batch is rejected if the balance is insufficient), so confirm quantities before submitting large batches. Returns a batch_id immediately with status "processing" — retrieve results with whatsapp_batch_status.
| Argument | Type | Description |
|---|---|---|
| phone_numbers* | array | Phone numbers to validate (duplicates are removed automatically). Max 1,000. |
{
"type": "object",
"required": [
"phone_numbers"
],
"properties": {
"phone_numbers": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 1000,
"minItems": 1,
"description": "Phone numbers to validate (duplicates are removed automatically). Max 1,000."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"brand",
"domain"
],
"properties": {
"llms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Which LLM providers to test against (see the audit docs for supported values). Leave empty for all enabled providers."
},
"brand": {
"type": "string",
"description": "The brand name to audit (e.g. \"ProWebLook\")."
},
"domain": {
"type": "string",
"description": "The brand's bare domain (e.g. \"proweblook.com\" — no scheme or path)."
},
"queries": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific user queries to test. Leave empty to have relevant queries auto-generated."
},
"industry": {
"type": "string",
"description": "Industry/category context (e.g. \"API SaaS\", \"running shoes\")."
},
"competitors": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5,
"description": "Up to 5 competitor brand names to benchmark against."
},
"sample_size": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Samples per query per LLM (1-10). Default 3."
}
},
"additionalProperties": false
}