Prompt Protocol
Foundation

For AI companies. Replace guess with proof.

A single server-to-server call at inference time tells your model whether a depiction is authorized — cryptographically signed, 5–30 ms, no prompt changes.

Scroll for details

Why it's worth integrating.

Liability becomes a verifiable signature, not a judgment call

Every allow-decision carries a signed license with the rights-holder's own key. When a complaint arrives, the answer is an evidence bundle that any third party can verify offline — not a debate about model behavior.

Unblocks high-value use cases that safety filters refuse by default

Brand campaigns, celebrity endorsements, estate-authorized depictions — anything that's legitimately licensed today gets blocked by blanket safety filters tomorrow. PP gives the model a clean way to say "yes, this one is authorized".

Built for inference latency, not paperwork

A verification round-trip is typically 5–30 ms. No protocol material in prompts, no UI changes, no SDK gymnastics — a single server-to-server call slotted into the existing serving pipeline.

Regulator-ready by construction

The EU AI Act and emerging US legislation increasingly demand authorization, attribution, and auditability for synthetic content. PP's append-only hash-chained audit log with external anchoring produces the evidence record regulators are starting to ask for.

No vendor lock-in. Federated by design.

PP is open source under Apache-2.0, with no privileged operator. The architecture supports multiple registries cross-signing each other — providers integrate once, not per-vendor.

How it fits into your pipeline.

When a user sends a prompt, the provider detects whether it references a registered subject, then issues a server-to-server query to the registry. The registry evaluates opt-outs, license status, scope, and extensions — returning a signed decision.

verification request 01Subject detection→ soft_match? 02Subject status→ pending / disputed 03Opt-out check→ tier-0 refusal · absolute 04Pair check→ no_pair 05License resolution→ invalid_signature 06Scope evaluation→ immutable_denial 07Extensions→ unknown ⇒ refuse signed allow
Seven-stage verification pipeline — each stage can terminate the request

Integration example.

A single server-to-server call before generation. No SDK required.

// Pre-generation verification — server-side
// Call this before generating any content depicting a subject

const response = await fetch('https://registry.prampta.com/v1/verify', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + PROVIDER_TOKEN,
  },
  body: JSON.stringify({
    provider_id:  'your-provider-id',
    licensee_id:  'licensee-account-id',
    subject_id:   'subject-id-or-null',
    prompt:        userPrompt,
    model:        'your-model-name',
    modality:     'image',
    intended_use: {
      channel: 'social',
      product: 'campaign-spring-2026',
    }
  })
});

const decision = await response.json();

// decision.allowed  — boolean
// decision.code     — PP_ALLOWED | PP_SUBJECT_OPTED_OUT | ...
// decision.obligations — required disclosures, labels
// decision.decision_id — unique, for audit trail

if (decision.allowed) {
  generateContent(userPrompt, decision);
} else {
  refuseGeneration(decision.code);
}

Unknown rules are enforced by refusal, never by skip. If the verifier doesn't understand a license term, it does not pass.