Paperboy for LangGraph
Load Paperboy's tools into a LangGraph agent, then add a step that polls get_article until the fact check comes back.
Set up
You will load Paperboy's tools as LangChain tools, with the API key sent as a bearer token, and give them to an agent.
Install LangChain with the mcp extra: pip install "langchain[mcp]". The docs say the langchain.mcp namespace needs 1.4.0 or later and is in beta.
Create an API key in Paperboy Settings and export it as PAPERBOY_API_KEY.
Build a fastmcp Client with the URL https://paperboyseo.com/mcp and auth set to the key. The docs say the string is sent in the Authorization: Bearer header.
Open MCPAdapter(client) with async with, then call await adapter.list_tools().
Pass the tools to create_agent and call agent.ainvoke. On the older package, use MultiServerMCPClient with transport and headers instead.
pip install "langchain[mcp]"
export PAPERBOY_API_KEY=pb_live_YOUR_KEYReplace pb_live_YOUR_KEY with a key from Settings, API keys, and never commit it. The MCP docs list every client we cover.
How to tell it worked
Print the tool names after list_tools() (or get_tools() on the older package). You should see get_sites, suggest_topics, write_article, get_article, check_claims, publish_article, get_performance and get_queries.
How to remove it
Delete the MCPAdapter block (or the paperboy entry in MultiServerMCPClient) from your code and unset PAPERBOY_API_KEY.
What you get
Eight tools, the same engine as the dashboard. Reads are free. A pack is $20 for 100 credits; see how credits work.
get_sitesLists your sites with plan, publishing method and whether Search Console is connected. Every other call starts from a site id.
suggest_topicsReturns the next articles to write, each with the search data that is the reason for it.
write_articleStarts a fact-checked article and returns an id at once. The run takes a few minutes. It does not publish unless you pass publish: true.
get_articleReturns the article's status, its fact-check verdict and every source. Poll it after write_article until it reads published or needs_review.
check_claimsFact checks any public URL or pasted Markdown and returns each cited claim with the sources it was compared against.
publish_articlePublishes an article that passed the fact check to the site's publishing target. It changes the live site, so the agent should ask first.
get_performanceSearch Console clicks, impressions and average position for a site, by day and by article.
get_queriesThe queries a site, or one article, appears for in Search Console. This is where page-two keywords show up.
Try it
Plain requests. The tools each one uses are listed under it.
“Find queries where my site ranks just off page one and suggest three article topics for the best one.”
Uses get_sitesget_queriessuggest_topics
“Write an article on the top topic, then run check_claims on it and list anything that needs a source.”
Uses write_articleget_articlecheck_claims
“If the claim check came back clean, publish the draft, then report how the site is performing.”
Uses check_claimspublish_articleget_performance
Why
LangChain moved its MCP support. The current docs load tools with MCPAdapter from langchain.mcp, and the older langchain-mcp-adapters package is marked no longer actively maintained. Both routes suit a stateless server like Paperboy's, and this page shows both.
The shape that fits a graph is write_article, then a loop on get_article until the status reads published or needs_review, then a human gate before publish_article. The article takes a few minutes, so never wait on one call.
Compare
Same engine, two ways in. Pick the one that fits how you already work.
| Feature | Dashboard | LangGraph | Source |
|---|---|---|---|
| Where you work | paperboyseo.com/app: sites, calendar, fact checks | Low-level orchestration framework for building long-running, stateful AI agents. | LangChain docs: Model Context Protocol (MCP)Read Oct 29, 2026 |
| How it connects | Sign in and paste your site address. The first article is free. | Remote MCP. LangChain's current docs load MCP tools with MCPAdapter from langchain[mcp] (beta, 1.4.0 or later), which reaches an https URL over Streamable HTTP and accepts a bearer token as auth. | LangChain docs: Model Context Protocol (MCP)Read Oct 29, 2026 |
| Does it publish without asking? | Your choice: autopilot, or approve each article by email. | No. write_article defaults to publish: false, and the tool descriptions tell the agent to ask first. | MCP docsPaperboy docs |
| Fact check | Every number and cited sentence is compared with the saved text of its source. An article that fails gets one rewrite, then is held for you. | The same engine and the same check. The verdict comes back to the agent: verified, or held with the reason. | How the check worksPaperboy docs |
| What it costs | Plans from $49 a month per site. The first article is free, no card. | Credits: 12 per article, 1 per topic suggestion, 2 per fact check. $20 buys 100. | CreditsPaperboy docs |
| Search Console | Optional read-only Search Console connection. It picks topics from your impressions and reports clicks per article. | get_performance and get_queries return the same read-only data, by day, by article and by query. | Security and dataPaperboy docs |
Facts about LangGraph come from the pages linked in the Source column, read on the date shown. Tools change their docs, so confirm there if a step does not match.
Honest notes
Quirks of this client that can cost you an afternoon.
LangChain moved its MCP support. The current docs use MCPAdapter in langchain.mcp, and importing it raises a LangChainBetaWarning once per process. The langchain-mcp-adapters README now says the repo is no longer actively maintained. Pick one route per project, because the two have different imports and config shapes.
Both routes suit Paperboy's stateless server. The docs say MCPAdapter tools open the client for each tool call and release it afterward, and the README says MultiServerMCPClient starts a new session for each tool invocation.
In a LangGraph deployment (langgraph dev or Agent Server), build the agent in a graph factory and point langgraph.json at it, for example "agent": "./graph.py:make_graph". Tools from list_tools() stay callable after the adapter context exits. All the examples are async, so use ainvoke.
FAQ
LangChain's current docs use MCPAdapter, and the langchain-mcp-adapters repo says it is no longer actively maintained. Use MCPAdapter for new code and MultiServerMCPClient only if you already depend on it.
With MCPAdapter, pass the key as auth on a fastmcp Client, which the docs say is sent as an Authorization: Bearer header. With MultiServerMCPClient, put it in the headers dict of the connection.
Not with MCPAdapter, which infers Streamable HTTP from an http or https URL string. In MultiServerMCPClient the README lists http (or streamable_http) as the transports that accept headers.
Yes. Pass MCPAdapter an MCPConfig dict, or a ClientGroup when each server needs its own auth. The docs say tools are prefixed with the server key so same-named tools stay distinct.
The tools that read cost nothing. Suggesting topics costs 1 credit, writing a fact-checked article costs 12 credits (refunded if the run fails) and a fact check on its own costs 2 credits. A pack is $20 for 100 credits.
Only if you let it. write_article defaults to publish: false, so a finished article waits for a human, and the tool descriptions tell the agent to ask before publishing. You can also give the agent a read-only key.
Sources
Everything about LangGraph comes from the pages below, read on Oct 29, 2026. Tools change their docs, so check there if a step does not match. If we got something wrong, write to hello@paperboyseo.com.
Keep going
Add the MCP server, ask for a topic, and read the fact check before anything goes live.
claude mcp add --transport http paperboy https://paperboyseo.com/mcp --header "Authorization: Bearer pb_live_..."npx @paperboyseo/cli coming soonPrefer the dashboard? Write my first article free. Prefer to run it yourself? Self-host it (repo coming soon).