> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.taktoria.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.taktoria.com/_mcp/server.

# Go Links tools

> The Go Links MCP server's tools and skills: find, read, create and look after go links as the person who connected the assistant.

Go Links' MCP server, `https://www.taktoria.com/mcp/<workspace>/golinks` (each workspace has its own), lets an
assistant find, read, create and look after go links as the person who
connected it. See [MCP servers](/ai-assistants/mcp-servers) for connecting and
authorization.

## Roles

What a connection may do follows the person's
[role in Go Links](/getting-started/authentication#app-roles):

* **An app admin** of Go Links (every workspace owner and admin is one) may
  change any link, whoever it names as editors.
* **A member** creates links, and changes the ones that name no editors, name
  them, or that they created.
* **A viewer** reads what a member would. Their connection lists and accepts
  only the read tools, whatever it was granted: a write tool called anyway is
  refused (`viewer_only`), and the consent page offers them only **Read
  only**. See [MCP servers](/ai-assistants/mcp-servers#scopes).

Everything is done with that person's rights in Go Links:

* **Who may change a link.** A link that names no editors can be changed by
  anybody with a Go Links seat. One that names editors can be changed by them,
  by the person who created it and by Go Links' app admins. Anybody else gets a
  tool error. Editors (`editorUserIds`) must be members of the workspace:
  naming anybody else is an `invalid_input` error, and nothing is saved.
  `find_people` finds them by name or email address.
* **Drafts.** A draft claims its short name without redirecting. Its
  destination (`url`) is `null` to anybody who may not edit it, and a search
  does not match it for them.
* **Who may follow a link** on the workspace's own Go Links hostname
  (`access`): `DOMAIN` (the default: members, and anybody who proves an email
  address at the link's domains), `WORKSPACE` (members only) or `PUBLIC`.
  Domains are chosen from the workspace's allow-list, its verified domains on
  the list and its partner domains; an empty list means the whole allow-list.
  A domain off the list is refused, and one a workspace admin removes stops counting
  at once. `access.domains` is `null` to anybody who may not edit the link.
  With `access.requireGoogle`, a `DOMAIN` link accepts only an address proved
  with Google, never an emailed code; it is ignored where Google sign-in is
  not set up. A field of `access` left out keeps its value.

Links are named two ways: an `id`, which the tools that change a link take,
and a `slug`, the short name (`roadmap` is `go/roadmap`). `get_link` takes
either.

## Read tools

Listed to every connection with Go Links.

| Tool                    | What it does                                                                                              |
| ----------------------- | --------------------------------------------------------------------------------------------------------- |
| `whoami`                | The person, their role, the workspace, and this connection's access                                       |
| `find_people`           | Members by name or email address, with the user ids `editorUserIds` takes and whether each has a seat     |
| `find_teams`            | The workspace's teams by name, with who is on them                                                        |
| `search`                | Links whose short name, description or destination match some words                                       |
| `list_links`            | The workspace's links, most followed first, paged with `cursor`; filters `q`, `draft`, `archived`, `mine` |
| `get_link`              | One link by `id` or `slug`: destination, editors, audience, clicks, short URL                             |
| `link_clicks`           | One link's clicks per day, 1 to 365 days, and its all-time total                                          |
| `workspace_clicks`      | Clicks per day across every link in the workspace: the Analytics page's chart                             |
| `top_links`             | The busiest links of the last `days` days, with their clicks then and of all time                         |
| `link_short_url`        | The address to share (on the workspace's own hostname where it has one) and its QR code                   |
| `link_audience_options` | The allow-list a link's audience chooses from, and whether Google sign-in can be or is already required   |

## Write tools

Listed only to a connection granted `golinks:write`, and never to a Viewer of
Go Links.

| Tool                | What it does                                                                                            | Annotations             |
| ------------------- | ------------------------------------------------------------------------------------------------------- | ----------------------- |
| `create_link`       | Make a link, live or as a draft, with its description, editors and audience                             |                         |
| `update_link`       | Re-point, rename, change the description, editors or audience, publish or unpublish, archive or restore | destructive, idempotent |
| `publish_link`      | Put a draft live                                                                                        | idempotent              |
| `set_link_archived` | Archive a link (it keeps working, out of the list) or bring it back                                     | idempotent              |
| `delete_link`       | Delete a link for good: its short name stops working                                                    | destructive, idempotent |

Every link a tool returns carries its `shortUrl` and a `consoleUrl` that opens
it in Go Links, both on the workspace's Go Links hostname where it has one.

There is no tool that follows a link. Following one counts a click, and an
assistant looking a link up is not somebody visiting it: `get_link` by `slug`
says where a link goes, to whoever may see it, without counting anything.

## Skills

Step-by-step guides an assistant reads before work that takes several tools
(see [Skills](/ai-assistants/mcp-servers#skills) for how clients reach them).
Write skills are offered only to a connection granted `golinks:write`.

| Skill                         | Access | What it is for                                                                                                         |
| ----------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------- |
| `find-anything`               | read   | Searching Go Links well with `search`                                                                                  |
| `link-usage-report`           | read   | The trend in clicks over a period, the most followed links and the quiet ones; argument `days`                         |
| `create-links-for-a-campaign` | write  | A set of links for a campaign: guessable names checked free, the audience, drafts until confirmed; argument `campaign` |
| `tidy-up-links`               | write  | Unused links, duplicates and forgotten drafts from their clicks, archived (not deleted) once the person confirms       |

`create-links-for-a-campaign` comes with `references/slug-guide.md`, on what
Go Links does to a short name and what makes a good one.

## Refusals

A refusal is a tool error in plain English: a short name that is taken
(naming who made the link), reserved or unusable; a destination that is not
http or https; a domain off the allow-list; a link the person may not change;
or a link that is not in the workspace, or not there at all.