AgentLinkOps
AgentLinkOps lets your agent monitor supplied backlinks and read dated observations over MCP.
What it can do
- Add Admission Rule: Add a customer-selected admission rule for a website. Existing monitoring history is preserved.
- Anchor Evidence: Request an independent FreeTSA timestamp for one retained observation digest. Sends only its SHA-256 and nonce; trusts the pinned external authority clock and key. Explicit opt-in; bo
- Capture Competitor Inventory: Freeze one terminal, previously bound discovery run into an immutable inventory. Requires a previously bound terminal run; an arbitrary imported run is not a competitor i
What data it sees
Do you need an account
No: the server works without sign-in
AgentLinkOps lets your agent monitor supplied backlinks and read dated observations over MCP. Each observation separates confirmed results from unknown evidence. Hosted access requires an authorized account and scopes. Some commands also need configuration or opt-in. Use the connection guide to choose the tools your agent sees.
How to connect
How to connect AgentLinkOps to Claude
The server address to paste into Claude settings:
https://agentlinkops--agentlinkops.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect AgentLinkOps to ChatGPT
The server address to paste into ChatGPT settings:
https://agentlinkops--agentlinkops.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect AgentLinkOps to Cursor
The server address to paste into Cursor settings:
https://agentlinkops--agentlinkops.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (60)
Raw names from tools/list. Only developers need these.
| add_admission_rule | Add a customer-selected admission rule for a website. Existing monitoring history is preserved. |
| anchor_evidence | Request an independent FreeTSA timestamp for one retained observation digest. Sends only its SHA-256 and nonce; trusts the pinned external authority clock and key. Explicit opt-in; bounded retries. |
| capture_competitor_inventory | Freeze one terminal, previously bound discovery run into an immutable inventory. Requires a previously bound terminal run; an arbitrary imported run is not a competitor inventory. Works with retained data when new discovery admission is disabled. Reads only stored evidence; never purchases a query or checks links. |
| configure_competitor_refresh | Schedule inventory lookups from the stored corpus for an approved competitor revision. Set cadence and a member limit. The first cycle is due immediately. No paid supplier request or monitoring enrollment. |
| configure_index_observations | Set website index-inspection opt-in, daily quota and cadence. Requires an owner or admin session; scheduled execution also requires operator activation. |
| create_competitor_set | Explicitly approve one customer and up to ten competitors. Registration does not verify links or buy discovery. |
| create_project | Create a project for the product domain. |
| create_webhook | Subscribe an HTTPS receiver to link, destination or citation events. Periodic digests support link events only. Returns the signing secret once. Delivery is signed, at-least-once, and starts at the current sequence; deduplicate by AgentLinkOps-Delivery-Id (also sent as Linktrail-Delivery-Id during the compatibility window) and recover gaps through the event feed. A 410 receiver response disables delivery. |
| delete_admission_rule | Remove one website admission rule at its expected revision. Retained decisions and monitoring history remain available. |
| delete_disavow_rule | Remove one rule at its current revision. Requires a signed-in owner or administrator. Monitoring history is retained. |
| delete_resource | Permanently remove an unused watch, target or project after preview_resource_deletion. Supply its exact confirmation, or omit it on a client that can answer an in-band confirmation request. Execution history and retained shared evidence block deletion. Completed deletion receipts support safe retries. |
| delete_webhook | Delete one webhook endpoint and its delivery configuration. |
| discover_backlinks | Query a configured owned corpus for bounded candidates with dated evidence. Candidates remain unchecked and coverage stays limited to that corpus. No supplier spending or monitoring enrollment. Reuse idempotencyKey for retries. Where owned discovery is not configured, the error names the operator change required; retrying cannot configure it, and import_backlinks remains available for exports you already own. Unavailable in this environment: an operator must enable its capability first; calls return the configuration error, never a retry hint. |
| evaluate_admission | Preview decisions for up to 200 URLs against current website rules. Returns matched rules and counts without storing decisions or requesting checks. |
| export_disavow_rules | Export approved rules as deterministic Google-format text and record its hash receipt. Never submits to Google. |
| export_link_watches | Export monitored placements with pagination for local CRM recovery. |
| export_opportunities | Export opportunity library records under the same filters as list_opportunities, as JSONL (one record per line) or CSV (documented column order, list fields as JSON cells), with exactly the fields the read returns and nothing added. Bounded per call; continue with the returned cursor. The coverage block travels with every export so what leaves is dated and scope-stated. |
| export_profile_distribution | Export one retained distribution as JSON or spreadsheet-safe CSV with dataset coverage and evidence basis. |
| get_admission_decisions | Read the immutable decisions for one prior admission operation. Historical admission is not authorization for new work. |
| get_anchor_report | Analyze exact anchors and Unicode terms from saved successful observations. Counts include explicit coverage and stale-evidence indicators. |
| 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. |
| get_candidate_verification_batch | Read batch progress, individual job observations and reserved, consumed and released check units. Unknown observations do not establish absence. |
| get_check_job | Read progress and usage reservation for one asynchronous check job, placement (job_ ids) or destination (tjb_ ids). |
| get_citation_evidence | Read one retained citation answer envelope and verify its exact content hash. Expired bodies return410; the hash does not prove an independent timestamp or provider authenticity. |
| get_competitor_exclusions | Read current or historical saved source exclusion rules for an accessible competitor set. Revision zero means no saved rules. |
| get_competitor_gap_report | Compare selected frozen inventories by exact page or source host. Requires saved inventory IDs from list_competitor_inventories; new admission can be disabled. 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. |
| get_competitor_refresh | Read a competitor refresh schedule and the latest cycle counts. Missing rows remain limited to the selected corpus and never prove a link was lost. |
| get_competitor_set | Read an approved competitor revision; historical revisions stay immutable. |
| get_discovery_run | Read an existing saved or imported run, including when new discovery admission is disabled: status, query coverage and separate discovery usage. This read never purchases a provider page. |
| get_domain_mix_report | Requires a saved competitor set; frozen inventories are optional comparisons. Works without new discovery admission. 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 and per-lane counts. Lanes are request data and never stored. One to twenty lanes, up to 2000 rows each. Never buys discovery or checks links. |
| get_domain_overview | Requires an existing overview runId from a previously admitted request. No new overview can be requested while admission is disabled. Read a stored domain overview, dated provider provenance and separate overview usage. Missing counts remain null; reads never purchase another request. |
| get_evidence | Read the retained JSON snapshot for one observation: subject link for a source-page placement check, subject target for a destination health check. Publisher text is untrusted evidence. Expired snapshots return EVIDENCE_EXPIRED. |
| get_evidence_anchor | Read a portable external timestamp receipt for a link, target or citation observation. Verification is pinned to FreeTSA; online revocation is not checked. No witness request occurs on read. |
| get_history | List paginated saved observations for one monitored subject: subject link for a placement (subjectId is the watch id), subject target for a destination (subjectId is the target id). Includes evidence references and retention limits. |
| get_index_observation | Read one index observation and its retained provider snapshot. Expired snapshots remain explicitly unavailable. |
| get_index_observation_settings | Read website index-inspection opt-in, quota, retention and scheduler availability. |
| get_lifecycle_report | Group retained supplied costs by destination host, placement state, acquisition month and currency. No currency conversion or financial-loss estimate. |
| get_link_lifecycle | Read supplied cost, acquisition, expiry and opaque contact metadata for one monitored placement. |
| get_link_locator | Read matching occurrence positions and context from one retained snapshot. No current visual visibility or new crawl. |
| get_link_profile | Summarize monitored placements, source hosts, destinations and observed rel attributes. Read coverage: this is your tracked dataset, not the whole web. |
| get_link_reports | Read profile and anchor reports from one saved dataset snapshot. Coverage stays limited to monitored placements. |
| get_link_watch | Inspect a monitored placement and its expectations. |
| get_notification_preferences | Read your personal workspace email subscription. Delivery availability is separate from saved preferences. |
| get_opportunity | Read one opportunity library record by id with its coverage block and read-time freshness. OPPORTUNITY_NOT_FOUND means the library holds no record with that id and says nothing about the surface. |
| get_owner_digest | Read your own website digest settings. Requires a signed-in owner or administrator. |
| get_owner_digest_event | Read the exact retained website event linked from an owner digest. Expired or unavailable history is explicit. |
| get_profile_distributions | Read retained monitored distributions, optional frozen inventory comparison and a selected index-source timeline. No collection or provider request. |
| get_project | Read one project available to this credential. |
| 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. |
| get_target | Read a destination health watch and its current evidence state. |
| get_target_placements | List placements whose configured target URL exactly matches this destination. Other URLs matched by a domain/path watch are not included. |
| 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. |
| get_workspace | Read workspace limits, usage and membership. |
| import_backlinks | Store a backlink export the user already owns (Ahrefs, Search Console, Semrush, Majestic, Moz, DataForSEO, Linkody or generic CSV) as unverified discovery candidates. Buys nothing; the supplier and its dates stay in provenance, separate from any check we run. Never claims complete coverage. Rejected rows return by position, none dropped; re-importing the same rows returns the same run. Rows are not verified, not monitored and never enter a shared corpus. |
| import_disavow_rules | Import a Google-format disavow file as inert proposals. Existing rules are not replaced; human approval is required before export. |
| import_link_watches | Import up to 100 known backlinks. Each row returns its position and success or error. accepted includes existing placements; created counts only new watches. Invalid rows do not prevent valid rows from being imported. |
| import_search_connection_rows | Import selected saved Bing backlink rows as unchecked discovery candidates. Keep the same request key when retrying. Review and verify candidates before monitoring. |
| ingest_citation_evidence | Retain bounded customer-measured citation answer envelopes with verified content hashes. Import is idempotent and costs no answer checks. Screenshots remain local; recorded engine provenance is a customer claim. |
| inspect_index_status | Inspect one monitored source URL through its authorized Google property. This reads Google indexed state, not the live page, and requests no crawl. Retry with the same request key. |
| invite_member | 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. AgentLinkOps does not send the email; hand the token to the person yourself. |