Presend MCP Server
REMOTE · PRESEND.PAGES.DEV
Before an AI agent installs an npm/PyPI package: typosquat, vulnerability and existence checks.
Available components
Last scanned (20 hours ago)
Scores higher than 87% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Security
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security74
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability82
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4493 tokens (~112/item across 40 items; 40 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "url_clean" implies "remove" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 40 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 26 Oct 26 0
- Stability: fail → pass ▲ security
- 12 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 89 to 95.
- 10 Oct 26 +2
- Tool “supply_chain_check” rewrote its description, which is the text the model reads security
- 7 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 69 to 79.
- 4 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 65 to 69.
- 3 Oct 26 0
- Tool “maintainer_change_check” rewrote its description, which is the text the model reads security
- “maintainer_change_check” reworded the description of “ecosystem” cosmetic
- 2 Oct 26 0
- Tool “password_check” rewrote its description, which is the text the model reads security
- Tool “typosquat_check” rewrote its description, which is the text the model reads security
- Tool “link_metadata” rewrote its description, which is the text the model reads security
- Tool “supply_chain_check” rewrote its description, which is the text the model reads security
- Schema quality: pass → fail ▼ functional
- Server version: 3.1.1 → 3.1.2 functional
- “supply_chain_check” added an optional parameter “version” cosmetic
- 30 Sept 26 0
- Server version: 3.1.0 → 3.1.1 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://presend.pages.dev/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=presend.pages.dev | CN=WE1,O=Google Trust Services,C=US | 30 Sept 2026 | 29 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | c75807a7f16c8b81358d6a9d50c566f |
| SANs: presend.pages.dev, *.presend.pages.dev | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of presend.pages.dev. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| pages.dev. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://presend.pages.dev/mcp | Verified | 200 | |
| http (plaintext) | http://presend.pages.dev/mcp | HTTPS enforced | 301 | https://presend.pages.dev/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
address_risk Crypto address sanctions check ~175
Screens a crypto address against every OFAC SDN digital currency address list. EVM (0x...) and Bitcoin (bc1..., 1..., 3...) addresses are fully covered (sanctioned true or false, with the matching lists). Addresses of other chains are flagged when listed; Cosmos SDK bech32 addresses return sanctioned: null when not listed, as OFAC publishes none. A sanctions signal only, not a full risk score.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Address to screen: EVM (0x + 40 hex chars) or Bitcoin (bc1..., 1..., 3...), both fully covered. Addresses of other chains are matched against their lists too; bech32 addresses of other chains (e.g. c… |
No output schema declared.
No examples provided.
ai_crawler_check AI crawler check ~95
Fetches a domain's robots.txt and reports which known AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot and others) are allowed or blocked, including wildcard rules. Reflects robots.txt only, not server-side blocking.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to check, e.g. example.com. robots.txt is fetched from https://<domain>/robots.txt. |
No output schema declared.
No examples provided.
base64 Base64 encode / decode ~62
Encodes text to Base64 or decodes a Base64 string back to text (action = encode or decode).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Either 'encode' or 'decode'. |
| text | string | yes | Text to encode, or Base64 string to decode. |
No output schema declared.
No examples provided.
color Color converter ~127
Converts a color between hex, RGB and HSL. Provide exactly one of hex, rgb or hsl.
| Name | Type | Req | Description |
|---|---|---|---|
| hex | string | – | Hex color code, e.g. #ff0000 or ff0000. Provide exactly one of hex, rgb, or hsl. |
| hsl | string | – | HSL color, e.g. 0,100%,50%. Provide exactly one of hex, rgb, or hsl. |
| rgb | string | – | RGB color, e.g. 255,0,0. Provide exactly one of hex, rgb, or hsl. |
No output schema declared.
No examples provided.
csv_json CSV / JSON converter ~158
Converts CSV text to JSON or JSON to CSV (direction: csv-to-json or json-to-csv), for data passed inline. CSV must be comma-separated, with a header row and at least one data row; double-quoted fields may contain commas. Semicolon- or tab-separated input is not detected and comes back as a single column. JSON input must be an array of objects: the union of their keys becomes the CSV header and missing values are left empty. Returns result (the converted text), rows and cols. Max 500,000 characters.
| Name | Type | Req | Description |
|---|---|---|---|
| data | string | yes | The CSV or JSON text to convert, matching the chosen direction. |
| direction | string | yes | Either 'csv-to-json' or 'json-to-csv'. |
No output schema declared.
No examples provided.
cve_lookup CVE lookup ~95
Looks up a vulnerability by identifier (CVE, GHSA or other OSV ID) on OSV.dev: summary, CVSS severity, affected packages and versions, references. Use when you already have an ID; use vulnerability_check when you have a package name instead.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | CVE, GHSA, or other OSV-native identifier, e.g. CVE-2021-44228. |
No output schema declared.
No examples provided.
dns_lookup DNS lookup ~109
Returns DNS records for a domain via Cloudflare DNS-over-HTTPS: A, AAAA, CNAME, MX, TXT and NS in one call, or a single record type with 'type'. For registration data use whois_lookup; for SPF/DMARC/DKIM analysis use email_security.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to look up, e.g. example.com. |
| type | string | – | Narrow to a single record type. Omit to get all 6 at once. |
No output schema declared.
No examples provided.
email_disposable Disposable email check ~63
Checks only whether an email address uses a known disposable/temporary email domain. For syntax, MX, disposable and role-account checks in one call, use email_verify.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Email address to check against a list of known disposable/temporary email domains. |
No output schema declared.
No examples provided.
email_security Email domain security check ~87
Audits a domain's email anti-spoofing setup: SPF strength, DMARC policy and a best-effort DKIM lookup on common selectors. A missing DKIM match does not prove DKIM is absent. Checks a domain, not a single address.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to check SPF, DKIM, and DMARC records for, e.g. example.com. |
No output schema declared.
No examples provided.
email_validate Email address validation ~59
Lightweight email check: syntax plus confirmation that the domain has an MX record. Does not detect disposable or role addresses; use email_verify for the combined check.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Email address to validate for correct syntax and a resolvable domain. |
No output schema declared.
No examples provided.
email_verify Email verification ~110
Most complete email check in one call: syntax, MX record, disposable-domain detection and role/generic account detection (e.g. info@, admin@). Prefer it over email_validate and email_disposable unless you need a single signal. Does not probe the mailbox. valid is null (not false) when the MX lookup could not be completed; retry later instead of treating the address as invalid.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Email address to run through combined syntax, disposable-domain, and MX-record checks. |
No output schema declared.
No examples provided.
favicon Favicon lookup ~136
Returns the favicon URL a website declares: fetches the homepage and takes the first <link rel='icon'> (or 'shortcut icon') href, resolved to an absolute URL, which may be a data: URI when the page inlines its icon (source: declared). If no icon is declared, or the homepage cannot be fetched, returns the conventional https://<domain>/favicon.ico with source: default and a note, without checking that it exists. Use it to display a site icon; it does not download or validate the image.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to fetch the favicon URL for, e.g. example.com. |
No output schema declared.
No examples provided.
iban_validate IBAN validation ~58
Validates an IBAN offline: ISO 7064 mod-97 checksum and country-specific length. Confirms the number is well-formed, not that the account exists.
| Name | Type | Req | Description |
|---|---|---|---|
| iban | string | yes | IBAN to validate. Spaces are ignored. |
No output schema declared.
No examples provided.
ip_reputation IP reputation check ~130
Checks an IPv4 or IPv6 address against a curated list of netblocks known to be hijacked or run by spam/cyber-crime operations (IPv4-mapped IPv6 uses the IPv4 list). A narrow list-based signal: a clean result is not a safety guarantee. Includes list date and attribution.
| Name | Type | Req | Description |
|---|---|---|---|
| ip | string | yes | IPv4 or IPv6 address to check (IPv4-mapped IPv6 such as ::ffff:1.2.3.4 is checked against the IPv4 list) against a curated list of known hijacked or cyber-crime-controlled netblocks. |
No output schema declared.
No examples provided.
jwt_decode JWT decode ~73
Decodes a JWT's header and payload WITHOUT verifying its signature, so its claims must not be trusted on this basis alone. To check authenticity, use jwt_verify.
| Name | Type | Req | Description |
|---|---|---|---|
| token | string | yes | The JWT to decode. Decodes header and payload only -- does not verify the signature (use /jwt-verify for that). |
No output schema declared.
No examples provided.
jwt_verify JWT signature verification ~174
Cryptographically verifies a JWT signature (HS256/384/512, RS/PS256/384/512, ES256/384/512) and checks exp/nbf claims. Provide a secret for HS*, or a JWK or JWKS URL for RS/PS/ES. Use instead of jwt_decode whenever authenticity matters.
| Name | Type | Req | Description |
|---|---|---|---|
| jwk | object | – | Public key in JWK format, for RS/PS/ES algorithms. |
| jwks_url | string | – | URL to a JWKS document; the key is matched by the token's "kid" header. |
| secret | string | – | Required for HS256/384/512. |
| token | string | yes | The JWT to verify. Checks the cryptographic signature -- use /jwt-decode if you only need to read the header and payload. |
No output schema declared.
No examples provided.
link_metadata Link preview metadata ~97
Fetches a web page and extracts its title, description, canonical URL, Open Graph and Twitter Card tags and favicon (the data behind link previews). Follows redirects and returns final_url; favicon_source says whether the icon is declared by the page or only the /favicon.ico guess. To see each redirect hop, use redirect_trace.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to extract title, description, and Open Graph / Twitter Card metadata from. |
No output schema declared.
No examples provided.
maintainer_change_check Package maintainer change check ~196
Publisher-change analysis is npm only. Also reports whether the package exists (found) and its age (first_published, package_age_days, new_package if first published less than 30 days ago), for npm and for PyPI; on PyPI only existence and age are available. Flags a previously unseen human publisher taking over a package after 180+ days of inactivity, within the last 365 days (the event-stream attack pattern). npm trusted publishing (verified OIDC identity, not just a bot-like account name), pre-release, and handovers to a publisher who already maintains another widely used package (100k+ weekly downloads) are reported but not flagged. Does not detect hijacked existing accounts; a heuristic for review, not proof.
| Name | Type | Req | Description |
|---|---|---|---|
| ecosystem | string | yes | npm (full analysis) or pypi (existence and age only). |
| package | string | yes | Package name, e.g. lodash |
No output schema declared.
No examples provided.
password Password generator ~159
Generates a random password, with options for length, symbols, uppercase, numbers and excluding ambiguous characters. To evaluate an existing password, use password_check.
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_ambiguous | string | – | Whether to exclude visually ambiguous characters (e.g. 0/O, 1/l). 1 for yes, 0 for no. |
| length | string | – | Desired password length. Defaults to a reasonable secure length if omitted. |
| numbers | string | – | Whether to include numeric digits. 1 for yes, 0 for no. |
| symbols | string | – | Whether to include symbol characters. 1 for yes, 0 for no. |
| uppercase | string | – | Whether to include uppercase letters. 1 for yes, 0 for no. |
No output schema declared.
No examples provided.
password_breach Password breach check ~126
Checks whether a password appears in known data breaches (Have I Been Pwned) and how many times, using k-anonymity towards HIBP. Breach check only; password_check adds strength scoring and sends the password in a POST body.
| Name | Type | Req | Description |
|---|---|---|---|
| password | string | yes | Password to check against known data-breach corpora. Only a 5-character SHA-1 hash prefix is sent to HIBP (k-anonymity), but the password itself travels in this request's URL; for real passwords, pre… |
No output schema declared.
No examples provided.
password_check Password strength check ~176
Scores a password's strength (length, character variety, entropy as an upper bound, repeated patterns; passphrases are estimated per word) and, with check_breach=true, also looks it up in Have I Been Pwned breach data via k-anonymity (only a hash prefix is sent); a password found in breaches is always rated very_weak. Use it to evaluate a password someone is choosing; use password_breach when you only need the breach count, and password to generate a new one. The password travels in a POST body, never in a URL.
| Name | Type | Req | Description |
|---|---|---|---|
| check_breach | boolean | – | Whether to also check the password against known data-breach corpora via k-anonymity. true or false. |
| password | string | yes | Password to evaluate for strength (length, character variety, common patterns). |
No output schema declared.
No examples provided.
phone_verify Phone number validation ~124
Validates and formats a phone number: validity, country, line type, E.164, international and national formats. Numbers without a leading + require 'country', since the end user's country cannot be inferred over MCP.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code (e.g. US, FR). Required unless the number starts with +: over MCP the end user's country cannot be inferred. |
| number | string | yes | Phone number to validate and format, ideally in E.164 format (e.g. +14155552671). |
No output schema declared.
No examples provided.
redirect_trace Redirect trace ~80
Follows a URL's full redirect chain (up to 15 hops) and returns every hop with its status code, plus whether the chain crossed domains. Use it to see where a short or tracking link really leads; check the final URL with url_reputation.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to follow the full redirect chain for, hop by hop. |
No output schema declared.
No examples provided.
repo_health_check Repository health check ~121
Maintenance signals for a GitHub repository given as owner/name: stars, forks, open issues, license, archived and fork flags, creation date and age, days since last push, topics. Use it to judge whether a dependency looks maintained or abandoned. For an npm or PyPI package whose repository you do not know, supply_chain_check resolves it from registry metadata and includes these signals. GitHub only; missing or private repositories return found: false.
| Name | Type | Req | Description |
|---|---|---|---|
| repo | string | yes | GitHub repository in owner/name format, e.g. lodash/lodash. |
No output schema declared.
No examples provided.
rpc_check Cosmos RPC endpoint check ~104
Read-only audit of a public CometBFT (Cosmos SDK) RPC endpoint: node status, health, peers, and whether unsafe admin methods (dial_seeds, dial_peers, unsafe_flush_mempool) are publicly exposed. Never calls an unsafe method; exposure is inferred from the node's route listing.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Base URL of a CometBFT RPC endpoint to audit, e.g. https://rpc.cosmos.network:443. |
No output schema declared.
No examples provided.
security_headers HTTP security headers check ~111
Audits the HTTP security headers of one URL (CSP, HSTS, X-Frame-Options, Permissions-Policy, cross-origin policies and others) and returns per-header findings with fix advice, a score and a letter grade. Use it when you need header hardening advice; security_scan runs this audit together with URL reputation and subdomain discovery in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to audit HTTP security headers for (CSP, HSTS, X-Frame-Options, etc.). |
No output schema declared.
No examples provided.
security_scan Website security scan ~72
Combined website check in one call: security headers, URL reputation and passive subdomain discovery, run in parallel, with an overall score and verdict. Use the individual tools when you need a single signal.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to run a combined security posture check against (headers, reputation, and related signals). |
No output schema declared.
No examples provided.
subdomains Subdomain discovery ~68
Passive subdomain discovery from Certificate Transparency logs (crt.sh): finds hostnames that appeared in public TLS certificates, not every DNS record. crt.sh is occasionally slow or unavailable.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to passively discover subdomains for via Certificate Transparency logs, e.g. example.com. |
No output schema declared.
No examples provided.
supply_chain_check Package supply-chain check ~337
Call this before installing or adding a package (npm install, pip install, a new entry in a manifest), especially one whose name you recalled or that a model suggested. One-call risk check: combines vulnerability_check (OSV.dev), typosquat_check, maintainer_change_check (npm only) and repo_health_check (when the GitHub repo can be resolved) into one overall verdict. A package that does not exist on npm or PyPI gets overall_risk 'package_not_found': the name may be invented and should not be installed. A package first published less than 30 days ago gets the 'new_package' flag and overall_risk 'review_recommended': new packages are where invented and look-alike names get registered, so the name is worth confirming against the project's own documentation before installing (on PyPI the age is that of the oldest release still published; being new does not make a package malicious). Use the individual tools to investigate one signal. Vulnerabilities are checked for the given version, or the latest published one (version_checked, version_source). If a check could not run (rate limit, upstream error), it is listed in unavailable_checks and overall_risk is 'incomplete', never 'no_signals_found'. Also flags a version marked deprecated on npm or yanked on PyPI.
| Name | Type | Req | Description |
|---|---|---|---|
| ecosystem | string | yes | Package ecosystem, e.g. npm. maintainer-change-check only runs for npm. |
| package | string | yes | Package name to check. |
| version | string | – | Exact version to check for known vulnerabilities. Optional: defaults to the latest published version (npm and PyPI). |
No output schema declared.
No examples provided.
text_similarity Text similarity ~89
Near-duplicate detection with a 64-bit SimHash over word shingles: send 1 text to get its hash, or 2 texts to compare them. Detects paraphrased or lightly edited copies; unrelated texts score around 50%, not 0%.
| Name | Type | Req | Description |
|---|---|---|---|
| texts | array | yes | 1 text (hash only) or 2 texts (compare). Max 200,000 characters each. |
No output schema declared.
No examples provided.
timestamp Timestamp converter ~93
Returns the current time, or converts between a Unix timestamp (seconds) and an ISO date. Provide unix or date, or neither for the current time.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Date/time string to convert to a Unix timestamp. Provide either unix or date, not both. |
| unix | string | – | Unix timestamp (seconds since epoch) to convert to a human-readable date. Provide either unix or date, not both. |
No output schema declared.
No examples provided.
tx_decode Cosmos transaction decoder ~111
Decodes a raw signed Cosmos SDK transaction (base64 TxRaw bytes, as found in a CometBFT block's data.txs) into JSON: messages, fee, gas, signers and signatures. Bank, staking, gov and authz messages are fully decoded; other types are returned as type URL plus raw hex.
| Name | Type | Req | Description |
|---|---|---|---|
| tx | string | yes | Base64-encoded Cosmos SDK TxRaw protobuf bytes, as returned by a chain's CometBFT RPC /block or /tx_search endpoints. |
No output schema declared.
No examples provided.
typosquat_check Package typosquat check ~147
Call before installing a package whose name you typed or recalled. Checks whether an npm or PyPI package name is a near-miss of a well-known package (typosquatting), with an edit-distance threshold scaled to name length; names of 3 characters or fewer are not fuzzy-matched. Uses a curated list of popular names, so a clean result does not prove a package is safe. It does not check that the package exists: supply_chain_check does.
| Name | Type | Req | Description |
|---|---|---|---|
| ecosystem | string | yes | Package ecosystem, e.g. npm or PyPI. |
| package | string | yes | Package name to check for likely typosquatting of a well-known package in the given ecosystem. |
No output schema declared.
No examples provided.
url_clean URL tracking-parameter cleaner ~73
Removes 60+ known tracking parameters (utm_*, fbclid, gclid and similar) from a URL and returns the clean URL. Does not follow redirects; for that, use redirect_trace.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to strip tracking parameters from (utm_*, fbclid, gclid, and similar). |
No output schema declared.
No examples provided.
url_reputation URL reputation check ~64
Checks a URL against URLhaus (abuse.ch), a public database of known malware distribution URLs. A clean result only means the URL is not listed, not that it is safe.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL to check against known phishing/malware URL databases. |
No output schema declared.
No examples provided.
user_agent User-Agent parser ~61
Parses a User-Agent string into browser and version, operating system and version, device type, and whether it looks like a bot.
| Name | Type | Req | Description |
|---|---|---|---|
| ua | string | yes | User-Agent string to parse. Required over MCP: the server cannot see the end user's own User-Agent. |
No output schema declared.
No examples provided.
uuid UUID generator ~43
Generates 1 to 100 random UUID v4 values.
| Name | Type | Req | Description |
|---|---|---|---|
| count | string | – | Number of UUIDs (v4) to generate. Defaults to 1 if omitted. |
No output schema declared.
No examples provided.
vat_validate EU VAT number validation ~92
Checks an EU VAT number in real time against the European Commission's VIES service and, when valid, returns the registered company name and address. VIES is occasionally unavailable for some member states.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | 2-letter EU country code (EL for Greece, XI for Northern Ireland). Optional if vat includes the prefix. |
| vat | string | yes | VAT number, with or without the country prefix. |
No output schema declared.
No examples provided.
vulnerability_check Package vulnerability check ~171
Checks a package (optionally a specific version) against OSV.dev for known vulnerabilities: npm, PyPI, Go, crates.io, Maven, RubyGems, Packagist and NuGet. For npm and PyPI, a name that does not exist returns found: false and vulnerable: null, never a clean result. Use cve_lookup when you already have a CVE/GHSA ID, or supply_chain_check for a combined verdict.
| Name | Type | Req | Description |
|---|---|---|---|
| ecosystem | string | yes | Package ecosystem, e.g. npm, PyPI, Go, crates.io, Maven, RubyGems, Packagist, or NuGet. |
| package | string | yes | Package name to check against OSV.dev for known CVEs. |
| version | string | – | Omit to check all versions of the package. |
No output schema declared.
No examples provided.
whois_lookup WHOIS lookup ~67
Domain registration data via RDAP (the modern WHOIS): registrar, creation and expiration dates, domain age in days, nameservers. For DNS records, use dns_lookup.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | Domain to look up registration details for via RDAP, e.g. example.com. |
No output schema declared.
No examples provided.
How do I install the Presend MCP Server server?
Presend MCP Server is a hosted endpoint at https://presend.pages.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · presend.pages.dev
claude mcp add --transport http presendapp-presend-mcp 'https://presend.pages.dev/mcp'
What is the Presend MCP Server server?
Presend MCP Server is listed in the public MCP registry as io.github.presendapp/presend-mcp. Before an AI agent installs an npm/PyPI package: typosquat, vulnerability and existence checks. This page covers its hosted endpoint (https://presend.pages.dev/mcp).
Is the Presend MCP Server server safe to use?
Presend MCP Server scores 83 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Presend MCP Server server expose?
Presend MCP Server exposes 40 tools: address_risk, ai_crawler_check, base64, color, csv_json, and 35 more. Their descriptions and schemas cost roughly 4,493 tokens of context every time the server is loaded.
Does the Presend MCP Server server require authentication?
No. We connected to Presend MCP Server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Presend MCP Server server still maintained?
Presend MCP Server is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.