# Tools · Certificates

> MCP tools for certificates: listing, creating, duplicating and editing templates (from the platform default or with the brand's art, with the preview in the conversation), activating, who issues in the space, issuing to people, groups and tags, resending the e-mail, retrying what failed, revoking, reissuing and deleting, and your own certificates.

Everything the [Certificates](/espacos/certificados) space does, from the conversation: building the template (with the preview as an image, so you can check it first), activating it, issuing to a whole class and looking after what has already been issued. Revoking and deleting ask for your confirmation. Issuing runs on the first call, so the assistant first does a dry run (`dry_run`) that says how many people receive it and who is left out.

Each tool carries a badge: <span class="tool-kind tool-kind-read">Read-only</span> changes nothing, <span class="tool-kind tool-kind-write">Changes</span> creates or changes something right away, and <span class="tool-kind tool-kind-confirm">Asks to confirm</span> only acts after your yes to a summary. See [Money and confirmation](/mcp/dinheiro-e-confirmacao).

## In short

| Tool | What it does | Minimum role | Type |
|---|---|---|---|
| [`list_certificate_templates`](#list-certificate-templates) | A Certificates space's templates | Moderator or admin | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_certificate_template`](#get-certificate-template) | One template, with the preview as an image | Moderator or admin | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_certificate_template`](#create-certificate-template) | Creates a template, from the platform default or with the brand's art | Moderator or admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_certificate_template`](#update-certificate-template) | Changes texts, signers, boxes and the artwork | Moderator or admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`activate_certificate_template`](#activate-certificate-template) | Activates or archives a template | Moderator or admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`issue_certificate`](#issue-certificate) | Issues to people, groups and tags, after a dry run | Moderator or admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`list_issued_certificates`](#list-issued-certificates) | The issued ones, with status and search | Moderator or admin | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`revoke_certificate`](#revoke-certificate) | Revokes a certificate | Admin | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`reissue_certificate`](#reissue-certificate) | Issues it again with the current name | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_certificate`](#delete-certificate) | Deletes a revoked or failed one | Admin | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`duplicate_certificate_template`](#duplicate-certificate-template) | Copies a template as a new draft | Moderator or admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_certificate_space_settings`](#update-certificate-space-settings) | Who issues in the space: the team or only admins | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`resend_certificate_email`](#resend-certificate-email) | Sends the certificate e-mail again | Moderator or admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`retry_certificate`](#retry-certificate) | Retries a certificate that failed | Moderator or admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`list_my_certificates`](#list-my-certificates) | Your certificates, with code and links | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`set_certificate_indexing`](#set-certificate-indexing) | Shows or hides one of your certificates in search engines | Any | <span class="tool-kind tool-kind-write">Changes</span> |

## `list_certificate_templates`

<span class="tool-kind tool-kind-read">Read-only</span>

**List certificate templates.** The templates of a Certificates space, with name, slug, type and status. *Role: whoever manages templates in the space (moderator or admin, per **Who issues**).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | No | The Certificates space. Without it, the community's only one |
| `status` | `DRAFT`, `ACTIVE`, `ARCHIVED` | No | Draft, active or archived |

**Returns:** the templates, with id, name, slug, type (`PLATFORM`, the platform default, or `IMAGE`, your own artwork) and status. Only active templates can issue.

**Ask like this:** *"Which certificate templates are active?"*

## `get_certificate_template`

<span class="tool-kind tool-kind-read">Read-only</span>

**View certificate template.** A template with its texts, signers and boxes, and **the preview as an image**, which shows up in the conversation. *Role: whoever manages templates.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `template` | id or slug | Yes | The template |
| `space` | id or link | No | The Certificates space |

**Returns:** the template and the preview image, with a test name.

**Ask like this:** *"Show me how the Course completion template looks."*

## `create_certificate_template`

<span class="tool-kind tool-kind-write">Changes</span>

**Create certificate template.** Creates a template **as a draft** and returns the preview as an image, in the conversation, for you to check. *Role: whoever manages templates in the space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `name` | text | Yes | The template's internal name |
| `title` | text, up to 255 | Yes | The printed title, e.g. *Certificate of completion* |
| `type` | `PLATFORM`, `IMAGE` | No | Default: `PLATFORM`, Memberfy's design with the community's logo and colors. `IMAGE` uses your brand's artwork |
| `description` | text, up to 5,000 | No | The text, with `{nome}`, `{assunto}` and `{cargaHoraria}`. A passage in square brackets disappears when its variable is empty: *"concluiu[ {assunto}], com carga de {cargaHoraria} horas"* |
| `workload_hours` | number | No | |
| `slug` | text | No | The template's short address |
| `language`, `timezone` | text | No | E.g. `pt-BR`, `America/Sao_Paulo`. Default: the community's |
| `signers` | list, up to 2 | No | Each with `name`, `role` and the signature as `signature_url` (a PNG with a transparent background) or `signature_base64` |
| `image_url` or `image_base64` | link or file | For `IMAGE` | The artwork, PNG or JPEG, at least 2,000 px wide |
| `layout` | list of boxes | No | `IMAGE` only: where each field goes (`recipientName`, `issuedAt`, `qr`, `title`, `description`, `workload`, `subjectTitle`, `code`, `signer1`, `signer2`), in % of the artwork, with font, size, color and alignment. Without it, the **default boxes** apply: the name in the center, the date at the bottom left and the QR code at the bottom right |
| `font` | `inter`, `montserrat`, `lora`, `playfair-display`, `eb-garamond`, `great-vibes`, `noto-sans` | No | The name's font in the default boxes |
| `text_color` | hex color | No | The text color in the default boxes |

**Returns:** the template, as a draft, and the preview image.

**Ask like this:** *"Create a certificate template with our brand's artwork: https://…/art.png. Title Certificate of completion."*

**Notes:** to issue, activate it with `activate_certificate_template`. See the recipe [Create a template with the brand's art](/mcp/receitas#12-create-a-template-with-the-brand-s-art) and [Certificates](/espacos/certificados).

## `update_certificate_template`

<span class="tool-kind tool-kind-write">Changes</span>

**Edit certificate template.** Changes texts, workload, signers, layout boxes, language, time zone and the artwork. Returns the new preview. *Role: whoever manages templates.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `template` | id or slug | Yes | The template |
| The rest | | No | The same as `create_certificate_template`, except `type`; only what you send changes |

**Returns:** the template and the preview image.

**Ask like this:** *"Move the name up a little and make the date gray."*

**Notes:** if the template has already issued certificates, its version goes up, and the certificates already issued stay as they came out.

## `activate_certificate_template`

<span class="tool-kind tool-kind-write">Changes</span>

**Activate or archive template.** Activates a template (only active ones issue) or archives it. *Role: whoever manages templates.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `template` | id or slug | Yes | The template |
| `space` | id or link | No | |
| `action` | `activate`, `archive` | No | Default: `activate` |

**Ask like this:** *"Go ahead and activate the template."*

## `issue_certificate`

<span class="tool-kind tool-kind-write">Changes</span>

**Issue certificates.** Issues certificates from an active template to people, groups and tags, with the subject and the workload. *Role: whoever issues in the space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `template` | id or slug | Yes | An active template |
| `people` | list of profile ids, up to 1,000 | No | From `list_members` |
| `groups` | list of ids, up to 100 | No | From `list_groups` |
| `tags` | list of names, up to 100 | No | |
| `subject` | text | No | What was completed, e.g. *Excel from Scratch* (the `{assunto}` in the text) |
| `workload_hours` | number | No | |
| `send_email` | yes or no | No | Default: yes |
| `issue_anyway` | yes or no | No | Also issues to people who already hold a valid certificate from this template. Default: no |
| `dry_run` | yes or no | No | Only the **dry run**: says who receives one and who is left out, without issuing anything. Default: no |
| `space` | id or link | No | |

**Returns:** with `dry_run: true`, the **dry run**: how many people receive it, who is skipped and why (for example, people who already hold a valid one). Nothing is issued. Without `dry_run`, the issuing.

**Ask like this:** *"Issue the completion certificate to the March class group, subject Excel from Scratch, 40 hours."*

**Notes:** each person receives an email, which is why the assistant runs the dry run first, shows who receives one and who is left out, and only issues after your ok. Someone in more than one group or tag gets a single certificate. See the recipe [Issue certificates to the class](/mcp/receitas#11-issue-certificates-to-the-class).

## `list_issued_certificates`

<span class="tool-kind tool-kind-read">Read-only</span>

**List issued certificates.** The certificates of a space, filtered by template and status, with search by name or code. *Role: whoever issues in the space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | No | |
| `template` | id or slug | No | |
| `status` | `PENDING`, `ISSUED`, `FAILED`, `REVOKED` | No | Generating, issued, failed, revoked |
| `search` | text | No | Name or code |
| `page`, `limit` | number | No | Pagination |

**Ask like this:** *"Did any certificate for the March class fail?"*

## `revoke_certificate`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Revoke certificate.** Revokes a certificate, with an internal reason. The public verification page then says it was revoked. *Minimum role: admin.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `certificate` | id or link | Yes | |
| `reason` | text | Yes | Internal; nobody outside sees it |

**Ask like this:** *"Revoke certificate K7Q3-9XWD-2MFA, it was issued by mistake."*

## `reissue_certificate`

<span class="tool-kind tool-kind-write">Changes</span>

**Reissue certificate.** Issues it again with the person's current name. The old one is revoked and linked to the new one. *Minimum role: admin.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `certificate` | id or link | Yes | |
| `send_email` | yes or no | No | Default: yes |

**Ask like this:** *"Ana fixed her name on her profile; reissue her certificate."*

## `delete_certificate`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Delete certificate.** Deletes a revoked or failed certificate. A valid certificate has to be revoked first. *Minimum role: admin.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `certificate` | id or link | Yes | |

**Ask like this:** *"Delete the certificates that failed in yesterday's issuing."*

## `duplicate_certificate_template`

<span class="tool-kind tool-kind-write">Changes</span>

**Duplicate certificate template.** Copies a template as a new draft, so you can adjust it without touching the original. *Role: whoever issues in the space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `template_id` | id | Yes | From `list_certificate_templates` |

**Ask like this:** *"Duplicate the Certificate of completion so I can make the participation version."*

## `update_certificate_space_settings`

<span class="tool-kind tool-kind-write">Changes</span>

**Change who issues certificates.** Sets who issues in a Certificates space: the team (moderator and up) or only admins. *Minimum role: admin.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id, link, address or name | Yes | |
| `who_can_issue` | `staff`, `admins` | Yes | |

**Notes:** it changes who can do what right away.

## `resend_certificate_email`

<span class="tool-kind tool-kind-write">Changes</span>

**Resend certificate e-mail.** Sends the *"your certificate is here"* e-mail of an issued certificate again. *Role: whoever issues in the space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `certificate` | id or link | Yes | |

**Ask like this:** *"Ana couldn't find the certificate e-mail; send it again."*

## `retry_certificate`

<span class="tool-kind tool-kind-write">Changes</span>

**Retry failed certificate.** Generates again a certificate whose generation failed and, by default, sends the e-mail when it's ready. *Role: whoever issues in the space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `certificate` | id or link | Yes | |
| `send_email` | yes or no | No | Default: yes |

## `list_my_certificates`

<span class="tool-kind tool-kind-read">Read-only</span>

**My certificates.** Your certificates in the community, with the verification code and the links. *Minimum role: any.*

Parameters: none.

**Ask like this:** *"Give me the link to my Excel from Scratch certificate."*

## `set_certificate_indexing`

<span class="tool-kind tool-kind-write">Changes</span>

**Show certificate in search engines.** Turns **Show in search engines** on or off on the public verification page of one of your certificates. *Role: whoever received the certificate.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `certificate_id` | id | Yes | From `list_my_certificates` |
| `indexable` | yes or no | Yes | |

## Related

- [Tools](/mcp/ferramentas)
- [Recipes](/mcp/receitas)
- [Money and confirmation](/mcp/dinheiro-e-confirmacao)
