Open standard for portable, peer-verified professional identity.
OpenWork ID defines an open, JSON-LD-based schema for professional identity that is:
- Portable — Export your complete professional identity as structured data. Zero lock-in.
- Peer-verified — Real people publicly vouch for your work, staking their own reputation.
- AI-agent ready — Native MCP (Model Context Protocol) support. Agents read verified data without scraping.
- Free forever — No paywalls, no premium tiers. Professionals pay nothing.
The standard does not own identity. It defines how identity travels between systems.
Website: openworkid.org Reference implementation: upstand.work
The schema defines five interdependent concepts:
A structured narrative of professional work — not a CV line item. Each record captures context, challenge, contribution, result, and learning.
Public confirmation by a named individual. Verifiers stake their professional identity — name, role, and company are visible to everyone.
{
"@type": "PeerVerification",
"verifier": {
"name": "Thomas Weber",
"role": "CTO",
"organisation": "Acme GmbH",
"emailDomain": "acme.de",
"emailDomainType": "corporate"
},
"statement": "Maria led this migration with remarkable clarity. The dual-write approach was her idea and it worked flawlessly.",
"statementType": "text",
"mutualFlag": false,
"withdrawnAt": null
}Evidence that a real person controls the profile — not an AI agent claiming credentials.
| Method | Strength | Description |
|---|---|---|
email-magic-link |
Minimum | Email ownership verified |
peer-verification-chain |
Strong | Multiple active peer verifications |
document-verified |
Strongest | Government ID verification (future) |
Complete export envelope for cross-platform transfer. Includes all experience records, verifications, extensions, and export metadata.
Modular, profession-specific field sets. Each extension has a canonical URI, is independently versioned, and attaches to any ProfessionalIdentity. The core schema stays universal — extensions make a Psychotherapist's profile structurally different from a Software Engineer's.
11 extensions across three categories, all at v1.0.0:
| Extension | Key Fields |
|---|---|
| Software Engineer | languages, frameworks, cloud, databases, seniority, AI tools |
| Data Scientist | ML frameworks, specialisations, cloud ML, publications |
| Product Manager | product types, methodologies, team size, tech affinity |
| UX Designer | disciplines, tools, project types, portfolio |
| Extension | Key Fields |
|---|---|
| Finance Controller | specialisations (FP&A, Treasury, M&A...), ERP systems, certifications |
| Management Consultant | strategy, transformation, engagement length, methodologies |
| Creative Director | disciplines, industries, project types, portfolio |
| Extension | Key Fields |
|---|---|
| Psychotherapist | approbation, therapeutic approach, setting, Kassenzulassung |
| Physician | specialty, subspecialty, setting, certifications |
| Lawyer | legal areas, bar admission, Fachanwaltstitel |
| Architect | Leistungsphasen (HOAI), building types, BIM, chamber membership |
Regulated extensions include a mandatory
regulatoryNoticefield. Implementing platforms must display this notice during profile editing.
Native Model Context Protocol support. AI agents can read verified professional data without scraping.
Server: https://mcp.upstand.work/sse (MCP 2024-11-05)
REST fallback: https://api.upstand.work/v1
| Tool | Auth | Status | Description |
|---|---|---|---|
get_profile |
Public | Available | Full professional identity document |
get_verifications |
Public | Available | Peer verifications for a profile |
get_suggestions |
User | Available | AI-generated profile improvement suggestions |
get_market_benchmark |
User | In development | Anonymised rate benchmarks |
add_experience |
User | In development | Create draft experience record |
request_verification |
User | In development | Send verification request |
search_profiles |
Client | Planned | Search verified profiles with filters |
See MCP Server Documentation for full tool signatures, auth levels, and rate limits.
Current version: v0.1.0 (April 2026)
The standard follows semantic versioning:
- MAJOR — Breaking changes (field removals, type changes). Existing documents may fail validation.
- MINOR — Additive changes (new optional fields, enum values, extensions). Existing documents remain valid.
- PATCH — Documentation and example fixes. Zero schema changes.
| Version | Milestone | Key Changes |
|---|---|---|
| v0.1.0 | M1 | Initial release. Core schema, 11 extensions, 3 MCP tools |
| v0.2.0 | M2 | M2 MCP tools, VerifiedEmployer schema, ContactRequest, RFC process opens |
| v1.0.0 | M3 | Stable release. search_profiles, VerifierReputation, Foundation governance |
- Professionals pay nothing. Ever. No paywalls, no premium tiers.
- Your data is yours. Always. Export as JSON anytime. Delete within 30 days.
- The standard belongs to no one. MIT-licensed. Governance transfers to a neutral foundation when adoption reaches critical mass.
All schema changes are discussed and decided publicly on GitHub:
- Propose — Open a discussion in Ideas describing the problem and your proposed change
- Discuss — Community feedback and iteration in the discussion thread
- Submit — Once there's rough consensus, submit a PR using the RFC template
- Review — Comment period: 7 days (non-breaking) or 30 days (breaking)
- Merge — Changelog entry written before merge
Releases and breaking changes are announced in Announcements. Questions about the spec belong in Q&A.
openworkid.org/
├── schema/
│ └── v1/
│ ├── professional-identity.jsonld # Core schema
│ ├── context.jsonld # JSON-LD @context
│ └── extensions/ # 11 profession-specific extensions
│ ├── software-engineer.json
│ ├── data-scientist.json
│ ├── product-manager.json
│ ├── ux-designer.json
│ ├── finance-controller.json
│ ├── management-consultant.json
│ ├── creative-director.json
│ ├── psychotherapist.json
│ ├── physician.json
│ ├── lawyer.json
│ └── architect.json
├── docs/
│ └── mcp-server.md # MCP server specification
├── rfcs/
│ └── TEMPLATE.md # RFC template for schema changes
├── CHANGELOG.md
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
└── LICENSE
# Using any MCP-compatible client
curl -X POST https://mcp.upstand.work/sse \
-H "Content-Type: application/json" \
-d '{"method": "tools/call", "params": {"name": "get_profile", "arguments": {"username": "maria"}}}'curl https://api.upstand.work/v1/profile/mariacurl https://api.upstand.work/v1/export/maria \
-H "Accept: application/ld+json"See CONTRIBUTING.md for how to propose changes, submit extensions, and participate in the RFC process.
MIT. See LICENSE.
Built and maintained by entwicklerherz. Reference implementation at upstand.work.
{ "@type": "ExperienceRecord", "id": "https://upstand.work/maria/exp/abc123", "organisation": "Acme GmbH", "role": "Senior Backend Engineer", "startDate": "2022-03", "endDate": "2024-01", "context": "Legacy payment system processing 2M transactions/month...", "challenge": "Migration to event-driven architecture without downtime...", "contribution": "I designed the dual-write strategy and led a team of 4...", "result": "Zero-downtime migration completed in 8 weeks, processing latency reduced by 62%.", "learning": "Learned that incremental rollouts with feature flags reduce risk more than big-bang releases." }