{
  "generated_from": "live_platform_state",
  "services": [
    {
      "n": 85,
      "id": "skill-plugin-vetting-scans",
      "name": "Skill/plugin vetting scans",
      "description": "the Rightshold resource-scan, productized for any agent stack.",
      "family_id": "security",
      "state": "live",
      "surface": "GET /v1/vetting-scans + POST /v1/vetting-scans/scans + GET /v1/vetting-scans/scans/{id} + GET /v1/vetting-scans/summary",
      "entitlement": {
        "charge_model": "subscription + per-scan",
        "charged_today": false,
        "price_today_usd_cents": 0,
        "planned_price_published": false,
        "price_line_id": null,
        "founder_eligible": true,
        "founder_note": "Policy v4: the first 25 accounts to use each fee-bearing feature hold it free permanently; a founder slot is claimed on first use of the feature — never by a catalog listing or an interest signup."
      },
      "callable_surfaces": [
        "GET /v1/vetting-scans (free, no key) — this index document: the service, its callable surfaces, the scan, note and summary rules, the limits, the scanner block and the live usage counts",
        "POST /v1/vetting-scans/scans (account key, owner only) — record a scan: an artifact_name, an artifact_kind (skill, plugin, mcp_server, tool, agent_stack or other, default other), an optional source_url and the content (the artifact's text or manifest; analyzed in memory and never stored — only its SHA-256, byte size and the check results are recorded)",
        "GET /v1/vetting-scans/scans/{id} (account key, owner only) — read one of this account's scans: its sealed fields, its ledger_seq, its checks and its appended notes",
        "GET /v1/vetting-scans/scans (account key, owner only) — list this account's scans, newest first",
        "POST /v1/vetting-scans/scans/{id}/notes (account key, owner only) — append a note to a sealed scan: a note up to 2000 characters; notes are append-only and the scan itself never changes",
        "GET /v1/vetting-scans/summary (account key, owner only) — this account's summary: its scans grouped by artifact_kind with scan counts, flagged-check totals, scans with flags and the last scan time per group, computed live at read time",
        "GET /v1/services (free, no key) — the full services catalog this service is pulled from",
        "GET /v1/resource-scans (free, no key) — the resource-scan receipts for public resources: the same published check list run over public URLs"
      ],
      "kinds": [
        "skill",
        "plugin",
        "mcp_server",
        "tool",
        "agent_stack",
        "other"
      ],
      "scan_rule": "An account records a vetting scan once: an artifact_name (text up to 120 characters, required), an artifact_kind — exactly skill, plugin, mcp_server, tool, agent_stack or other (default other) — an optional source_url (up to 500 characters, an https URL when sent) and the content (required, 1 to 131072 characters): the artifact's text or manifest, submitted by the account. The content is analyzed in memory with the published resource-scan check list and is NEVER stored — the record keeps only its SHA-256, its byte size, the checks the analysis produced (each check's id, label, status, findings and evidence), the total checks run, how many flagged and the analysis summary line. Recording seals the scan to the ledger and returns its ledger_seq. The sealed scan is immutable: its artifact name, kind, source URL, content hash, byte size, checks, flagged count and summary can never be edited. Later, the account may append notes to the scan — each note sealed the same way and appended to the scan's notes in order; recording a second or later note is allowed and never rewrites an earlier one (append-only).",
      "note_rule": "A note is appended to a sealed scan: a note (text up to 2000 characters, required). Appending seals the note to the ledger as its own entry — the seal carries the note's SHA-256 only, never the note text's subject matter beyond its hash — and appends it to the scan's notes in order; notes are append-only and the scan's sealed fields never change.",
      "summary_rule": "The summary read groups this account's sealed scans by artifact_kind and computes live at read time, from the sealed scans only: the scan count, the total checks flagged across the group, how many scans in the group carry at least one flagged check, and the last scan time (the latest created_at in the group). Groups are returned in a deterministic order — the fixed kind order (skill, plugin, mcp_server, tool, agent_stack, other). It is a summary of what the account recorded; what a scan does and does not show is stated in the limits note.",
      "limits_note": "Limits, stated plainly: the analysis is static only — the submitted bytes are read as text and are never executed, imported, installed or run in any form. A scan publishes checks and findings as evidence and a count of how many checks flagged; it never publishes a judgment about an artifact, and the reader draws their own conclusion from the evidence. The content scanned is account-submitted content — what the account supplied — so a scan speaks to those bytes, named by their SHA-256, and to nothing else: not to bytes at a URL that were not submitted, and not to a later version of the same artifact.",
      "scanner": {
        "method": "a2ally-resource-scan-v1",
        "version": "resource-scan-v1",
        "checks_note": "The check list is published and reproducible: outbound network references and their domains; credential and environment access patterns; install and postinstall hooks; obfuscation and encoded payloads; shell-outs and download-and-execute patterns; permission declarations compared with the behavior the bytes show; known-bad indicators (a fixed pattern list, published in the scanner); and provenance facts, which are labeled weak signals because where a file sits says little about what it does. Anyone can re-run the same checks on the same bytes — the hash on the receipt names exactly which bytes — and a disagreement is answered with a new receipt, never an edit.",
        "about": "A resource-scan receipt is the record of one static check run over one public AI resource — a repository, a gist, a skill file, a script, an MCP server package or a config — at the public URL named on the receipt. The receipt binds to the exact bytes scanned, named by their SHA-256 hash, and is sealed into the public ledger like every other record here. Each receipt carries the published check list with the outcome of every check and the findings in plain language. The analysis is static only: the bytes are read as text and are never executed, installed or run, and nothing is fetched from behind a login. A receipt publishes evidence, never a judgment: the summary line counts how many of the checks flagged, and the reader draws their own conclusion from the findings. Re-scanning the same URL creates a new receipt; the artifact page shows the latest receipt and the history, and when the bytes at a URL change the new receipt is a new version — no receipt is ever edited or overwritten."
      }
    }
  ],
  "vetting_scans": {
    "kinds": [
      "skill",
      "plugin",
      "mcp_server",
      "tool",
      "agent_stack",
      "other"
    ],
    "scan_rule": "An account records a vetting scan once: an artifact_name (text up to 120 characters, required), an artifact_kind — exactly skill, plugin, mcp_server, tool, agent_stack or other (default other) — an optional source_url (up to 500 characters, an https URL when sent) and the content (required, 1 to 131072 characters): the artifact's text or manifest, submitted by the account. The content is analyzed in memory with the published resource-scan check list and is NEVER stored — the record keeps only its SHA-256, its byte size, the checks the analysis produced (each check's id, label, status, findings and evidence), the total checks run, how many flagged and the analysis summary line. Recording seals the scan to the ledger and returns its ledger_seq. The sealed scan is immutable: its artifact name, kind, source URL, content hash, byte size, checks, flagged count and summary can never be edited. Later, the account may append notes to the scan — each note sealed the same way and appended to the scan's notes in order; recording a second or later note is allowed and never rewrites an earlier one (append-only).",
    "note_rule": "A note is appended to a sealed scan: a note (text up to 2000 characters, required). Appending seals the note to the ledger as its own entry — the seal carries the note's SHA-256 only, never the note text's subject matter beyond its hash — and appends it to the scan's notes in order; notes are append-only and the scan's sealed fields never change.",
    "summary_rule": "The summary read groups this account's sealed scans by artifact_kind and computes live at read time, from the sealed scans only: the scan count, the total checks flagged across the group, how many scans in the group carry at least one flagged check, and the last scan time (the latest created_at in the group). Groups are returned in a deterministic order — the fixed kind order (skill, plugin, mcp_server, tool, agent_stack, other). It is a summary of what the account recorded; what a scan does and does not show is stated in the limits note.",
    "limits_note": "Limits, stated plainly: the analysis is static only — the submitted bytes are read as text and are never executed, imported, installed or run in any form. A scan publishes checks and findings as evidence and a count of how many checks flagged; it never publishes a judgment about an artifact, and the reader draws their own conclusion from the evidence. The content scanned is account-submitted content — what the account supplied — so a scan speaks to those bytes, named by their SHA-256, and to nothing else: not to bytes at a URL that were not submitted, and not to a later version of the same artifact.",
    "scanner": {
      "method": "a2ally-resource-scan-v1",
      "version": "resource-scan-v1",
      "checks_note": "The check list is published and reproducible: outbound network references and their domains; credential and environment access patterns; install and postinstall hooks; obfuscation and encoded payloads; shell-outs and download-and-execute patterns; permission declarations compared with the behavior the bytes show; known-bad indicators (a fixed pattern list, published in the scanner); and provenance facts, which are labeled weak signals because where a file sits says little about what it does. Anyone can re-run the same checks on the same bytes — the hash on the receipt names exactly which bytes — and a disagreement is answered with a new receipt, never an edit.",
      "about": "A resource-scan receipt is the record of one static check run over one public AI resource — a repository, a gist, a skill file, a script, an MCP server package or a config — at the public URL named on the receipt. The receipt binds to the exact bytes scanned, named by their SHA-256 hash, and is sealed into the public ledger like every other record here. Each receipt carries the published check list with the outcome of every check and the findings in plain language. The analysis is static only: the bytes are read as text and are never executed, installed or run, and nothing is fetched from behind a login. A receipt publishes evidence, never a judgment: the summary line counts how many of the checks flagged, and the reader draws their own conclusion from the findings. Re-scanning the same URL creates a new receipt; the artifact page shows the latest receipt and the history, and when the bytes at a URL change the new receipt is a new version — no receipt is ever edited or overwritten."
    }
  },
  "usage": {
    "scans_recorded": 0,
    "scans_with_flags": 0,
    "checks_run_total": 0,
    "checks_flagged_total": 0,
    "notes_recorded": 0,
    "by_kind": {
      "skill": 0,
      "plugin": 0,
      "mcp_server": 0,
      "tool": 0,
      "agent_stack": 0,
      "other": 0
    }
  },
  "pricing_url": "https://www.a2ally.com/pricing",
  "page": "/vetting-scans",
  "note": "Every number in this document is computed live from the platform state at the moment of the read — the usage counts from the vetting scans of live accounts (sandbox and canary accounts excluded). Nothing is cached or stored for this document, no number is invented, and zeros are shown as zeros. The public document shows aggregate counts only — never a tenant, a credential, an artifact name or submitted content. Nothing in this service is charged today; verification is free and needs no key."
}