Accredible MCP by usefulapi
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Read Accredible credentials, groups, designs, analytics, skills; issue one credential as a draft.
| Author | io.usefulapi |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 439 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Accredible MCP by usefulapi": {
"url": "https://accredible.usefulapi.io/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (19)
accredible_get_issuerread-onlyThe Accredible issuer (organization) behind the API key: id, name, e-mail, remaining credential credits (certificate_left), language and URL. Good first call. GET /v1/issuer/details.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_search_credentialsread-onlySearch issued credentials (badges and certificates) with filters that combine with AND, newest first by default. Returns id, uuid, encoded_id, recipient name/e-mail, group, issued_on, expired_on, published state (approve), whether the recipient opened or engaged, and meta. Paging: size + offset (first 10 000 results) OR cursor: when the reply has next_cursor pass it as cursor for the next page (cursor and offset cannot be combined). POST /v2/credentials/search (a read-only search).
Parameters:
size— integer — Results per page, 1-100 (default 50).uuid— string — Credential UUID.cursor— string — The next_cursor of the previous reply. Not with offset.offset— integer — Records to skip (offset paging, max 9950). Not with cursor.sort_by— string — Sort field (default: the API's order).group_id— integer — Only credentials of this group (accredible_search_groups lists group ids).published— boolean — true = only published credentials, false = only unpublished drafts; omit for both.license_id— string — The custom credential id your organization set when issuing.sort_order— string — Sort direction (default desc when sort_by is set).issued_after— string — Issued on or after this date (YYYY-MM-DD).recipient_id— string — The recipient id your organization set when issuing.created_after— string — Created on or after this date (YYYY-MM-DD).expires_after— string — Expires on or after this date (YYYY-MM-DD).issued_before— string — Issued on or before this date (YYYY-MM-DD).updated_after— string — Updated on or after this date (YYYY-MM-DD).expires_before— string — Expires on or before this date (YYYY-MM-DD).recipient_name— string — Exact recipient name.recipient_email— string — Exact recipient e-mail address.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_get_credentialread-onlyOne credential in full: recipient, group, issue and expiry dates, published state, public URL, evidence items, references, custom attributes and skills. The id is the numeric credential id or the custom id your organization set. GET /v1/credentials/{id}.
Parameters:
id(required) — string — Credential id (numeric) or the custom credential id (license_id).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_get_credential_analyticsread-onlyThe analytics events of one credential (recipient views, shares, privacy changes, verification and so on) with timestamps. Read-only despite being a POST. POST /v1/credentials/analytics/{id}.
Parameters:
id(required) — string — Credential id (numeric) or the custom credential id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_list_analyticsread-onlyAccount-wide credential analytics events (views, shares, downloads and similar), optionally for a date range, group or department. Paged (default 100 per page). GET /v1/analytics.
Parameters:
page— integer — Page number, 1-based (default 1). Use meta.next_page from the previous reply.end_date— string — Only events before this date (YYYY-MM-DD).group_id— integer — Only events of credentials in this group.page_size— integer — Results per page (default 100).start_date— string — Only events after this date (YYYY-MM-DD).department_id— integer — Only events of credentials in this department.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_search_groupsread-onlySearch groups (an achievement such as a course or qualification that credentials belong to). Filters combine with AND; name and course_name match partially. Returns id, name, course name and description, design ids, language and dates. Paged: pass meta.next_page as page. POST /v1/issuer/groups/search (a read-only search).
Parameters:
ids— array — Only these group ids.name— string — Part of the group name.page— integer — Page number, 1-based (default 1). Use meta.next_page from the previous reply.meta_data— object — Key/value strings you attached to the object's meta_data when you created it; matches objects carrying these pairs.page_size— integer — Results per page, 1-100 (default 50).course_name— string — Part of the course name.department_id— integer — Only groups of this department (must be accessible to the key).updated_after— string — Only groups updated after this date (YYYY-MM-DD).collection_ids— array — Only groups linked to any of these collection UUIDs.updated_before— string — Only groups updated before this date (YYYY-MM-DD).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_get_groupread-onlyOne group in full: name, course name and description, learning outcomes, design ids, language, skills and dates. GET /v1/issuer/groups/{group_id}.
Parameters:
group_id(required) — integer — Group id (accredible_search_groups lists them).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_search_designsread-onlyList badge and certificate designs, optionally by kind or meta_data. POST /v1/designs/search (a read-only search).
Parameters:
kind— string — Design kind, for example badge or certificate.meta_data— object — Key/value strings you attached to the object's meta_data when you created it; matches objects carrying these pairs.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_get_designread-onlyOne badge or certificate design with its settings. GET /v1/designs/{design_id}.
Parameters:
design_id(required) — integer — Design id (accredible_search_designs or a group's design_id).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_search_departmentsread-onlyList departments (independent organization units with their own designs, groups and branding). An account-wide key sees all, a department key only its own. Paged: pass meta.next_page as page. POST /v1/departments/search (a read-only search).
Parameters:
page— integer — Page number, 1-based (default 1). Use meta.next_page from the previous reply.meta_data— object — Key/value strings you attached to the object's meta_data when you created it; matches objects carrying these pairs.page_size— integer — Results per page, 1-100 (default 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_get_departmentread-onlyOne department: name, description, URL, branding and meta_data. GET /v1/departments/{department_id}.
Parameters:
department_id(required) — integer — Department id (accredible_search_departments lists them).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_search_collectionsread-onlyList collections (sets of groups shown together). Filters: ids, name (substring), public. Paged: pass meta.next_page as page. POST /v1/collections/search (a read-only search).
Parameters:
ids— array — Only these collection ids (UUIDs).name— string — Part of the collection name.page— integer — Page number, 1-based (default 1). Use meta.next_page from the previous reply.public— boolean — true = only public collections, false = only non-public.sort_by— string — Sort field.page_size— integer — Results per page, 1-100 (default 50).sort_order— string — Sort direction (default asc).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_search_attribute_keysread-onlyList the custom attribute keys (placeholders such as a grade or date that credential designs and e-mails merge in); useful to know which custom_attributes a credential can carry. Paged: pass meta.next_page as page. POST /v1/attribute_keys/search (a read-only search).
Parameters:
kind— string — Attribute kind.name— string — Attribute key name.page— integer — Page number, 1-based (default 1). Use meta.next_page from the previous reply.page_size— integer — Results per page, 1-100 (default 50).department_id— integer — Only keys of this department.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_list_skill_frameworksread-onlyThe skills frameworks (O*NET, ESCO, NACE or your own) enabled for a department, each with its published versions. Needs a plan that includes skills frameworks (otherwise HTTP 403 plan_not_entitled). Paged, max 10 per page. GET /v1/skill_frameworks.
Parameters:
department_id(required) — integer — Department to list frameworks for (required, also for department keys).page— integer — Page number, 1-based (default 1). Use meta.next_page from the previous reply.page_size— integer — Results per page, 1-10 (default 5).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_search_skillsread-onlySearch the skills of one published skills-framework version by name or the publisher's identifier (partial, case-insensitive, at least 2 characters). Paged, max 50 per page. GET /v1/skill_frameworks/{id}/versions/{version_id}/skills.
Parameters:
framework_id(required) — integer — Skill framework id (accredible_list_skill_frameworks).version_id(required) — integer — Version id from the framework's versions array.query(required) — string — Text to search for (min 2 characters).page— integer — Page number, 1-based (default 1). Use meta.next_page from the previous reply.page_size— integer — Results per page, 1-50 (default 50).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_list_data_exportsread-onlyData exports of the departments the key can access: department, status (scheduled, processing, completed, errored) and download links of completed files. Exports are created in the Accredible Dashboard. GET /v1/data_exports.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_get_data_exportread-onlyOne data export: department, status and, once completed, the download links of its files. GET /v1/data_exports/{id}.
Parameters:
id(required) — integer — Data export id (accredible_list_data_exports).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_get_team_memberread-onlyOne team member of the account: name, e-mail and permissions per department. Which members are visible depends on the key (an account-wide key sees all, a department key its own department). GET /v1/team_members/{id}.
Parameters:
id(required) — integer — Team member id.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
accredible_issue_credentialdestructiveWRITE: creates ONE credential (badge or certificate) for ONE recipient in an existing group. By default it is created UNPUBLISHED (a draft: no e-mail is sent and no credit is used); publish it later in the Accredible Dashboard. With publish=true the credential is published immediately: Accredible then SENDS AN E-MAIL to the recipient (as configured in the group's e-mail settings) and uses one credential credit of the account; an account without credits keeps it unpublished. A sandbox-mode setting in the Dashboard overrides publish. Not idempotent: calling twice creates two credentials (set credential_id to your own unique id to be able to find it again). No evidence, references, bulk issuing, edits or deletes. POST /v1/credentials.
Parameters:
group_id(required) — integer — The group the credential belongs to (accredible_search_groups); it supplies the design and course texts.recipient_name(required) — string — The recipient's full name as printed on the credential.recipient_email(required) — string — The recipient's e-mail address (exactly one recipient).name— string — Credential/course name; required only when the group has no course name.private— boolean — Make the credential private: visible only to the recipient after signing in to credential.net.publish— boolean — Default false: create an unpublished draft (no e-mail). true: publish now, which e-mails the recipient and uses one credit.complete— boolean — Whether the achievement is complete (default true); false marks it in progress.issued_on— string — Issue date YYYY-MM-DD (default today).meta_data— object — Key/value strings you attached to the object's meta_data when you created it; matches objects carrying these pairs.expired_on— string — Expiry date YYYY-MM-DD (default none).description— string — Credential/course description; required only when the group has no course description.recipient_id— string — Your own id for the recipient (maps recipients to credentials across e-mail changes).credential_id— string — Your own unique id for this credential (license_id); Accredible assigns one if omitted.custom_attributes— object — Custom attribute values merged into the design, e.g. {"Location": "London"} (keys must exist: accredible_search_attribute_keys).
Hints: read-only no · destructive yes · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.