Screenshotline’s founder wrote up what it took to add an MCP server to an API that already existed, and it reads as the most useful checklist of the season because it is small. Two tools: screenshot, which returns an image, and read_page, which returns the same render as Markdown. The stdio npm package got built first and is still in the repo, but what shipped is a hosted, stateless endpoint that answers JSON instead of holding an SSE stream open. The reasoning is one sentence: “The question isn’t which is more modern; it’s where the work happens.”
The decision that matters is the one most teams get wrong. Each tool call goes back through the service’s own /take and /extract endpoints over loopback with the caller’s key, so authentication, quota, free-tier fences, metering and rate limits are identical on both surfaces. Call internals directly and “the MCP path would quietly drift into being the cheap way to use the API for free.” Listing tools needs no key, so directories can discover the server. Descriptions say when to use each tool and state their defaults, because a model that does not know a default invents one. And the post admits what is missing: no tool annotations, flagged by a directory’s audit. “Do as I say, not as I did.” The figures are the vendor’s own and modest: a free key is 500 renders a month, and one directory asked $39 to skip review.
The Screenshotline record matches the post’s description of the product almost word for word, consent walls, lazy images, late-rendering SPAs, and Markdown for LLMs. Both catalogued surfaces, the Screenshot API and the screenshotline-com API, are the HTTP endpoints the MCP tools re-enter, which is the design working as intended: there is no separate MCP contract to drift.
The Kin Score is 30.9, thin, with discoverability at 56.7 and access clarity at 42.1 carrying it, and operational transparency at 15.8. Agent Readiness is 25.9, agent-aware, and mcp_server is lit, so the registry-first publishing worked. The unlit dimension that stands out is rate_limit_signal. The post’s whole argument is that rate limits are enforced identically on both surfaces, and an outside agent still cannot read them from the contract. Enforcing a limit and publishing it are different things, and the second is the one an agent can plan around.