Skip to content
Development
Skill

/websites

Hudu website records: CRUD via /api/v1/websites, monitoring and pause/disable fields, SSL/TLS certificate tracking, email security status (DMARC, DKIM, SPF), DNS record fields, company linkage, and website validation errors.

From plugin
msp-claude-plugins
52200 skills146 agents200 commands4 MCP

Claude Code

$ npx -y skills add wyre-ai/msp-claude-plugins --skill websites --agent claude-code

SKILL.md

websites.SKILL.md
name: "Hudu Websites"
description: >
  Hudu website records: CRUD via /api/v1/websites, monitoring and pause/disable
  fields, SSL/TLS certificate tracking, email security status (DMARC, DKIM, SPF),
  DNS record fields, company linkage, and website validation errors.
when_to_use: >-
  When creating, querying, or auditing Hudu website records, or checking SSL and email
  authentication status for client domains. Use when: hudu website,
  website monitoring, ssl certificate, email security, dmarc check, dkim check, spf record,
  website management, hudu dns, or website tracking.

Hudu Websites Management

Overview

Websites in Hudu represent website records associated with client companies. Beyond basic URL tracking, Hudu provides monitoring for SSL/TLS certificates and email security standards (DMARC, DKIM, SPF). MSPs use website records to track client web properties, monitor certificate expiration, and verify email authentication configuration.

Anti-triggers

  • **A live DNS or certificate check** — these fields are Hudu's last

recorded observation, not a lookup performed now. A DMARC record changed this morning will still read as it did at the last scan. If the question is "what is the record right now", this is the wrong source.

  • **Email security posture and threat data** — DMARC/DKIM/SPF *status* is

documented here; enforcement, quarantine, and phishing telemetry belong to the email-security plugins (Proofpoint, Checkpoint Avanan, Mimecast).

  • **Uptime and availability** — Hudu records that a site exists; it does

not page anyone when it goes down. Use `betterstack` for monitoring.

  • **Credentials for the site's admin panel** — use `hudu-passwords`.

Key Concepts

Website Monitoring

Hudu can automatically monitor websites for:

| Monitoring Area | Description | |----------------|-------------| | SSL/TLS | Certificate validity, expiration date, issuer | | DMARC | Domain-based Message Authentication, Reporting & Conformance | | DKIM | DomainKeys Identified Mail | | SPF | Sender Policy Framework | | HTTP Status | Whether the site is reachable |

Email Security Trifecta

The three email security standards that Hudu tracks:

| Standard | Purpose | DNS Record Type | |----------|---------|----------------| | **SPF** | Specifies authorized mail servers | TXT record on domain | | **DKIM** | Cryptographic email authentication | TXT record on selector._domainkey | | **DMARC** | Policy for handling failed SPF/DKIM | TXT record on _dmarc subdomain |

Website Scope

Each website record is linked to a company. A company can have multiple website records (e.g., primary domain, marketing site, client portal).

Field Reference

Core Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | `id` | integer | System | Auto-generated unique identifier | | `company_id` | integer | Yes | Parent company | | `name` | string | Yes | Website display name / URL | | `slug` | string | System | URL-friendly identifier | | `notes` | string | No | Additional notes | | `paused` | boolean | No | Whether monitoring is paused | | `disable_dns` | boolean | No | Disable DNS checks | | `disable_ssl` | boolean | No | Disable SSL checks | | `disable_whois` | boolean | No | Disable WHOIS checks |

Monitoring Fields

| Field | Type | Description | |-------|------|-------------| | `url` | string | The monitored URL | | `monitoring_status` | string | Current monitoring status |

SSL/TLS Fields

| Field | Type | Description | |-------|------|-------------| | `ssl_status` | string | SSL certificate status | | `ssl_expiration` | datetime | SSL certificate expiration date | | `ssl_issuer` | string | SSL certificate issuer |

Email Security Fields

| Field | Type | Description | |-------|------|-------------| | `dmarc_status` | string | DMARC record status | | `dmarc_policy` | string | DMARC policy (none, quarantine, reject) | | `dkim_status` | string | DKIM record status | | `spf_status` | string | SPF record status | | `spf_record` | string | SPF record value |

DNS Fields

| Field | Type | Description | |-------|------|-------------| | `dns_a_records` | array | A record values | | `dns_mx_records` | array | MX record values | | `dns_ns_records` | array | NS record values |

Metadata Fields

| Field | Type | Description | |-------|------|-------------| | `created_at` | datetime | Creation timestamp | | `updated_at` | datetime | Last update timestamp | | `object_type` | string | Always "Website" | | `company_name` | string | Parent company name (read-only) |

API Patterns

List Websites

GET /api/v1/websites
x-api-key: YOUR_API_KEY
Content-Type: application/json

**By Company:**

GET /api/v1/websites?company_id=123

**By Name:**

GET /api/v1/websites?name=acme.com

**With Pagination:**

GET /api/v1/websites?page=1

Get Single Website

GET /api/v1/websites/456
x-api-key: YOUR_API_KEY

**Response:**

{
  "website": {
    "id": 456,
    "company_id": 123,
    "company_name": "Acme Corporation",
    "name": "acme.com",
    "url": "https://www.acme.com",
    "notes": "Primary company website",
    "paused": false,
    "disable_dns": false,
    "disable_ssl": false,
    "disable_whois": false,
    "monitoring_status": "up",
    "ssl_status": "valid",
    "ssl_expiration": "2026-08-15T00:00:00.000Z",
    "ssl_issuer": "Let's Encrypt Authority X3",
    "dmarc_status": "pass",
    "dmarc_policy": "reject",
    "dkim_status": "pass",
    "spf_status": "pass",
    "spf_record": "v=spf1 include:_spf.google.com include:spf.protection.outlook.com ~all",
    "dns_a_records": ["203.0.113.10"],
    "dns_mx_records": ["aspmx.l.google.com"],
    "dns_ns_records": ["ns1.example.com", "ns2.example.com"],
    "created_at": "2024-03-15T10:30:00.000Z",
    "updated_at": "2026-02-20T08:00:00.000Z"
  }
}

Create Website

POST /api/v1/websites
Content-Type: applicat
Read more
@wyre-technology
Ships withmsp-claude-plugins

One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai

52200 skills146 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
52
Star history of wyre-technology/msp-claude-plugins on GitHub, a chart by star-history.com

Other skills on msp-claude-plugins.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about websites.

Which coding agents can use websites?
websites installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.