Review the Open Badges 3.0 specification at https://www.imsglobal.org/spec/ob/v3p0 and identify the four certification service groups: BadgeConnect, Issuer, Displayer, and Host
Register your platform with a certified OB 3.0 host to receive a client_id and client_secret; request scopes including https://purl.imsglobal.org/spec/ob/v3p0/scope/credential.readonly and .upsert
Exchange credentials at the host's OAuth 2.0 token endpoint using grant_type=client_credentials to obtain a bearer token
Call POST /ims/ob/v3p0/credentials with an AchievementCredential JSON-LD body containing issuer DID, achievement.type=Achievement, and proof section using DataIntegrityProof
Verify the issued credential by calling GET /ims/ob/v3p0/credentials/{credentialId} and inspecting the credentialStatus field for active status
Handle token expiry by re-requesting tokens before each session; tokens are short-lived per OAuth best practices
Known gotchas
OB 3.0 mandates W3C VC Data Model 2.0 format—OB 2.0 assertions (plain JSON with @context from openbadges.org) are not interchangeable and will be rejected by OB 3.0 validators
The proof must use a registered cryptosuite (e.g., eddsa-rdfc-2022 or ecdsa-rdfc-2019); omitting or using an unsupported suite causes verification failure
Scopes are hierarchical: requesting only .readonly prevents badge issuance; ensure .upsert scope is explicitly requested at registration
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp