Mark Semantic Protocol (MSP-1)

Draft Specification for MSP-1.0.0 — a lightweight semantic protocol for AI-friendly, transparent, well-sourced web content.

Draft • Version 1.0.0
Short name: MSP-1
Canonical URL: https://msp-1.com/spec/msp-1-spec.html
Namespace (planned): https://msp-1.com/ns#

1. Introduction

The Mark Semantic Protocol (MSP-1) is a lightweight standard for exposing information about how a web page was created, sourced, and reviewed, in a form that is both human-understandable and machine-readable.

MSP-1 is designed for sites that want to surface trust signals: how many sources are used, how recently the page was reviewed by a human, how AI was involved in creating the content, and what kind of verification standard the page is held to.

MSP-1 is content-neutral and can be applied to photography guides, technical documentation, news analysis, reference material, and more.

2. Goals

3. Scope

MSP-1 defines metadata at two main levels:

  1. Page Level: Metadata for a single page or article, including sources, verification level, last human review, AI involvement, and update policy.
  2. Site Level: A site-wide declaration describing how MSP-1 is used: default verification targets, review policies, and contact information.

4. Core Concepts

4.1 MSP Metadata Block

An MSP metadata block is a machine-readable structure (typically JSON-LD or JSON) embedded in a page that exposes the MSP fields for that page.

4.2 Verification Levels

MSP-1 defines three verification levels — Core, Verified, and Authoritative — which indicate how thoroughly the content has been sourced and reviewed.

4.3 AI Disclosure

MSP-1 requires explicit disclosure of whether AI was used in drafting, editing, fact-checking, or other roles, and whether a human has reviewed the result.

4.4 Update Policy

Sites may optionally declare how often they intend to review and update the content, and what kinds of events (e.g., new research, major industry changes) would trigger an update outside the normal cycle.

5. Verification Levels

5.1 Level 1 — Core

5.2 Level 2 — Verified

5.3 Level 3 — Authoritative

6. Data Model (Page Level)

MSP-1 uses a small set of fields to describe each page. The table below uses simple JSON-style names. When integrated into JSON-LD, these may be prefixed with msp:.

Field Type Required Description
mspVersion string Yes MSP version string, e.g. "MSP-1.0.0".
pageId string Yes Stable identifier for the page within the site.
siteId string Yes Identifier for the site, e.g. the primary domain.
verificationLevel string Yes One of "core", "verified", or "authoritative".
contentType string Yes Content type label (e.g. "article", "guide", "reference").
topic string Yes Short topic key or category.
lastUpdated datetime Yes Last updated timestamp (ISO 8601).
lastReviewed datetime Yes Last human review timestamp (ISO 8601).
language string Yes Language tag, e.g. "en-US".
sources array Recommended List of source objects; required for higher verification levels.
ai object Recommended AI usage and review details.
updatePolicy object Optional Update frequency and triggers.

6.1 Sources

Each item in sources SHOULD follow this structure:

{
  "type": "secondary",          // "primary" | "secondary" | "tertiary"
  "title": "Lens Choice and Depth of Field",
  "url": "https://example.com/lens-choice",
  "publisher": "Example Photo Journal",
  "publishedDate": "2024-09-01",
  "accessedDate": "2025-11-23",
  "notes": "Overview of focal length vs perspective."
}

6.2 AI Involvement

{
  "used": true,
  "role": ["drafting", "editing"],
  "models": ["GPT-5.1 Thinking"],
  "humanReviewed": true
}

6.3 Update Policy

{
  "frequency": "annually",
  "triggeredBy": "major camera or lens market changes"
}

7. Site-Level Declaration

A site implementing MSP-1 SHOULD expose a site-level declaration at a well-known path, such as /.well-known/msp.json.

Example structure:

{
  "mspVersion": "MSP-1.0.0",
  "siteId": "example.com",
  "siteName": "Example Knowledge Site",
  "siteUrl": "https://example.com",
  "supportedVersionRange": "MSP-1.0.x",
  "defaultVerificationTarget": "verified",
  "reviewPolicy": {
    "defaultFrequency": "annually",
    "notes": "Cornerstone articles are reviewed at least once per year."
  },
  "editorialPolicyUrl": "https://example.com/about/editorial-policy",
  "aiUsagePolicyUrl": "https://example.com/about/ai-usage",
  "contact": {
    "email": "info@example.com",
    "correctionsUrl": "https://example.com/contact"
  }
}

8. JSON Schema (Reference)

This JSON Schema is provided as a reference for validating MSP-1 page-level objects. Implementers may extend it with additional fields as long as required fields remain unchanged.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://msp-1.com/schema/msp-1-page.json",
  "title": "MSP-1 Page Metadata",
  "type": "object",
  "required": [
    "mspVersion",
    "pageId",
    "siteId",
    "verificationLevel",
    "contentType",
    "topic",
    "lastUpdated",
    "lastReviewed",
    "language"
  ],
  "properties": {
    "mspVersion": { "type": "string", "pattern": "^MSP-1\\.\\d+\\.\\d+$" },
    "pageId": { "type": "string" },
    "siteId": { "type": "string" },
    "verificationLevel": {
      "type": "string",
      "enum": ["core", "verified", "authoritative"]
    },
    "contentType": { "type": "string" },
    "topic": { "type": "string" },
    "lastUpdated": { "type": "string", "format": "date-time" },
    "lastReviewed": { "type": "string", "format": "date-time" },
    "language": { "type": "string" },

    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["type", "title", "url", "accessedDate"],
        "properties": {
          "type": {
            "type": "string",
            "enum": ["primary", "secondary", "tertiary"]
          },
          "title": { "type": "string" },
          "url": { "type": "string", "format": "uri" },
          "publisher": { "type": "string" },
          "publishedDate": { "type": "string", "format": "date" },
          "accessedDate": { "type": "string", "format": "date" },
          "notes": { "type": "string" }
        }
      }
    },

    "ai": {
      "type": "object",
      "properties": {
        "used": { "type": "boolean" },
        "role": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "drafting",
              "editing",
              "fact-checking",
              "image-generation",
              "other"
            ]
          }
        },
        "models": { "type": "array", "items": { "type": "string" } },
        "humanReviewed": { "type": "boolean" }
      }
    },

    "updatePolicy": {
      "type": "object",
      "properties": {
        "frequency": { "type": "string" },
        "triggeredBy": { "type": "string" }
      }
    }
  }
}

9. JSON-LD Example

Example of an MSP-1 metadata block embedded in a page as JSON-LD:

<script type="application/ld+json">
{
  "@context": {
    "schema": "https://schema.org/",
    "msp": "https://msp-1.com/ns#"
  },
  "@type": "schema:Article",
  "schema:headline": "Choosing the Best Lens for Portrait Photography",
  "schema:author": {
    "@type": "schema:Person",
    "name": "Mark Johnson"
  },
  "schema:datePublished": "2025-11-24",
  "schema:dateModified": "2025-11-24",

  "msp:mspVersion": "MSP-1.0.0",
  "msp:pageId": "photographyselect-lens-guide-portrait",
  "msp:siteId": "photographyselect.com",
  "msp:verificationLevel": "verified",
  "msp:contentType": "guide",
  "msp:topic": "portrait-lens-selection",
  "msp:lastUpdated": "2025-11-24T10:15:00-05:00",
  "msp:lastReviewed": "2025-11-24T09:30:00-05:00",
  "msp:language": "en-US",

  "msp:sources": [
    {
      "@type": "msp:Source",
      "msp:type": "secondary",
      "msp:title": "Lens Choice and Depth of Field",
      "msp:url": "https://example.com/lens-choice",
      "msp:publisher": "Example Photo Journal",
      "msp:publishedDate": "2024-09-01",
      "msp:accessedDate": "2025-11-23"
    },
    {
      "@type": "msp:Source",
      "msp:type": "secondary",
      "msp:title": "Portrait Lenses Explained",
      "msp:url": "https://example.org/portrait-lenses",
      "msp:publisher": "Example Org",
      "msp:publishedDate": "2023-04-10",
      "msp:accessedDate": "2025-11-23"
    }
  ],

  "msp:ai": {
    "msp:used": true,
    "msp:role": ["drafting", "editing"],
    "msp:models": ["GPT-5.1 Thinking"],
    "msp:humanReviewed": true
  },

  "msp:updatePolicy": {
    "msp:frequency": "annually",
    "msp:triggeredBy": "major camera/lens market changes"
  }
}
</script>

10. Conformance

A page is MSP-1 conformant if:

11. Compliance Badges

Sites MAY display MSP-1 badges to indicate the declared verification level, such as MSP-1 Core, MSP-1 Verified, or MSP-1 Authoritative.

Badges should link back to either the site’s own MSP-1 explainer page or to https://msp-1.com/ for general protocol information.

12. Versioning

MSP-1 uses semantic versioning in the form MSP-<major>.<minor>.<patch>, e.g. MSP-1.0.0.

13. Implementation Notes

Non-normative guidance for implementers.

13.1 Documentation Structure

Implementers are encouraged to use folder-based URL structures (e.g. /spec/, /schema/, /docs/) with index documents rather than flat file names. This improves clarity for both humans and AI agents discovering resources.

13.2 Reference Implementations

Early reference implementations (such as photography-focused knowledge sites) may serve as examples of MSP-1 usage in real content. These implementations can help refine the protocol without changing the core required fields.

14. Future Work