Skip to main content
Glama
Jiibran
by Jiibran
README.md
# @craftrift/verify-mcp

[![npm version](https://badge.fury.io/js/%40craftrift%2Fverify-mcp.svg)](https://www.npmjs.com/package/@craftrift/verify-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Node Version](https://img.shields.io/node/%3E%3D18.0.0-brightgreen)](https://nodejs.org)

A Model Context Protocol (MCP) server for the [CraftRift Verify API](https://verify.craftrift.com). Verify websites, SSL certificates, DNS propagation, and API health directly from Claude Desktop.

## Features

- 🔍 **Website Verification** - Check if websites are live and accessible
- 🔐 **SSL Certificate Validation** - Verify SSL validity, expiration, and certificate chain
- 🌐 **DNS Propagation Checks** - Verify A, AAAA, CNAME, MX, and TXT record propagation
- 🏥 **API Health Monitoring** - Check API endpoints for health and expected responses
- ⚡ **Fast & Reliable** - Powered by CraftRift's global verification infrastructure
- 🔑 **Demo Mode** - Works without API key (rate limited by IP)

## Installation

### npm

```bash
npm install -g @craftrift/verify-mcp
```

### npx

```bash
npx @craftrift/verify-mcp
```

## Claude Desktop Configuration

Add this to your Claude Desktop config file:

**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "verify": {
      "command": "npx",
      "args": ["-y", "@craftrift/verify-mcp"],
      "env": {
        "CRAFTRIFT_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

> **Note**: The `CRAFTRIFT_API_KEY` is optional. Without it, the server runs in demo mode with IP-based rate limiting. Get a free API key at [verify.craftrift.com](https://verify.craftrift.com).

## Tools

### verify_website

Verify if a website is live and accessible.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| target | string | Yes | Website URL (e.g., `https://example.com`) |
| timeout_ms | number | No | Request timeout in ms (default: 10000) |
| follow_redirects | boolean | No | Follow HTTP redirects (default: true) |

**Example Response**:
```json
{
  "verified": true,
  "type": "website_live",
  "target": "https://example.com",
  "checks": [
    {
      "name": "http_response",
      "passed": true,
      "actual": "200 OK",
      "detail": "Website returned successful HTTP status"
    },
    {
      "name": "content_accessible",
      "passed": true,
      "actual": "1276 bytes",
      "detail": "Website content is accessible"
    }
  ],
  "duration_ms": 245,
  "timestamp": "2024-01-15T10:30:00Z",
  "region": "us-east-1"
}
```

### verify_ssl

Verify if a website has a valid SSL certificate.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| target | string | Yes | Hostname (e.g., `example.com`) |
| timeout_ms | number | No | Request timeout in ms (default: 10000) |

**Example Response**:
```json
{
  "verified": true,
  "type": "ssl_valid",
  "target": "example.com",
  "checks": [
    {
      "name": "certificate_valid",
      "passed": true,
      "actual": "valid",
      "detail": "SSL certificate is valid and trusted"
    },
    {
      "name": "not_expired",
      "passed": true,
      "actual": "89 days remaining",
      "detail": "Certificate expires on 2024-04-15"
    },
    {
      "name": "chain_complete",
      "passed": true,
      "actual": "3 certificates",
      "detail": "Full certificate chain is present"
    }
  ],
  "duration_ms": 312,
  "timestamp": "2024-01-15T10:30:00Z",
  "region": "us-east-1"
}
```

### verify_dns

Verify if DNS records have propagated.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| target | string | Yes | Domain name (e.g., `example.com`) |
| record_type | string | No | DNS record type: A, AAAA, CNAME, MX, TXT, or ALL (default: ALL) |
| timeout_ms | number | No | Request timeout in ms (default: 10000) |

**Example Response**:
```json
{
  "verified": true,
  "type": "dns_propagated",
  "target": "example.com",
  "checks": [
    {
      "name": "a_record",
      "passed": true,
      "actual": "93.184.216.34",
      "detail": "A record found and propagated"
    },
    {
      "name": "mx_record",
      "passed": true,
      "actual": "10 mail.example.com",
      "detail": "MX record found and propagated"
    }
  ],
  "duration_ms": 156,
  "timestamp": "2024-01-15T10:30:00Z",
  "region": "us-east-1"
}
```

### verify_api_health

Verify if an API endpoint is healthy and responding correctly.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| target | string | Yes | API endpoint URL (e.g., `https://api.example.com/health`) |
| expect | object | No | Expected response criteria (status_code, contains) |
| timeout_ms | number | No | Request timeout in ms (default: 10000) |
| follow_redirects | boolean | No | Follow HTTP redirects (default: true) |

**Example Response**:
```json
{
  "verified": true,
  "type": "api_healthy",
  "target": "https://api.example.com/health",
  "checks": [
    {
      "name": "status_code",
      "passed": true,
      "actual": "200",
      "detail": "Expected status code 200, got 200"
    },
    {
      "name": "response_time",
      "passed": true,
      "actual": "45ms",
      "detail": "API responded within acceptable time"
    },
    {
      "name": "content_match",
      "passed": true,
      "actual": "found",
      "detail": "Expected content found in response"
    }
  ],
  "duration_ms": 67,
  "timestamp": "2024-01-15T10:30:00Z",
  "region": "us-east-1"
}
```

## Pricing

| Plan | Requests/Month | Price |
|------|----------------|-------|
| Free | 100 | $0 |
| Starter | 2,000 | $19/mo |
| Pro | 10,000 | $49/mo |

Get your API key at [verify.craftrift.com](https://verify.craftrift.com)

## Development

```bash
# Install dependencies
npm install

# Build
npm run build

# Run locally
npm run dev
```

## Links

- [CraftRift Verify API](https://verify.craftrift.com)
- [GitHub Repository](https://github.com/Jiibran/verify-mcp)
- [Report Issues](https://github.com/Jiibran/verify-mcp/issues)

## License

MIT © 2026 [Jibran / CraftRift](https://craftrift.com)

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct verification aspect (API health, DNS, SSL, website) with no overlap, making it easy for an agent to choose the correct one.

Naming Consistency5/5

All tools follow a consistent 'verify_' prefix followed by a specific noun (e.g., verify_api_health, verify_dns), forming a predictable verb_noun pattern.

Tool Count5/5

Four tools is well-scoped for a verification-focused server; each tool covers a common infrastructure check without overloading or underserving the domain.

Completeness4/5

The set covers the most common verification needs (API, DNS, SSL, website) but lacks checks like port availability or email delivery, which are minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues