Skip to content
Agentmart
Submit a tool

Ghost Inspector MCP

Analyze, validate and safely update Ghost Inspector end-to-end browser tests

Connector by charliemtnez · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)
Write a review

Chalk Labs

Need help deploying Ghost Inspector MCP?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/charliemtnez-ghost-inspector-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Analyze, validate and safely update Ghost Inspector end-to-end browser tests

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
14 read · 6 write · 2 delete
Secrets
1 (API keys, tokens or passwords)
Install scripts
Not scanned yet
Runs as
Node.js package

Tools by what they do 22

Read from the source code; the running server may list different tools.

Read 14 · Look things up without changing anything.

  • gi_failure_groups
  • gi_find_tests
  • gi_get_test
  • gi_inventory
  • gi_module_usage
  • gi_plan_test
  • gi_propose_repair
  • gi_screenshot_diff
  • gi_screenshot_status
  • gi_stale_tests
  • gi_test_history
  • gi_test_result
Show 2 more tools
  • gi_vacuous_tests
  • gi_whoami

Write 6 · Create, change, send or run things.

  • gi_create_suite
  • gi_duplicate_test
  • gi_move_suite
  • gi_move_test
  • gi_run_test
  • gi_validate_test

Delete 2 · Delete, drop, revoke or wipe things.

  • gi_accept_screenshot
  • gi_update_test

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • GHOST_INSPECTOR_API_KEY

Other settings (environment variables or headers).

  • GHOST_INSPECTOR_ALLOW_RUNS
  • GHOST_INSPECTOR_ALLOW_WRITES
  • GHOST_INSPECTOR_BACKUP_DIR
  • GHOST_INSPECTOR_ORG_ID

Files it touches

  • Any path the agent passes to its tools

Tools (22)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • gi_accept_screenshotGhost Inspector: accept the latest screenshot as the new baselinecan change or delete data

    Makes the latest result's screenshot the baseline that every later run of this test is compared against. 🔴 The API offers no way to restore an earlier baseline; the response returns `previousBaselineResult` so it can at least be found again. `expectedResultId` is required: the result whose screenshot you looked at, from gi_screenshot_status. The accept is refused if a newer run has landed since, if the latest run is still going, or if its comparison passed or did not run (there is nothing to accept then). The check is read-then-accept with no compare-and-swap, so a run landing in the moment …

  • gi_create_suiteGhost Inspector: create a suite

    Creates an empty suite, optionally inside a folder. The folder is honoured at creation, so no follow-up move is needed. Refuses when a suite of the same name already exists in the same place, because Ghost Inspector allows the duplicate and nothing distinguishes the two afterwards. Pass allowDuplicateName only when the repetition is genuinely intended. 🔴 Getting the name right matters more than usual: this server never exposes suite deletion, because DELETE /suites/{id}/ cascades to every test inside with no version history and no recycle bin. Folders have no delete route in the API at all.…

  • gi_duplicate_testGhost Inspector: copy a test — the only way to get a new one

    Copies an existing test, then places it in a suite and renames it in one call. Returns the new test with its steps and its dateUpdated. 🔴 This is how a test comes into existence here, and it is not a create. Ghost Inspector has no endpoint that builds a test from nothing — POST /tests/ is the listing wearing a POST — so a source test is mandatory and there is no way around that. Pick the closest existing test and adapt the copy with gi_update_test. 🔴 The copy's schedule is cleared unless keepSchedule is set. Whether a copy inherits its source's testFrequency is not verified, and in an acco…

  • gi_failure_groupsGhost Inspector: red tests grouped by when they started failingread-only

    Read-only. For every red test (modules excluded), finds its onset, the first failure after its last green run, and groups onsets that follow each other within `windowHours`, across suites and folders. Many tests going red within hours usually share one cause: a deploy, a shared module, a page change. Each group lists its tests with ids and the most common errors and targets, with numbers and quoted text normalised. A red test with no green run within `maxRunsPerTest` goes to `onsetUnknown` rather than being guessed. Costs one request per 50 runs per red test; narrow with folder or suite on a …

  • gi_find_testsGhost Inspector: find tests by name, place or stepread-only

    Read-only. Finds tests and returns their ids, which every other tool takes, with suite, folder, importOnly, passing and screenshotCompare. 🔴 `passing` is the functional result only. A test can be green there while its screenshot comparison fails: read `screenshotCompare.passing` for that, or pass `screenshotFailing: true` to list only those. Comparison settings a test leaves at null are inherited from its suite, and `screenshotCompare.enabled` resolves that. `name`, `folder` and `suite` are matched against the listing: case-insensitive substrings, or an exact id for folder and suite. They a…

  • gi_get_testGhost Inspector: read one test, with the token an edit requiresread-only

    Returns a single test's stored definition, identity and current state: steps, startUrl, suite, whether it is a module, its last run, and its `dateUpdated`. 🔴 `dateUpdated` is the concurrency token. gi_update_test requires it as `expectedDateUpdated` and refuses the write if the record moved since you read it. Call this first and pass the value through. Do not discover the token by sending a deliberately wrong one and reading the correct value off the refusal — that defeats the guard, which exists to prove the edit was composed against the definition that is actually stored. The steps return…

  • gi_inventoryGhost Inspector: account overviewread-only

    Read-only tour of the whole account: every folder, the suites inside it, and per-suite counts of passing / failing / module / not-yet-run tests, plus the names of the failing ones. Start here — no other question about this account can be answered without knowing what is in it. Import-only tests (modules: shared steps that other tests import, the equivalent of a function) are counted in their own bucket and never as failures. Marking a test import-only deletes its stored results, so every module looks permanently unrun; folding that into a failure count invents breakage that does not exist and…

  • gi_module_usageGhost Inspector: who imports each moduleread-only

    Answers the one question the API cannot: if I edit this module, which tests break? Builds the reverse index of `execute` steps — for every imported test, its direct importers and its full transitive blast radius through nested chains. Run this BEFORE editing any module. Also surfaces three things that only appear once the index exists: import-only tests nobody imports (dead, or a test that lost its caller and is silently not running); imported tests NOT flagged import-only, which run standalone *and* inside their importers, so an edit changes both paths; and execute steps pointing at ids that…

  • gi_move_suiteGhost Inspector: move a suite to another folder

    Moves a suite, with all of its tests, into another folder. Reversible — unlike everything else on the write path — and the response carries `previousFolder` so the undo is one call. `expectedCurrentFolder` is required: state the folder you believe the suite is in, and the move is refused if it is somewhere else, which is the case where you are about to move the wrong suite. The result is verified by re-reading: the folder must have changed and `testCount` must be identical, since a move should never detach a test. Note that `DELETE /folders/{id}/` does not exist, so a folder left empty by a …

  • gi_move_testGhost Inspector: move a test to another suite

    Moves one test into another suite, steps untouched. Reversible: the response carries `previousSuite`, so the undo is one call. This is also how to retire a test: move it to a suite that has no schedule. Deleting a test is not offered, because Ghost Inspector keeps no version history and no recycle bin. `expectedCurrentSuite` is required: the suite id you believe the test is in, from gi_get_test or gi_find_tests. The move is refused if it is elsewhere. 🔴 A test runs with its suite. If the destination is scheduled, the test starts running on that schedule, unattended; if it submits a form, ea…

  • gi_plan_testGhost Inspector: show what a validation would run, without running itread-only

    Read-only. Returns exactly what gi_validate_test would send: modules inlined, {{variables}} resolved from `variables`, the suite and the organization, and all three submit-guard layers applied. Nothing is executed, only definitions are read: no browser starts, and no organization id is needed. Use it before any validation of a test that touches production. `plan` lists the steps in order, numbered as every other report numbers them. `guard.stoppedAt` is the static cut, where a submit-shaped step became an assertion on its target. `guard.probedClicks` counts the clicks that will be probed in t…

  • gi_propose_repairGhost Inspector: propose a fix without applying oneread-only

    Turns a diagnosis into a concrete argument: what to change, in which test, and the token needed to write it. Read-only — it applies nothing and returns steps for you to validate first. 🔴 This server cannot see the page. It has the definition, the error and the Ghost Inspector contract, so proposals come in two kinds and are never blurred. `applicable` proposals carry a rewritten step and come from rules that hold whatever the page contains — an assertTextPresent with no target always fails, an eval without an explicit return is always undefined. `advisory` ones name a real problem that canno…

  • gi_run_testGhost Inspector: run a stored test for real

    Executes a test exactly as saved and waits for the verdict. Use it to confirm a repair actually worked, or to get a fresh result when the stored one is stale. 🔴 Nothing is truncated here. Unlike gi_validate_test, which runs a throwaway copy and stops before anything can submit, this runs the real test against the real startUrl — in most accounts, production. If the test fills and submits a form, this posts a real record into whatever that form feeds, and nothing here can withdraw it. Because of that, a test that submits is refused unless `confirmSubmit` is set. The check inlines imported mo…

  • gi_screenshot_diffGhost Inspector: where a screenshot changedread-only

    Read-only. Downloads a result's full-size screenshot and a baseline's, compares them pixel by pixel, and returns the changed regions as horizontal bands (rows and columns in the full-size image, largest first), followed by PNG crops of the largest ones: baseline above a red rule, this result below. Look at the crops before gi_accept_screenshot: accepting cannot be undone. `changedShare` is this tool's own pixel count, not Ghost Inspector's `difference`, which uses an unpublished method, so the two will not match. A page that grew or content that moved down shows up as one band covering everyt…

  • gi_screenshot_statusGhost Inspector: screenshot comparison state of a testread-only

    Read-only. The test's screenshot-comparison settings and its latest result's comparison: enabled, passing, the measured difference against the threshold, the current screenshot (`screenshotUrl`) and the difference image (`diffUrl`). Two images are kept apart because they stop being the same one the moment a screenshot is accepted. `comparedAgainst` is the image the latest result was measured against. `currentBaseline` is the one the next run will be compared against: the newest result whose comparison passed. Accepting flips a result to passing, so right after an accept the latest result read…

Show 7 more tools
  • gi_stale_testsGhost Inspector: stale versus genuinely brokenread-only

    Call this BEFORE diagnosing or editing any red test. Splits failures into two piles by comparing the whole `execute` chain's `dateUpdated` against each test's last run. `staleFailures` are red tests whose definition or module chain changed AFTER the failing run. The failure describes a version that no longer exists — a colleague may already have fixed it and the test simply has not run again. Editing on top of one destroys their work, and Ghost Inspector keeps no version history of steps. One level deep is not enough here, because modules nest; the whole chain is walked. `genuineFailures` ha…

  • gi_test_historyGhost Inspector: a test's run history, and when its red beganread-only

    Read-only. Walks a test's results newest first, 50 per page, and returns each run's verdict and failing step (command, error, the selector that resolved), plus `lastPass` and `firstFail`, the oldest failure of the current red streak, which dates a regression. 🔴 Read `horizon` before concluding anything. Ghost Inspector purges old results. `exhausted: true` means retention ended there and nothing older exists. `exhausted: false` means more history exists than was asked for, and `streakMayContinue` says the red streak may have begun earlier: raise `runs`. A run with `passing: null` is in fligh…

  • gi_test_resultGhost Inspector: why is this test redread-only

    Description is built at runtime.

  • gi_update_testGhost Inspector: update a test, behind four guardscan change or delete data

    Replaces a test's steps, renames it, or changes its startUrl. 🔴 Ghost Inspector keeps NO version history of steps and no recycle bin, so this is permanent. Four guards run on every call and none can be turned off. (1) The whole `execute` chain's `dateUpdated` is compared against the test's last run; if anything changed after it, the test is stale and the call is refused, because a fix diagnosed from a failure that describes a deleted version is diagnosed from nothing — and a colleague may already have fixed it. (2) The complete prior definition, credentials removed, is saved to `backupFile` …

  • gi_vacuous_testsGhost Inspector: green tests that prove nothingread-only

    Finds tests that pass while verifying nothing. Green is the dangerous colour: a red test gets investigated, a hollow green one sits there while every report says coverage is fine. Three classes, kept apart because conflating them hides two of them. `executesNothing` runs zero steps — its definition is only `execute` calls into empty modules. `assertsNothing` runs its steps and contains no assertion anywhere in the chain, so it can only fail if a step errors; act on this one first, it is usually the largest. `worthChecking` is a SHORTLIST, not a verdict: their single assertion is the final ste…

  • gi_validate_testGhost Inspector: validate a definition without saving or submitting

    Description is built at runtime.

  • gi_whoamiGhost Inspector: verify credentials and check what this server may doread-only

    Confirms the configured API key works, lists the organizations it can reach, and reports whether writing is enabled. Read-only and safe to call first when diagnosing setup. 🔴 Call this before concluding that this server cannot modify anything. Every tool is registered whether or not its gate is open, so a tool being listed says nothing about whether it will run. `writesEnabled` and `runsEnabled` are the authority — GHOST_INSPECTOR_ALLOW_WRITES and GHOST_INSPECTOR_ALLOW_RUNS. When one is false the operator must set the matching variable and restart this server; it cannot be turned on from a t…

Signals

Stars
0
Forks
0
Open issues
0
Last commit
Sep 28, 2026 (1 month ago)
Last release
Sep 28, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.charliemtnez/ghost-inspector-mcp
Version
0.4.1
Auth
API key
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get Ghost Inspector MCP running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying Ghost Inspector MCP?

CallGet help
Cite this page

Ghost Inspector MCP. Agent Mart. https://agentmart.dev/connectors/charliemtnez-ghost-inspector-mcp (last updated 2026-10-25)