get_credly_badges
Retrieve Credly badges and certifications to automatically populate your CV or resume with verified credentials.
Instructions
Get Credly badges and certifications
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of badges to retrieve |
Implementation Reference
- The main handler function implementing get_credly_badges tool. Fetches badges from Credly API using CREDLY_USER_ID env var, parses JSON response, extracts badge name, issuer, issued date, expiry date, formats them, sorts by issued date descending, returns markdown-formatted list.async def get_credly_badges(limit: int) -> list[TextContent]: """Get Credly badges.""" if not CREDLY_USER_ID: return [TextContent( type="text", text="Credly user ID not configured. Set CREDLY_USER_ID" )] try: async with httpx.AsyncClient() as client: response = await client.get( f"https://www.credly.com/users/{CREDLY_USER_ID}/badges.json", params={"page": 1, "per_page": limit}, headers={"Accept": "application/json"}, timeout=30.0 ) response.raise_for_status() data = response.json() # Format badges badges = [] for badge in data.get("data", []): name = badge["badge_template"]["name"] # Extract issuer issuer = "Unknown Issuer" if badge.get("badge_template", {}).get("issuer", {}).get("entities"): entities = badge["badge_template"]["issuer"]["entities"] if entities and entities[0].get("entity", {}).get("name"): issuer = entities[0]["entity"]["name"] # Format date issued_at = badge.get("issued_at", "") if issued_at: date_obj = datetime.fromisoformat(issued_at.replace('Z', '+00:00')) date_str = date_obj.strftime("%b %Y") else: date_str = "Unknown" # Check expiry expires_at = badge.get("expires_at") expiry_str = "" if expires_at: exp_date = datetime.fromisoformat(expires_at.replace('Z', '+00:00')) expiry_str = f" (Expires: {exp_date.strftime('%b %Y')})" badges.append(f"{name} - {issuer} ({date_str}){expiry_str}") # Sort by date (newest first) badges.sort(reverse=True) output = "\n".join(badges) if badges else "No badges found" return [TextContent( type="text", text=f"Credly Badges ({len(badges)}):\n\n{output}" )] except Exception as e: return [TextContent(type="text", text=f"Credly API Error: {str(e)}")]
- src/cv_resume_builder_mcp/server.py:238-251 (registration)Registration of the get_credly_badges tool in the list_tools() handler, including name, description, and input schema defining optional 'limit' parameter (number, default 50).Tool( name="get_credly_badges", description="Get Credly badges and certifications", inputSchema={ "type": "object", "properties": { "limit": { "type": "number", "description": "Maximum number of badges to retrieve", "default": 50 } } } ),
- Input schema for get_credly_badges tool: object with optional 'limit' property (number, default 50).inputSchema={ "type": "object", "properties": { "limit": { "type": "number", "description": "Maximum number of badges to retrieve", "default": 50 } } }
- Configuration for Credly integration: CREDLY_USER_ID environment variable used by the handler to fetch user's badges.# Credly Configuration CREDLY_USER_ID = os.getenv("CREDLY_USER_ID")
- Usage of get_credly_badges in generate_enhanced_cv tool to include badges in CV enhancement report.credly_result = await get_credly_badges(50) data_sections.append(f"\n{credly_result[0].text}")