validate_keyLABSCO SUMMARY
Issuing is the call that cannot be taken back, and it is guarded.
Badges go out by email the moment they are issued, so a duplicate is visible to the recipient — the idempotency key is what stops a retried call from sending twice. Templates, issuing and verification all sit behind one credential, so scope it to the tenant you mean before connecting it.
What it is
A TypeScript server over the IssueBadge API for digital badges and certificates: templates, issuing to recipients, and verification.
What you get
- Create badge templates, issue them to recipients, and verify a badge's authenticity
- Automatic email delivery to the recipient, carrying a verification URL
- Custom fields and flexible metadata on a badge
- Idempotency protection, so a retried call does not issue a duplicate
- Multi-tenant isolation
- Two authentication paths: Laravel Sanctum or OAuth2
Requirements
Node 18 or newer, npm 8 or newer, and an IssueBadge account. Configuration goes in .env: the API base URL and an IssueBadge API key for the Sanctum path, or the OAuth endpoint and an OAuth token with the auth method switched to oauth2. Request timeout, retry count and retry delay are set in the same file.
Setup effort
Build from source — git clone https://github.com/issuebadge/mcp-server.git
USE CASES
Setting up a credential for a course or programme
Create the template once, with the custom fields the certificate needs, and reuse it for every cohort.
Sending certificates to a group who just finished
Issue against the template; recipients get the email and the verification URL without a separate mailing step.
Checking a badge someone put on their profile
Verify it against IssueBadge rather than trusting the image.
Re-running a batch that failed halfway
The idempotency key means the second attempt completes the batch instead of double-issuing the first half.
Running badges for more than one organisation
Tenant isolation keeps each organisation's templates and recipients separate behind its own credential.
4 tools
Listed in project docs. Your client may show a different list.
get_all_badgescreate_badgeissue_badgeBEFORE YOU INSTALL
What to know first
Tools you get
4 tools named in the project's documentation.
Requires
- Node.js 18+
- ISSUEBADGE_API_KEY in your environment
- ISSUEBADGE_OAUTH_TOKEN in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/issuebadge/mcp-server.git
cd mcp-server
npm install
cp .env.example .env
npm run buildMCP Clients
Claude Desktop
{
"mcpServers": {
"issuebadge": {
"command": "node",
"args": [
"<YOUR_PATH_TO_MCP_SERVER>/dist/index.js"
],
"env": {
"ISSUEBADGE_BASE_URL": "https://app.issuebadge.com/api/v1",
"ISSUEBADGE_API_KEY": "",
"AUTH_METHOD": "sanctum"
}
}
}
}The configuration on this page does not set ISSUEBADGE_OAUTH_TOKEN; the project's instructions put it in a .env file. To supply ISSUEBADGE_OAUTH_TOKEN without depending on where the server looks for that file, use the block's "env" section.