Website Contact & Social Extractor MCP
Extracts emails, validated phone numbers, WhatsApp links, social profiles, and addresses from a website's public pages. It respects robots.txt, uses no proxies or guessing, and returns schema.org company data from the homepage and contact pages.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://contacts.noahsarch.tech/mcpWhat you can do with it
- Extract contact details from a target website
- Validate phone numbers as mobile or landline
- Find social media profiles on 18 platforms
- Retrieve schema.org company data
Source and maintenance
Protocol and capabilities
- Server
- website-contact-extractor 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 5 advertised
- Resources
- 2 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
extract_contacts — Extract contacts from a website
Fetch a site's homepage and up to max_pages-1 contact/about pages and return every email, phone (validated, E.164, type), WhatsApp link, social profile, postal address and organisation field found, with provenance per item. Example: url 'noahsarch.tech', max_pages 3, region 'AE'. Response: result with emails[] (email, source, role), phones[] (e164, international, region, type, source), whatsapp[], social{platform: [url, handle]}, addresses[], organization{}, pages[] (what was fetched, status) and summary{}, plus data_confidence, estimated_items[], sources[], data_version, warnings[] and a disclaimer. Charged per page actually fetched; failed fetches are free. URLs are not logged.
{
"type": "object",
"title": "extract_contactsArguments",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"description": "Website URL (scheme optional): 'example.com' or 'https://example.com/about'."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "ISO 3166-1 alpha-2 country used to interpret phone numbers written without a country code (e.g. 'AE', 'GB', 'US'). Omit if unknown."
},
"max_pages": {
"type": "integer",
"title": "Max Pages",
"default": 3,
"description": "Homepage plus up to (max_pages-1) contact/about pages found on it. 1 = homepage only."
},
"include_social": {
"type": "boolean",
"title": "Include Social",
"default": true,
"description": "Include social-profile links (Facebook, Instagram, X, LinkedIn, YouTube, TikTok, Telegram, Snapchat, Pinterest, Threads, GitHub…)."
},
"respect_robots": {
"type": "boolean",
"title": "Respect Robots",
"default": true,
"description": "Honour the site's robots.txt (default). Set false only for sites you own."
},
"follow_contact_pages": {
"type": "boolean",
"title": "Follow Contact Pages",
"default": true,
"description": "Also fetch the site's contact/about/impressum pages (same site only)."
}
}
}{
"type": "object",
"title": "extract_contactsDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}find_social_profiles — Find a website's social-media profiles
Homepage only: Facebook, Instagram, X/Twitter, LinkedIn, YouTube, TikTok, Telegram, Snapchat, Pinterest, Threads, GitHub, TripAdvisor, Google Business links plus WhatsApp chat links, with handles. Share buttons are excluded. Example: url 'https://example.com'. Response: result with emails[] (email, source, role), phones[] (e164, international, region, type, source), whatsapp[], social{platform: [url, handle]}, addresses[], organization{}, pages[] (what was fetched, status) and summary{}, plus data_confidence, estimated_items[], sources[], data_version, warnings[] and a disclaimer. Charged per page actually fetched; failed fetches are free. URLs are not logged.
{
"type": "object",
"title": "find_social_profilesArguments",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"description": "Website URL."
}
}
}{
"type": "object",
"title": "find_social_profilesDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}extract_contacts_bulk — Extract contacts from up to 50 websites
One call for a lead list: each site gets homepage + contact pages (max_pages), results per site plus a summary (sites with email/phone/WhatsApp, failures). Charged per page fetched across all sites. Example: urls ['a.com','b.ae'], max_pages 2, region 'AE'. Response: result with emails[] (email, source, role), phones[] (e164, international, region, type, source), whatsapp[], social{platform: [url, handle]}, addresses[], organization{}, pages[] (what was fetched, status) and summary{}, plus data_confidence, estimated_items[], sources[], data_version, warnings[] and a disclaimer. Charged per page actually fetched; failed fetches are free. URLs are not logged.
{
"type": "object",
"title": "extract_contacts_bulkArguments",
"required": [
"urls"
],
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"title": "Urls",
"description": "Up to 50 website URLs (one per company). Duplicate sites are merged."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "ISO 3166-1 alpha-2 country used to interpret phone numbers written without a country code (e.g. 'AE', 'GB', 'US'). Omit if unknown."
},
"max_pages": {
"type": "integer",
"title": "Max Pages",
"default": 2,
"description": "Pages per site (homepage + contact pages)."
},
"include_social": {
"type": "boolean",
"title": "Include Social",
"default": true,
"description": ""
}
}
}{
"type": "object",
"title": "extract_contacts_bulkDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}extract_from_html — Extract contacts from HTML you already have
Same parser, no fetching: emails (incl. obfuscated 'name [at] domain [dot] com'), phones, WhatsApp, social links, addresses, schema.org organisation data, and the contact-page links present. Free. Example: html '<a href="mailto:x@y.com">'. Response: result with emails[] (email, source, role), phones[] (e164, international, region, type, source), whatsapp[], social{platform: [url, handle]}, addresses[], organization{}, pages[] (what was fetched, status) and summary{}, plus data_confidence, estimated_items[], sources[], data_version, warnings[] and a disclaimer. Charged per page actually fetched; failed fetches are free. URLs are not logged.
{
"type": "object",
"title": "extract_from_htmlArguments",
"required": [
"html"
],
"properties": {
"html": {
"type": "string",
"title": "Html",
"description": "HTML (or plain text) you already have."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "ISO 3166-1 alpha-2 country used to interpret phone numbers written without a country code (e.g. 'AE', 'GB', 'US'). Omit if unknown."
},
"base_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Base Url",
"default": null,
"description": "Page URL, used to resolve relative links and decide which links are same-site."
}
}
}{
"type": "object",
"title": "extract_from_htmlDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_url — Check that a website is reachable
GET the URL (robots-respecting, public hosts only) and report status, final URL after redirects, content type, title, declared languages and whether a contact page is linked. Use before a bulk job or to clean a URL list. Example: url 'example.com'. Response: result with emails[] (email, source, role), phones[] (e164, international, region, type, source), whatsapp[], social{platform: [url, handle]}, addresses[], organization{}, pages[] (what was fetched, status) and summary{}, plus data_confidence, estimated_items[], sources[], data_version, warnings[] and a disclaimer. Charged per page actually fetched; failed fetches are free. URLs are not logged.
{
"type": "object",
"title": "check_urlArguments",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "Url",
"description": ""
},
"respect_robots": {
"type": "boolean",
"title": "Respect Robots",
"default": true,
"description": ""
}
}
}{
"type": "object",
"title": "check_urlDictOutput",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
0 advertised
Resources
2 advertised
data_version — Data version
Current data/rules version.
website-contact-extractor://data-versionmetrics — Aggregate metrics
Aggregate counters only (tool, status, latency bucket). No queries are logged.
website-contact-extractor://metrics30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2529 ms
- 95th percentile latency
- 2529 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2529 ms · metadata changed · 5 tool(s), 2 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http website-contact-social-extractor-mcp https://contacts.noahsarch.tech/mcpCodex
codex mcp add website-contact-social-extractor-mcp --url https://contacts.noahsarch.tech/mcpCursor
{
"mcpServers": {
"website-contact-social-extractor-mcp": {
"url": "https://contacts.noahsarch.tech/mcp"
}
}
}Cline
{
"mcpServers": {
"website-contact-social-extractor-mcp": {
"type": "streamableHttp",
"url": "https://contacts.noahsarch.tech/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"website-contact-social-extractor-mcp": {
"type": "http",
"url": "https://contacts.noahsarch.tech/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http website-contact-social-extractor-mcp https://contacts.noahsarch.tech/mcpClaude Desktop
{
"mcpServers": {
"website-contact-social-extractor-mcp": {
"url": "https://contacts.noahsarch.tech/mcp"
}
}
}Windsurf
{
"mcpServers": {
"website-contact-social-extractor-mcp": {
"serverUrl": "https://contacts.noahsarch.tech/mcp"
}
}
}Let your agent find its tools
Find servers like Website Contact & Social Extractor MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run Website Contact & Social Extractor MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.