Accredible MCP by usefulapi
Read Accredible credentials, groups, designs, analytics, skills; issue one credential as a draft.
使うべきか
品質と安全性
検出事項(6)
- HIGH
- MEDIUMaccredible_search_attribute_keys 内
- LOWaccredible_get_credential_analytics 内
- LOWaccredible_search_attribute_keys 内
- LOWaccredible_list_skill_frameworks 内
- INFOaccredible_search_attribute_keys 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"accredible": {
"url": "https://accredible.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://accredible.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(19)
🟢accredible_get_issuer
The 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.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_search_credentials(group_id, recipient_email, recipient_name, recipient_id, license_id, ...)
Search 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).
入力スキーマ
{
"type": "object",
"properties": {
"group_id": {
"description": "Only credentials of this group (accredible_search_groups lists group ids).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"recipient_email": {
"description": "Exact recipient e-mail address.",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"recipient_name": {
"description": "Exact recipient name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"recipient_id": {
"description": "The recipient id your organization set when issuing.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"license_id": {
"description": "The custom credential id your organization set when issuing.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"uuid": {
"description": "Credential UUID.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"published": {
"description": "true = only published credentials, false = only unpublished drafts; omit for both.",
"type": "boolean"
},
"issued_after": {
"description": "Issued on or after this date (YYYY-MM-DD).",
"type": "string"
},
"issued_before": {
"description": "Issued on or before this date (YYYY-MM-DD).",
"type": "string"
},
"expires_after": {
"description": "Expires on or after this date (YYYY-MM-DD).",
"type": "string"
},
"expires_before": {
"description": "Expires on or before this date (YYYY-MM-DD).",
"type": "string"
},
"updated_after": {
"description": "Updated on or after this date (YYYY-MM-DD).",
"type": "string"
},
"created_after": {
"description": "Created on or after this date (YYYY-MM-DD).",
"type": "string"
},
"sort_by": {
"description": "Sort field (default: the API's order).",
"type": "string",
"enum": [
"id",
"recipient_name",
"group.name",
"issued_on",
"expired_on"
]
},
"sort_order": {
"description": "Sort direction (default desc when sort_by is set).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"size": {
"description": "Results per page, 1-100 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"description": "Records to skip (offset paging, max 9950). Not with cursor.",
"type": "integer",
"minimum": 0,
"maximum": 9950
},
"cursor": {
"description": "The next_cursor of the previous reply. Not with offset.",
"type": "string",
"minLength": 1,
"maxLength": 2048
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_get_credential(id)
One 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}.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Credential id (numeric) or the custom credential id (license_id)."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_get_credential_analytics(id)
The 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}.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Credential id (numeric) or the custom credential id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_list_analytics(start_date, end_date, group_id, department_id, page, ...)
Account-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.
入力スキーマ
{
"type": "object",
"properties": {
"start_date": {
"description": "Only events after this date (YYYY-MM-DD).",
"type": "string"
},
"end_date": {
"description": "Only events before this date (YYYY-MM-DD).",
"type": "string"
},
"group_id": {
"description": "Only events of credentials in this group.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"department_id": {
"description": "Only events of credentials in this department.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, 1-based (default 1). Use meta.next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page (default 100).",
"type": "integer",
"minimum": 1,
"maximum": 500
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_search_groups(ids, name, course_name, department_id, collection_ids, ...)
Search 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).
入力スキーマ
{
"type": "object",
"properties": {
"ids": {
"description": "Only these group ids.",
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"name": {
"description": "Part of the group name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"course_name": {
"description": "Part of the course name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"department_id": {
"description": "Only groups of this department (must be accessible to the key).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"collection_ids": {
"description": "Only groups linked to any of these collection UUIDs.",
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"meta_data": {
"description": "Key/value strings you attached to the object's meta_data when you created it; matches objects carrying these pairs.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"updated_after": {
"description": "Only groups updated after this date (YYYY-MM-DD).",
"type": "string"
},
"updated_before": {
"description": "Only groups updated before this date (YYYY-MM-DD).",
"type": "string"
},
"page": {
"description": "Page number, 1-based (default 1). Use meta.next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_get_group(group_id)
One group in full: name, course name and description, learning outcomes, design ids, language, skills and dates. GET /v1/issuer/groups/{group_id}.
入力スキーマ
{
"type": "object",
"properties": {
"group_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Group id (accredible_search_groups lists them)."
}
},
"required": [
"group_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_search_designs(kind, meta_data)
List badge and certificate designs, optionally by kind or meta_data. POST /v1/designs/search (a read-only search).
入力スキーマ
{
"type": "object",
"properties": {
"kind": {
"description": "Design kind, for example badge or certificate.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"meta_data": {
"description": "Key/value strings you attached to the object's meta_data when you created it; matches objects carrying these pairs.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_get_design(design_id)
One badge or certificate design with its settings. GET /v1/designs/{design_id}.
入力スキーマ
{
"type": "object",
"properties": {
"design_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Design id (accredible_search_designs or a group's design_id)."
}
},
"required": [
"design_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_search_departments(meta_data, page, page_size)
List 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).
入力スキーマ
{
"type": "object",
"properties": {
"meta_data": {
"description": "Key/value strings you attached to the object's meta_data when you created it; matches objects carrying these pairs.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"page": {
"description": "Page number, 1-based (default 1). Use meta.next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_get_department(department_id)
One department: name, description, URL, branding and meta_data. GET /v1/departments/{department_id}.
入力スキーマ
{
"type": "object",
"properties": {
"department_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Department id (accredible_search_departments lists them)."
}
},
"required": [
"department_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_search_collections(ids, name, public, sort_by, sort_order, ...)
List 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).
入力スキーマ
{
"type": "object",
"properties": {
"ids": {
"description": "Only these collection ids (UUIDs).",
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"name": {
"description": "Part of the collection name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"public": {
"description": "true = only public collections, false = only non-public.",
"type": "boolean"
},
"sort_by": {
"description": "Sort field.",
"type": "string",
"enum": [
"name",
"groups_count",
"public"
]
},
"sort_order": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"page": {
"description": "Page number, 1-based (default 1). Use meta.next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_search_attribute_keys(name, kind, department_id, page, page_size)
List 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).
入力スキーマ
{
"type": "object",
"properties": {
"name": {
"description": "Attribute key name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"kind": {
"description": "Attribute kind.",
"type": "string",
"enum": [
"text",
"date",
"email",
"image"
]
},
"department_id": {
"description": "Only keys of this department.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, 1-based (default 1). Use meta.next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_list_skill_frameworks(department_id, page, page_size)
The 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.
入力スキーマ
{
"type": "object",
"properties": {
"department_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Department to list frameworks for (required, also for department keys)."
},
"page": {
"description": "Page number, 1-based (default 1). Use meta.next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-10 (default 5).",
"type": "integer",
"minimum": 1,
"maximum": 10
}
},
"required": [
"department_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_search_skills(framework_id, version_id, query, page, page_size)
Search 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.
入力スキーマ
{
"type": "object",
"properties": {
"framework_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Skill framework id (accredible_list_skill_frameworks)."
},
"version_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Version id from the framework's versions array."
},
"query": {
"type": "string",
"minLength": 2,
"maxLength": 255,
"description": "Text to search for (min 2 characters)."
},
"page": {
"description": "Page number, 1-based (default 1). Use meta.next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-50 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"framework_id",
"version_id",
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_list_data_exports
Data 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.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_get_data_export(id)
One data export: department, status and, once completed, the download links of its files. GET /v1/data_exports/{id}.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Data export id (accredible_list_data_exports)."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢accredible_get_team_member(id)
One 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}.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Team member id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴accredible_issue_credential(group_id, recipient_name, recipient_email, publish, recipient_id, ...)
WRITE: 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.
入力スキーマ
{
"type": "object",
"properties": {
"group_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The group the credential belongs to (accredible_search_groups); it supplies the design and course texts."
},
"recipient_name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "The recipient's full name as printed on the credential."
},
"recipient_email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The recipient's e-mail address (exactly one recipient)."
},
"publish": {
"description": "Default false: create an unpublished draft (no e-mail). true: publish now, which e-mails the recipient and uses one credit.",
"type": "boolean"
},
"recipient_id": {
"description": "Your own id for the recipient (maps recipients to credentials across e-mail changes).",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"credential_id": {
"description": "Your own unique id for this credential (license_id); Accredible assigns one if omitted.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"name": {
"description": "Credential/course name; required only when the group has no course name.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"description": {
"description": "Credential/course description; required only when the group has no course description.",
"type": "string",
"minLength": 1,
"maxLength": 5000
},
"issued_on": {
"description": "Issue date YYYY-MM-DD (default today).",
"type": "string"
},
"expired_on": {
"description": "Expiry date YYYY-MM-DD (default none).",
"type": "string"
},
"complete": {
"description": "Whether the achievement is complete (default true); false marks it in progress.",
"type": "boolean"
},
"private": {
"description": "Make the credential private: visible only to the recipient after signing in to credential.net.",
"type": "boolean"
},
"custom_attributes": {
"description": "Custom attribute values merged into the design, e.g. {\"Location\": \"London\"} (keys must exist: accredible_search_attribute_keys).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"maxLength": 1000
}
},
"meta_data": {
"description": "Key/value strings you attached to the object's meta_data when you created it; matches objects carrying these pairs.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"group_id",
"recipient_name",
"recipient_email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス