About SchemaPin 🧷
SchemaPin is a schema-signing and verification toolkit for AI agent and MCP tool developers. It uses ECDSA signatures, key discovery and pinning, revocation, and offline trust bundles to help detect tampering.
Key features
- 01ECDSA schema signatures
- 02Public-key discovery
- 03TOFU key pinning
- 04Key revocation and trust bundles
- 05AgentSkills folder signing
- 06Python, JavaScript, Go, and Rust support
Use cases
- 01Verify tool schemas before agent use
- 02Sign and distribute skill folders
- 03Check signatures in offline environments
MCP support
SchemaPin provides cryptographic signing and verification for tool schemas used by AI agents and MCP servers. It helps MCP clients detect schema tampering and substitution.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMESchemaPin
Cryptographic tool schema verification for AI agents and MCP servers. Prevent "MCP Rug Pull" attacks with ECDSA signatures, DNS-anchored trust, and TOFU key pinning.
What It Does
SchemaPin lets tool developers sign their schemas and skill folders with ECDSA P-256 keys, and lets AI agents verify that schemas haven't been tampered with. Public keys are discoverable via .well-known/schemapin.json (RFC 8615), and Trust-On-First-Use pinning protects against future key substitution.
- ECDSA P-256 + SHA-256 cryptographic signatures
.well-knowndiscovery for public keys (RFC 8615)- TOFU key pinning to prevent key substitution attacks
- Key revocation with standalone signed revocation documents and structured reasons
- Trust bundles for offline and air-gapped verification
- Pluggable resolvers —
.well-known, local file, trust bundle, or chain - Skill folder signing for AgentSkills (SKILL.md + file manifests)
- Cross-language — Python, JavaScript, Go, and Rust implementations
v1.4.0-alpha.2 (all four languages): three additive optional features — signature expiration (
expires_at) with fail-closed verification (allow_expiredopt-out), DNS TXT cross-verification at_schemapin.{domain}for second-channel trust, and schema version binding (schema_version+previous_hash) for opt-in lineage chain enforcement that defends against rug-pull substitutions. v1.3 verifiers ignore the new fields; v1.4 verifiers handle both. The remaining v1.4 items (canonicalization id, A2A context, A2A trust bundles, scan-aware sigs, cross-agent schema cache) ship in subsequent alphas before stable v1.4.0.
Quick Start
from schemapin.crypto import KeyManager
from schemapin.utils import SchemaSigningWorkflow, SchemaVerificationWorkflow
# Sign a schema
private_key, public_key = KeyManager.generate_keypair()
signer = SchemaSigningWorkflow(KeyManager.export_private_key_pem(private_key))
signature = signer.sign_schema({"name": "my_tool", "parameters": {...}})
# Verify a schema
verifier = SchemaVerificationWorkflow()
result = verifier.verify_schema(schema, signature, "example.com/my_tool", "example.com")
Installation
Python
The upcoming security release requires Python 3.10 or later.
pip install schemapin
JavaScript
npm install schemapin
Go
go install github.com/ThirdKeyAi/schemapin/go/cmd/...@latest
Rust
The upcoming security release requires Rust 1.89 or later.
[dependencies]
schemapin = "1.3.0"
# v1.4.0-alpha.2 is also published — opt in for signature expiration,
# DNS TXT cross-verification, and schema version binding:
# schemapin = { version = "1.4.0-alpha.2", features = ["dns"] }
Documentation
| Topic | Link |
|---|---|
| Getting Started | docs.schemapin.org/getting-started |
| API Reference | docs.schemapin.org/api-reference |
| Skill Signing | docs.schemapin.org/skill-signing |
| Trust Bundles | docs.schemapin.org/trust-bundles |
| Revocation | docs.schemapin.org/revocation |
| Signature Expiration (v1.4-alpha, all 4 langs) | docs.schemapin.org/signature-expiration |
| DNS TXT Cross-Verification (v1.4-alpha, all 4 langs) | docs.schemapin.org/dns-txt |
| Schema Version Binding (v1.4-alpha, all 4 langs) | docs.schemapin.org/schema-version-binding |
| Deployment | docs.schemapin.org/deployment |
| Troubleshooting | docs.schemapin.org/troubleshooting |
| Technical Specification | TECHNICAL_SPECIFICATION.md |
Project Structure
python/ # Python SDK (PyPI: schemapin)
javascript/ # JavaScript SDK (npm: schemapin)
go/ # Go SDK
rust/ # Rust SDK (crates.io: schemapin)
server/ # Production .well-known endpoint server
License
MIT — Jascha Wanger / ThirdKey.ai
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.