Skip to main content
Glama

Company Website Contacts

site_contacts
Read-only

3 free MCP calls per day (all tools together), then $0.004 USDC via x402 or card credits (paid in-band: params._meta["x402/payment"]). Site contacts: Company website -> one clean contact row: role emails only (info@, sales@ ...) with MX check, phones validated and normalized to E.164 with confidence, schema.org address/name, Danish CVR and EU VAT ids, official social profiles. Respects robots.txt, plain HTTP, home + up to 5 contact pages. Personal emails omitted (GDPR). When to use: Use site-contacts when you need the business contact details of a company from its own website. Use page-rag when you need the text of a page, and email-verify to check one email address you already have.

Input Schema

NameRequiredDescriptionDefault
urlYescompany website
countryNodefault phone country, ISO-2, default DK

Output Schema

NameRequiredDescriptionDefault
urlNo
nameNo
noteNo
domainNo
emailsNo
phonesNo
addressNo
orgTypeNo
sourcesNo
languageNo
fetchedAtNo
legalNameNo
descriptionNo
pagesFetchedNo
robotsBlockedNo
socialProfilesNo
vatOrCompanyIdsNo
emailsDroppedNoMxNo
phonesOmittedAsLikelyPersonalNo
personalOrUnknownEmailsOmittedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / description
      Previous value: -"Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped."New value: +"Inferred from a real response captured on 2026-10-26; extra fields may appear, null-valued fields are untyped."
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Inferred from a real response captured on 2026-10-24; extra fields may appear, null-valued fields are untyped.",
      +  "properties": {
      +    "address": {},
      +    "description": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "domain": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "emails": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "emailsDroppedNoMx": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "fetchedAt": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "language": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "legalName": {},
      +    "name": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "orgType": {},
      +    "pagesFetched": {
      +      "items": {
      +        "properties": {
      +          "status": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "personalOrUnknownEmailsOmitted": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "phones": {
      +      "items": {
      +        "properties": {
      +          "confidence": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "country": {},
      +          "e164": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "foundOn": {
      +            "items": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "type": "array"
      +          },
      +          "national": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "sources": {
      +            "items": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "type": "array"
      +          },
      +          "type": {},
      +          "validated": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "phonesOmittedAsLikelyPersonal": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "robotsBlocked": {
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "socialProfiles": {
      +      "properties": {
      +        "facebook": {
      +          "items": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "instagram": {
      +          "items": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "linkedin": {
      +          "items": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "youtube": {
      +          "items": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "sources": {
      +      "items": {
      +        "properties": {
      +          "name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "vatOrCompanyIds": {
      +      "items": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

A4.8/5.0
Behavior5/5

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

Goes far beyond readOnlyHint/openWorldHint: discloses crawl scope (home + up to 5 contact pages), robots.txt compliance, plain HTTP only, GDPR exclusion of personal emails, and the full pricing/payment mechanics including the in-band x402 param path. Rate/cost limits and destructive-free read behavior are all explicit.

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?

Dense but every clause carries information; no filler. Minor deduction because the pricing/payment sentence occupies the front-load position ahead of the actual purpose, delaying the one-line answer to 'what does this do'.

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?

For a two-param crawl-and-extract tool with an output schema, everything an agent needs is present: input expectation, crawl limits, compliance constraints, output shape summary, and cost. Return-value detail is correctly delegated to the output schema.

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 already documents both params at 100% coverage, so the bar is met by default. The description adds real meaning about the 'url' input — it is treated as a site root that gets crawled (home + up to 5 contact pages) rather than a single page — and that phones tie to a default country during E.164 normalization.

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 concrete transformation: 'Company website -> one clean contact row' with enumerated output fields (role emails with MX check, E.164 phones, schema.org address, CVR/VAT, socials). An agent can instantly separate it from page_rag (page text) and email_verify (single address).

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?

Explicit 'When to use' section plus two named alternatives with the exact condition that selects each: page_rag for page text, email_verify for checking an address you already hold. No inference required.

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