AgentLinkOps / Reference
Tool catalog
Every tool registered for the AgentLinkOps cloud surface, shown in its honest state. This page is generated from the same inventory the service registers from, so its counts and badges cannot drift from the registry.
What the states mean
The registry defines 62 cloud tools: 61 answer an authenticated connection on /mcp, and one (verify_link_free) is the anonymous free check served separately on /free/mcp. Of all 62, 44 are locally tested, 15 are registered without a stored local test run, and 3 are admission-gated: request_competitor_inventory, request_domain_overview, discover_backlinks. Admission-gated tools refuse live work with PROVIDER_NOT_CONFIGURED before anything is saved.
Production has been live since September 12, 2026. No authenticated tools/list readback from that deployment is stored yet, so this page reports registry state, not a verified deployed count. The registry also defines 8 repo-local context tools (context_*) that belong to a repository checkout and are served by no cloud endpoint; they are not listed below.
- locally tested
- Exercised by the repository’s own tests, through the MCP surface or the tool’s service module.
- registered
- Defined in the registry and served by the transport. No stored local test run yet, and no claim of live verification on a deployment.
- admission-gated
- Registered, but the paid supplier path behind it is switched off in this build. Calls refuse with
PROVIDER_NOT_CONFIGUREDbefore any persistence.
Workspace & access
In the guide10 tools, 7 locally tested.
| Tool | What it does | State | Scopes |
|---|---|---|---|
create_projectwrites | Create a project for the product domain. | locally tested | projects:write |
list_projects | List projects available to this agent. | locally tested | projects:read |
get_workspace | Read workspace limits, usage and membership. | locally tested | projects:read |
get_usage | Read workspace usage, allowance and billing availability for one UTC month. Source and destination checks share allowance; reserved, consumed and released are separate totals. | locally tested | projects:read |
invite_memberwrites | Invite one email address as admin, member or viewer, optionally scoped to specific projects. Returns a join token ONCE; only its hash is stored. The token alone is NOT enough to join — the accepting user's VERIFIED email must match the invitation, so a forwarded link cannot admit a stranger. An invitation can never grant a role or a project the inviter does not hold, and owner is not invitable: transferring ownership is its own act. Linktrail does not send the email; hand the token to the person yourself. | registered | projects:write |
list_invitations | List open, accepted and revoked invitations. Tokens are never returned. | registered | projects:read |
revoke_invitationwrites | Revoke an open invitation so its token can no longer be used. | locally tested | projects:write |
remove_memberwrites | Remove a member from this workspace. Their keys stop working on the next request, because every principal re-reads membership per request. The last owner cannot be removed. | locally tested | projects:write |
list_members | List this workspace's members with their role and, when narrowed, the exact projects they can see. A null project list means every project. | registered | projects:read |
set_member_accesswrites | Change one member's role, their project grant, or both. A grant of null means every project. Refusals worth knowing: the last owner cannot be demoted, nobody can raise their own role or outrank their actor, and an owner cannot be scoped to specific projects because a scoped owner can lock a project away from everyone. A member's grant is the CEILING on every key they hold, so narrowing it narrows their existing keys immediately. | locally tested | projects:write |
Link monitoring
In the guide10 tools, 4 locally tested.
| Tool | What it does | State | Scopes |
|---|---|---|---|
monitor_linkwrites | Monitor a known source page and target. Identical placements are deduplicated. | locally tested | watches:write |
update_link_watchwrites | Pause/resume a placement or update cadence and expectations. | registered | watches:write |
get_link_watch | Inspect a monitored placement and its expectations. | registered | watches:read |
list_link_watches | List monitored placements with last known state and latest attempt. | registered | watches:read |
get_link_history | List paginated saved observations for one monitored placement, including evidence references and retention limits. | registered | watches:read |
list_link_events | Read change events using an opaque cursor. Apply a full page locally before saving next_cursor. | registered | events:read |
get_link_profile | Summarize monitored placements, source hosts, destinations and observed rel attributes. Read coverage: this is your tracked dataset, not the whole web. | locally tested | watches:read |
get_anchor_report | Analyze exact anchors and Unicode terms from saved successful observations. Counts include explicit coverage and stale-evidence indicators. | locally tested | watches:read |
locate_link | Read link occurrences from one saved observation ID. Does not search URLs or fetch the publisher page. | locally tested | watches:read |
export_link_watches | Export monitored placements with pagination for local CRM recovery. | registered | exports:create |
Destination health
In the guide9 tools, 9 locally tested.
| Tool | What it does | State | Scopes |
|---|---|---|---|
monitor_targetwrites | Register an exact public destination URL for recurring health checks. Duplicates within a project are reused. Each completed check uses one unit of the shared monthly check allowance. | locally tested | watches:write |
update_targetwrites | Pause/resume a destination check or change its cadence. | locally tested | watches:write |
get_target | Read a destination health watch and its current evidence state. | locally tested | watches:read |
list_targets | List explicitly monitored destination URLs. Checks are independent of source-link presence. | locally tested | watches:read |
get_target_history | List paginated saved destination-health observations, independently of source-link presence. | locally tested | watches:read |
list_target_events | Read the independent destination-health event feed. Its cursor is separate from link events; a broken destination does not imply that its source backlink disappeared. | locally tested | events:read |
get_target_placements | List placements whose configured target URL exactly matches this destination. Other URLs matched by a domain/path watch are not included. | locally tested | watches:read |
get_target_job | Read progress and usage reservation for an asynchronous destination-health check job. | locally tested | watches:read |
request_target_checkwrites | Queue a metered destination health check. Reuse the idempotency key for a retry; blocked results remain unknown. | locally tested | watches:write |
Import & verification
In the guide6 tools, 5 locally tested.
| Tool | What it does | State | Scopes |
|---|---|---|---|
import_backlinkswrites | Store a backlink export the user already owns, from Ahrefs, Search Console, Semrush, Majestic, Moz, DataForSEO, Linkody or a generic CSV, as discovery candidates. Costs nothing and buys nothing: the user already paid their supplier. The supplier is named in provenance and its dates stay supplier dates, separate from any check we run. An import NEVER claims complete coverage, because nothing in an export says whether it is the whole result or one filtered page. Rejected rows come back with the response, identified by position; none is dropped. Re-importing the same rows returns the same run rather than duplicating candidates. Imported rows are not verified links, are not enrolled in monitoring, and never enter a shared corpus. | locally tested | discovery:write |
import_link_watcheswrites | Import up to 100 known backlinks; inspect per-row errors. | registered | watches:write |
request_link_checkwrites | Queue metered verification. Reuse the idempotency key when retrying this request. | locally tested | watches:write |
get_check_job | Read progress and usage reservation for an asynchronous source-link check job. | locally tested | watches:read |
get_candidate_verification | Read a selected candidate check, immutable job observation, source-check usage and local-reference lineage. Candidate latest evidence may refer to a later explicitly requested check. | locally tested | discovery:read watches:read |
verify_link_freewritesanonymous | One free placement check with evidence and honest uncertainty. Supply a source page that should carry a link and the destination you care about; the source page is fetched once and the tool reports whether that page links to the destination in the HTML it served at that moment. Four states: success (link found, every occurrence with anchor and rel), valid-negative (a COMPLETE read contains no link; never a claim the link is gone), unknown (the web did not answer; never means the link was removed or lost), failed (the check never ran: invalid input, the anonymous daily limit, or service — never a verdict on the web). No account or any connection required. No browser rendering: a page that needs JavaScript to render returns unknown. Anonymous ceilings: 3 checks per UTC day per visitor, 1 concurrent, one page fetched per check, 15-minute result cache. Raw publisher HTML is never returned. | locally tested |
Discovery
In the guide7 tools, 5 locally tested.
| Tool | What it does | State | Scopes |
|---|---|---|---|
discover_backlinkswrites | Request bounded backlink candidates. Discovery admission is disabled in this build; stored synthetic acceptance uses a separate discovery meter. Reuse the idempotency key. Candidates are not verified links and are not enrolled in monitoring. | admission-gated | discovery:write |
get_discovery_run | Read stored discovery status, query coverage and separate discovery usage. This read never purchases a provider page. | locally tested | discovery:read |
list_discovery_runs | Browse stored discovery runs newest first with optional project filtering and bounded cursor pagination. No provider calls, spending or enrollment. | locally tested | discovery:read |
list_discovery_candidates | Read up to 100 stored discovery candidates with dated provider provenance and separate verification status. Cursor pages freeze a stored result snapshot; restart without a cursor for newer results. Reads never purchase provider pages. | locally tested | discovery:read |
verify_discovery_candidatewrites | Request an asynchronous check of one saved discovery candidate. Returns a verification record and queued job with immutable lineage. Requires an idempotency key; consumes check allowance when executed. Does not establish a verified result synchronously. | locally tested | discovery:read watches:write |
request_domain_overviewwrites | Request a separately metered supplier summary for a domain or subdomain. Admission is disabled in this build. Summaries carry their data mode and provider provenance; they are not link checks or totals derived from selected candidates. | admission-gated | discovery:write |
get_domain_overview | Read a stored domain overview, dated provider provenance and separate overview usage. Missing counts remain null; reads never purchase another request. | locally tested | discovery:read |
Competitor intelligence
In the guide14 tools, 13 locally tested.
| Tool | What it does | State | Scopes |
|---|---|---|---|
create_competitor_setwrites | Explicitly approve one customer and up to ten competitors. Registration does not verify links or buy discovery. | locally tested | discovery:write |
get_competitor_set | Read an approved competitor revision; historical revisions stay immutable. | locally tested | discovery:read |
update_competitor_setwrites | Approve a complete new member revision with optimistic concurrency. Keep member IDs only for unchanged members. | locally tested | discovery:write |
retire_competitor_setwrites | Retire a competitor set to stop new inventory requests; preserve approved revisions and dated evidence. | locally tested | discovery:write |
list_competitor_sets | List approved competitor sets in one accessible project, including retired sets. | locally tested | discovery:read |
request_competitor_inventorywrites | Request separately metered discovery bound to one approved member and revision. Provider admission remains disabled. No monitoring enrollment. | admission-gated | discovery:write |
capture_competitor_inventorywrites | Freeze one terminal, previously bound discovery run into an immutable inventory. Reads only stored evidence; never purchases a query or checks links. | locally tested | discovery:write |
list_competitor_inventories | List dated inventory summaries for one approved set revision. Missing edges are not confirmed absence. | locally tested | discovery:read |
list_competitor_inventory_rows | Page exact stored source/target rows with contributor identity and captured verification state. No provider tokens or raw evidence. | locally tested | discovery:read |
get_competitor_gap_report | Compare selected frozen inventories by exact page or source host. Missing edges are dataset-qualified; incomplete data cannot establish gaps. Page groups or pass groupKey for exact contributor rows. Select exclusionRevision explicitly to apply saved rules. Never buys discovery or checks links. | locally tested | discovery:read |
get_domain_mix_report | Render the referring-domain mix over supplied discovery lanes: generic and niche splits from the labels your imported rows carry, ours against each selected frozen inventory, with label coverage, per-lane counts and the padding-guidance report line. Lanes are request data and never stored. One to twenty lanes, up to 2000 rows each. Never buys discovery or checks links. | locally tested | discovery:read |
get_competitor_exclusions | Read current or historical saved source exclusion rules for an accessible competitor set. Revision zero means no saved rules. | locally tested | discovery:read |
save_competitor_exclusionswrites | Save a complete replacement of up to 100 exact page/host exclusion rules with expectedRevision. Empty rules clear the saved view. Keeps historical evidence and revisions; never changes provider queries or monitoring. | locally tested | discovery:write |
preview_competitor_exclusions | Dry-run exact source exclusion rules against selected frozen inventories. Returns before/after counts and bounded matched/collateral examples. Does not save rules, buy discovery, check links or alter evidence. | locally tested | discovery:read |
Contacts
In the guide1 tool, 0 locally tested.
| Tool | What it does | State | Scopes |
|---|---|---|---|
get_public_contacts | Extract explicitly published emails and contact-page candidates from the latest saved public HTML. Returns dated evidence; does not infer emails, verify deliverability or send outreach. | registered | watches:read |
Delivery (webhooks)
In the guide5 tools, 1 locally tested.
| Tool | What it does | State | Scopes |
|---|---|---|---|
create_webhookwrites | Subscribe an HTTPS receiver to source or destination events, or periodic digests. Returns the signing secret once. Delivery is signed, at-least-once, and starts at the current sequence; deduplicate by Linktrail-Delivery-Id and recover gaps through the event feed. A 410 receiver response disables delivery. | registered | watches:write |
list_webhooks | List this workspace's webhook endpoints with their state, subscribed feeds and types, consecutive failure count and why any was disabled. Secrets are never returned. | registered | events:read |
set_webhook_statewrites | Enable or disable one endpoint. Disabling stops delivery and loses nothing: undelivered events stay in the feed and can be read with a cursor. Re-enabling clears the failure count. | registered | watches:write |
rotate_webhook_secretwrites | Add a second active signing secret, or retire the older one. Both secrets sign every request while two are active, so a receiver updates its configuration whenever it likes rather than deploying in lockstep with us. The new secret is returned ONCE. | locally tested | watches:write |
list_webhook_deliveries | Read recent delivery attempts for one endpoint: state, attempt count, last HTTP status and error. Diagnostic only; it does not resend. | registered | events:read |
How this page stays honest
One command, npm run generate:tools, rebuilds the inventory behind every table on this page directly from the tool registry (src/tool-registry.js). The web build refuses to complete when that inventory no longer matches the registry, and the page refuses to render when a tool is missing from its category map. Authenticated tools/list on your connection remains the source of truth for input schemas and current names.
Read tool jobs by workflow in the connection guide, connect a client with the tested setup examples, or read the agent brief your agent starts from.