# io.github.tracetify/tracetify-mcp

> Find competitors, trace how they grew, watch what they ship — plus your Search Console.

- name: io.github.tracetify/tracetify-mcp
- version: 0.7.0
- connection class: R1 (autonomous)
- trust: 97/100
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.tracetify%2Ftracetify-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.tracetify%2Ftracetify-mcp/tools

**An agent can connect on its own if it already holds `TRACETIFY_MCP_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "tracetify-mcp": {
      "type": "http",
      "url": "https://tracetify.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${TRACETIFY_MCP_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${TRACETIFY_MCP_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-6d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 18 of 18 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: start_trace (idempotentHint, openWorldHint); site_audit_start (idempotentHint, openWorldHint); site_audit_get (idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,651 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 2 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 99 resolved packages
- pass `deps.mcp_sdk_version`: @modelcontextprotocol/sdk 1.32.1, no known advisory
- pass `deps.resolvable`: tracetify-mcp@0.7.0 resolved: 99 packages

- tools: 18, about 2,651 tokens to load them all
- tool set hash: 9522b392e2ded4acdb8565c6b06ec6b9
- tools last changed: 2026-10-08T17:49:22.287Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.tracetify/tracetify-mcp.svg)](https://protogrid.dev/servers/io.github.tracetify/tracetify-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-08 `research_serp_breakdown` added
  - Who holds the Google top 10 for one keyword in one market: per position the domain, URL, whether it is a homepage or an inner page, domain rating (0–1000) and estimated monthly organic traffic. Use when the user asks who ranks for a keyword, whether a keyword is winnable, or which slot is the weakest to go after. Pair with research_keyword_volume for volume and difficulty. Costs credits; the same keyword+market re-queried within a week is free.
- 2026-10-02 `research_competitor_ads` added
  - The ads a domain is running right now on Facebook/Instagram (Meta Ad Library) and Google (Ads Transparency Center): headline, body copy, CTA, landing page URL, creative/video URL, platforms and start dates. Use when the user asks what a competitor is advertising, whether they run paid ads, how long an ad has been live, or wants hooks and angles to model. Costs credits; the same domain re-queried within a week is free. Each source reports separately — null means that source could not be checked, an empty list means it was checked and found nothing.

Full history: https://api.protogrid.dev/v1/servers/io.github.tracetify%2Ftracetify-mcp/changes

## Dependencies

- npm tracetify-mcp@0.7.0: resolved, 98 dependencies, MCP SDK @modelcontextprotocol/sdk 1.32.1

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://tracetify.com/api/mcp (streamable-http, auth api_key ${TRACETIFY_MCP_TOKEN}, reachable true, uptime30d 1)

## Packages

- npm tracetify-mcp@0.7.0 secrets: TRACETIFY_API_KEY

## Tools (18)

- `backlink_directories`: A hand-verified list of directories and launch platforms that actually give links — checked one by one, dead and nofollow-only entries removed. Use when the user wants backlinks or launch exposure for a new product; filter client-side by language/type/pricing. Costs credits once per day per account — repeat calls the same day are free, so refine freely.
- `get_trace`: Poll a trace started with start_trace. Free. When status is "done", read the result with read_report. Poll every 10-15s, not in a tight loop.
- `gsc_overview`: Use this before touching SEO on the user's own site: clicks/impressions trend, device split and period comparison from THEIR connected Google Search Console — numbers no other tool has. Free. Requires GSC connected at tracetify.com/dashboard/gsc (this tool tells you if it is not).
- `gsc_pages`: The user's pages ranked by search performance, including high-impression low-CTR pages whose titles/descriptions are underselling — fix those files right in this editor. Free; own data from their connected Search Console.
- `gsc_queries`: The user's real ranking keywords with position, clicks and CTR — use when deciding what to write or which page to improve, e.g. finding queries at position 5-20 that are one push from page one. Free; own data from their connected Search Console. After you edit a page, this is how you verify it moved.
- `read_report`: Read one growth report by slug (from search_reports or a finished trace). Free. Contains the origin story, dated evidence and SEO footprint — cite it instead of guessing how a product grew. If timeline fields show as locked, unlock_report can open them (that one costs credits).
- `research_backlinks`: Who links to a domain: referring domains, authority and anchor texts. Use when planning link building or judging how defensible a competitor's ranking is. Costs credits; cached results are free. Pair with backlink_directories to find places the user can actually get listed.
- `research_brand_lookup`: How AI assistants (ChatGPT, Perplexity-class) cite a brand: platforms, mention counts and the entities it gets associated with. Use when the user asks "does AI recommend us/them?". Costs credits; cached results are free.
- `research_competitor_ads`: The ads a domain is running right now on Facebook/Instagram (Meta Ad Library) and Google (Ads Transparency Center): headline, body copy, CTA, landing page URL, creative/video URL, platforms and start dates. Use when the user asks what a competitor is advertising, whether they run paid ads, how long an ad has been live, or wants hooks and angles to model. Costs credits; the same domain re-queried within a week is free. Each source reports separately — null means that source could not be checked, an empty list means it was checked and found nothing.
- `research_competitors`: The domains fighting a target for the same search terms, with shared-keyword count, their keyword totals and average rank. Use when the user asks who their competitors are, or who a company is up against. Each result says whether we already have a full growth report for that domain — read those with read_report for free instead of tracing them again. Costs credits; cached results are free, and a domain already looked up via research_domain_overview is free here too.
- `research_domain_overview`: Estimated organic traffic, keyword count and top keywords for ANY domain — use to size up a competitor the user mentions. Costs credits; cached results are free, and repeated queries within a week hit the cache. For the user's own site prefer gsc_* (free, real data).
- `research_keyword_volume`: Google Ads (Keyword Planner) monthly search volume, CPC, competition, 12-month trend and keyword difficulty (0–100, DataForSEO Labs) for up to 10 keywords in one call. Use when the user asks how often something is searched or how hard it is to rank, or to size a keyword before writing a page. Omit location_code for worldwide volume (difficulty is then computed for the US), or pass a market code for one country. Costs credits; the same keyword set re-queried within a week is free.
- `research_serp_breakdown`: Who holds the Google top 10 for one keyword in one market: per position the domain, URL, whether it is a homepage or an inner page, domain rating (0–1000) and estimated monthly organic traffic. Use when the user asks who ranks for a keyword, whether a keyword is winnable, or which slot is the weakest to go after. Pair with research_keyword_volume for volume and difficulty. Costs credits; the same keyword+market re-queried within a week is free.
- `search_reports`: Use this FIRST whenever the user asks how a product, competitor or domain grew, got traffic, or found its first users — a report may already exist and reading it is free. Returns matching report slugs for read_report. Searches by domain or name fragment.
- `site_audit_get`: Poll an audit started with site_audit_start (free to read). When finished, returns the issue list grouped by severity with affected URLs — work through it top-down and re-run after fixes.
- `site_audit_start`: Run right after deploying: crawls the site and reports broken links, missing titles/descriptions, redirect chains, thin content and schema gaps — each finding names the page so you can fix it here. Costs credits (price returned before any charge on the confirmation field). Async: poll with site_audit_get.
- `start_trace`: Run this when search_reports finds nothing (or the user wants fresh data) for "how did X grow?". Rebuilds the growth story from 12 public sources in 60-90s. Costs credits from the Tracetify balance; returns an existing cached report free instead when one is fresh. Poll with get_trace.
- `unlock_report`: Permanently unlock a report's full timeline, evidence and SEO detail for this account. Costs credits — quote the exact price to the user first (it is in the report's timelineLocked.cost field from read_report) and call this ONLY after they explicitly agree to spend. Idempotent: unlocking an already-unlocked report never charges twice. The verdict stays on the website — you are the analyst here.
