AI Assistants (MCP)

MCP Access Security: Roles, Write Gate, Expiry, and the Audit Log

Linkilo's MCP access is built "secure by default": until you deliberately open it up, nothing is exposed — and even then, every connection is limited to exactly what you allow.

The two master switches

  • Enable MCP access — the kill switch. While OFF (the default), the endpoint refuses every request from everyone. Turning it off later instantly cuts off all connected assistants.
  • Allow write actions — a separate switch, also OFF by default. While it's off, every connection is read-only, even tokens with editor or admin roles. Write tools (insert links, create redirects, run/ignore scans) are refused site-wide.

The four roles

Role Can
read_only View all insights (orphans, anchors, cannibalization, clusters, broken links, redirects, clicks, crawl log, GSC, index coverage, link equity) and get link suggestions.
read_write Everything above, plus run scans and ignore broken links. No content edits.
editor Everything above, plus insert suggested links into posts and create redirects.
admin Everything above — Linkilo administration only. Never WordPress admin: no users, plugins, themes, files, or settings outside Linkilo.

Roles are strictly ordered; a connection can never do more than its role, and a role can never do more than the global switches allow.

Tokens are not WordPress logins

A token is a random secret stored hashed (SHA-256). It carries none of your WordPress capabilities. Tokens can only be created by a logged-in administrator inside wp-admin — no connected assistant can ever mint, reveal, or escalate a token.

Expiry and revocation

Every token can be given an expiry (30 / 90 / 365 days, or never). Expired tokens are refused exactly like revoked ones. Revoking takes effect on the very next request.

The audit log

Linkilo → MCP Access → Recent MCP activity lists the most recent tool calls: which token, which role, which tool, and the outcome — ok, denied (a role or read-only-policy block), or error. If you ever wonder what an assistant actually did on your site, the answer is on that page.

No made-up answers

Every MCP tool returns only real stored data. If a dataset is empty, the tool says so explicitly and the assistant is instructed not to invent values — and not to claim the connection is broken when data is simply empty. Assistants can also call get_connection_status for ground truth about the connection, the role, and which data sources are attached.

Was this article helpful?


© Copyright 2024, All Rights Reserved