# LeadShield Contact Form & B2B Solicitation Blocker

> Preview form screening and manage site rules. Built by Moosh Works (https://mooshworks.com).

- name: io.github.mooshee/leadshield
- version: 1.1.3
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 84/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.mooshee%2Fleadshield
- tools: https://api.protogrid.dev/v1/servers/io.github.mooshee%2Fleadshield/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "leadshield": {
      "type": "http",
      "url": "https://rankandrent-leads.hallmanlab.workers.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-8d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 84/100 (good)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 300000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,578 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 6 tool changes in 30 days
- fail `stability.rug_pull`: 5 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 1,578 tokens to load them all
- tool set hash: 90a2b05c02abfc513e670b1b2db901e5
- tools last changed: 2026-10-30T01:48:01.372Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.mooshee/leadshield.svg)](https://protogrid.dev/servers/io.github.mooshee/leadshield)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-30 `leadshield_configure_spam_policy` changed (title, description, annotations)
  - before: Preview changes to a connected site's spam rules. Set dryRun to false to save them with write access. Omitted settings are preserved. A successful save returns the policy read back from storage.
  - after: Preview changes to a connected site's spam rules. Set dryRun to false to save them with write access. Saved rules affect future submissions. Omitted settings are preserved. A successful save returns the policy read back from storage.
- 2026-10-29 `leadshield_generate_guard_embed` changed (title, description, inputSchema) **meaning changed**
  - before: Generate the 1-line zero-trust HTML script snippet, HighLevel workflow action/webhook config, WordPress plugin config, or HubSpot workflow webhook setup for any site. Example: leadshield_generate_guard_embed({"site":"pacific-coast-detailing","platform":"highlevel"})
  - after: Generate an HTML script snippet and setup addresses for a site. Choose HTML, HighLevel, WordPress, HubSpot, or Astro. The result is setup guidance; this tool does not install or activate the guard.
- 2026-10-29 `leadshield_configure_spam_policy` changed (description, inputSchema) **meaning changed**
  - before: Preview (dryRun: true) or update server-side contact form spam rules for a site, including allowedCountries, allowedPhoneFormats, blockUrlsInMessage, formType preset, blockedKeywords, and requiredKeywords. Example: leadshield_configure_spam_policy({"site":"pacific-coast-detailing","allowedCountries":["US","CA"],"blockUrlsInMessage":true,"dryRun":true})
  - after: Preview changes to a connected site's spam rules. Set dryRun to false to save them with write access. Omitted settings are preserved. A successful save returns the policy read back from storage.
- 2026-10-29 `leadshield_get_spam_policy` changed (description, inputSchema) **meaning changed**
  - before: Inspect the effective server-side spam guard policy for a site, including allowed countries, phone formats, URL rules, keyword lists, and active formType preset. Example: leadshield_get_spam_policy({"site":"pacific-coast-detailing","formType":"quote_request"})
  - after: Inspect the saved spam rules for a connected site, including countries, phone formats, URLs, keywords, and its form preset. Supply a formType to preview that preset without changing the saved policy.
- 2026-10-29 `leadshield_get_blocked_spam_report` changed (description, inputSchema) **meaning changed**
  - before: Retrieve quarantined contact form spam counts, Stage 0 vs Stage 1 breakdown, category counts, and recent blocked submissions for a client or site. Example: leadshield_get_blocked_spam_report({"clientSlug":"pacific-coast-detailing","days":7})
  - after: Read blocked-message counts, categories, screening stages, and recent submissions for your connected sites. The date window uses UTC calendar days and includes today.
- 2026-10-29 `leadshield_screen_submission` changed (title, description, inputSchema, annotations) **meaning changed**
  - before: Screen a contact form or inbound lead message using LeadShield's 2-stage guard (Stage 0 deterministic rules at $0.00 + Stage 1 calibrated buyer-intent classification). Returns allowed/blocked verdict, workflow branch ("deliver_to_client" or "spam_quarantine"), reason code, and buyer-intent probability. Example: leadshield_screen_submission({"site":"pacific-coast-detailing","name":"Jane Doe","email":"jane@example.com","phone":"(360) 555-0199","message":"Looking for a ceramic coating quote for my 2024 Tacoma."})
  - after: Check a message against the connected site's spam rules and, when configured, its intent classifier. Returns the screening decision and reason. This preview does not store the message, send it to a customer, or process a payment.

Full history: https://api.protogrid.dev/v1/servers/io.github.mooshee%2Fleadshield/changes

## Remotes

- https://rankandrent-leads.hallmanlab.workers.dev/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (5)

- `leadshield_configure_spam_policy`: Preview changes to a connected site's spam rules. Set dryRun to false to save them with write access. Saved rules affect future submissions. Omitted settings are preserved. A successful save returns the policy read back from storage.
- `leadshield_generate_guard_embed`: Generate an HTML script snippet and setup addresses for a site. Choose HTML, HighLevel, WordPress, HubSpot, or Astro. The result is setup guidance; this tool does not install or activate the guard.
- `leadshield_get_blocked_spam_report`: Read blocked-message counts, categories, screening stages, and recent submissions for your connected sites. The date window uses UTC calendar days and includes today.
- `leadshield_get_spam_policy`: Inspect the saved spam rules for a connected site, including countries, phone formats, URLs, keywords, and its form preset. Supply a formType to preview that preset without changing the saved policy.
- `leadshield_screen_submission`: Check a message against the connected site's spam rules and, when configured, its intent classifier. Returns the screening decision and reason. This preview does not store the message, send it to a customer, or process a payment.
