Custom emoji
A group’s custom emoji are images it adds to the emoji its projects can react with and write in Markdown. These actions list, add and delete them. Reacting to an issue, a merge request or a snippet with an emoji is not one of them: those are actions of the issue, merge request and snippet groups. Deleting an emoji leaves the reactions that used it in place, shown as its :name:.
Sample questions
Section titled “Sample questions”- “List the custom emoji of group platform”
- “Add a party_parrot emoji to group platform”
- “Delete the outdated custom emoji”
How to call it
Section titled “How to call it”- Dynamic, the default surface: call
gitlab_execute_actionwithactionset to the action’s ID, such ascustom_emoji.create, and its parameters inparams.gitlab_find_actionfinds an ID from a description of the task. - Meta (
GITLAB_MCP_TOOL_SURFACE=meta): callgitlab_custom_emojiwithactionset to the action’s name, such ascreate, and its parameters inparams. - Individual (
GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such asgitlab_create_custom_emoji, with its parameters as the arguments.
Availability
Section titled “Availability”Every tier serves the whole group, on self-managed instances and on GitLab.com alike.
Read-only actions: 1 of 3, the ones a deployment in read-only mode keeps.
Actions
Section titled “Actions”The description of each action, and of each of its parameters, is the text the server serves for it on the default surface, quoted as served. A destructive action runs only once confirmed, unless GITLAB_MCP_YOLO_MODE (or AUTOPILOT) skips that step: the dynamic surface needs confirm: true on gitlab_execute_action, and the other two take a confirm parameter or the client’s prompt (Destructive actions).
| Action | Individual |
|---|---|
custom_emoji.create | gitlab_create_custom_emoji |
custom_emoji.delete | gitlab_delete_custom_emoji |
custom_emoji.list | gitlab_list_custom_emoji |
custom_emoji.create
Section titled “custom_emoji.create”Create group-level custom emoji using GraphQL-backed routes.
- Meta-tool:
gitlab_custom_emoji, actioncreate - Individual tool:
gitlab_create_custom_emoji - Tier: Free
- Behavior: writes, not idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_path | string | yes | required,Group full path (e.g. my-group) |
name | string | yes | required,Emoji name without colons (e.g. party_parrot) |
url | string | yes | required,URL to the emoji image (PNG or GIF recommended) |
custom_emoji.delete
Section titled “custom_emoji.delete”Delete group-level custom emoji using GraphQL-backed routes.
- Meta-tool:
gitlab_custom_emoji, actiondelete - Individual tool:
gitlab_delete_custom_emoji - Tier: Free
- Behavior: writes, destructive (needs confirmation), idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
id | string | yes | required,Custom emoji GID (e.g. gid://gitlab/CustomEmoji/1) |
custom_emoji.list
Section titled “custom_emoji.list”List group-level custom emoji using GraphQL-backed routes.
- Meta-tool:
gitlab_custom_emoji, actionlist - Individual tool:
gitlab_list_custom_emoji - Tier: Free
- Behavior: read-only, idempotent
| Parameter | Type | Mandatory | Description |
|---|---|---|---|
group_path | string | yes | required,Group full path (e.g. my-group) |
after | string | no | Cursor for forward pagination (from previous response end_cursor) |
before | string | no | Cursor for backward pagination (from previous response start_cursor). The page size comes from last, or from first when last is omitted |
first | integer | no | Number of items to return (default 20, max 100) |
last | integer | no | Number of items to return from the end of the range (backward pagination). Cannot be combined with first |