Skip to content

Add the LangChain page, document the stdio MCP server, stop a false claim - #16

Merged
kev1n merged 1 commit into
mainfrom
docs/langchain-and-stdio-mcp
Sep 5, 2026
Merged

Add the LangChain page, document the stdio MCP server, stop a false claim#16
kev1n merged 1 commit into
mainfrom
docs/langchain-and-stdio-mcp

Conversation

@kev1n

@kev1n kev1n commented Sep 5, 2026

Copy link
Copy Markdown
Member

Three fixes to customer docs, each verified against the live gateway or the published package rather than described from memory.

1. getanyapi.com/docs/langchain was a 404, and it cost us a listing

Our open PR against LangChain's own integrations tables (langchain-ai/docs#5886) had to point docs_url at a GitHub README, because their rule prefers a partner documentation URL and ours 404ed.

New page langchain.mdx serves exactly https://getanyapi.com/docs/langchain once this merges.

Every claim on it was verified by installing langchain-anyapi 0.1.0 from PyPI and printing each tool's .name and .args_schema.model_json_schema():

version 0.1.0
anyapi_search_apis | required: ['query'] | props: ['query', 'category', 'platform', 'limit']
anyapi_list_apis   | required: []        | props: ['category']
anyapi_get_api     | required: ['sku_id']| props: ['sku_id']
anyapi_run_api     | required: ['sku_id', 'input'] | props: ['sku_id', 'input', 'fields', 'max_items', 'summary']
anyapi_get_balance | required: []        | props: []

Return shapes, the ANYAPI_API_KEY / api_key= / base_url / timeout / max_retries options, the real async path, and the error payload were read from the package source, which diff -r proves is byte-identical to the published wheel. No billed call was made.

One correction the page makes to the package README: the README's create_agent example needs langchain installed alongside langchain-anyapi, which only depends on langchain-core. The install line here says pip install langchain langchain-anyapi.

2. The local stdio MCP server was undocumented

mcp-server.mdx described only the hosted endpoint. New section Run it locally over stdio covers getanyapi-com/mcp, which forwards to it for clients that cannot speak remote Streamable HTTP.

The npx, Claude Code and Docker recipes are the ones the MCP Registry entry io.github.getanyapi-com/anyapi declares at 0.1.2 (npm anyapi-mcp@0.1.2, runtimeHint: npx, stdio, env ANYAPI_API_KEY; oci ghcr.io/getanyapi-com/mcp:0.1.2, runtimeHint: docker). The claude mcp add form matches the CLI's own --help. Node >=20 and bin name anyapi-mcp are from the npm registry document.

The page notes the image is linux/amd64 only, so it runs under emulation on Apple Silicon and prints a platform warning on startup.

3. One published sentence was false

The note said discovery (list_apis, search_apis, get_api) works without a key. It does not, and has not.

Measured against production, anonymous:

Request Result
initialize HTTP 200
tools/list HTTP 200, 10 tools
tools/call search_apis HTTP 401 unauthorized
tools/call list_apis HTTP 401 unauthorized
tools/call get_api HTTP 401 unauthorized

What is keyless is the handshake and the tool listing, not the discovery tools. The note now says that, and points at the endpoints that really are keyless: GET /catalog and GET /catalog/search both return 200 with no credential, while GET /v1/apis and GET /v1/apis/{sku} return 401.

This documents current behavior and proposes no change to it. Whether to allow keyless tools/call for a discovery allow-list is a product decision, and it is not made here.

Also: q is optional on catalog search

Measured today: ?platform=reddit → 200, ?category=social → 200, bare /catalog/search → 400 "name q, category, or platform". Quickstart now says so and shows a scoped example. The generated API reference and the search_apis accordion already had this right, so neither changed.

Gate

docs.json nav guard: ok (every openapi group carries a pages key)
agent contract guard: ok (docs root is schema-first; universal field claims absent)
success build validation passed
success no broken links found

Not done here, on purpose

  • langchain-ai/docs#5886 is untouched. Its docs_url can only point at the new page once the page is live, which is after this merges.
  • The Tools section of mcp-server.mdx is out of date beyond the one sentence fixed here, and I did not widen the change to cover it. See the review note below.

🤖 Generated with Claude Code

Three fixes, each verified against the live gateway or the published package.

`getanyapi.com/docs/langchain` 404s, so our open PR against LangChain's own
integrations tables (langchain-ai/docs#5886) had to point `docs_url` at a
GitHub README instead of at us. `langchain.mdx` serves that exact URL. Every
tool name, argument and default on it came from installing `langchain-anyapi`
0.1.0 from PyPI and printing each tool's `.name` and
`.args_schema.model_json_schema()`, not from the README.

The MCP page described only the hosted endpoint. `getanyapi-com/mcp` now
publishes a local stdio server that forwards to it, for clients that cannot
speak remote Streamable HTTP. The npx, Claude Code and Docker recipes are the
ones the MCP Registry entry `io.github.getanyapi-com/anyapi` declares at 0.1.2.

The page also told customers that `list_apis`, `search_apis` and `get_api` work
"without a key". They do not, and have not. Measured against production: an
anonymous `initialize` and `tools/list` both return 200, and `tools/call` on
each of those three returns HTTP 401 `unauthorized`. What is keyless is the
handshake and the tool listing. The note now says that, and points at
`GET /catalog` and `GET /catalog/search`, which really are keyless (both 200
with no credential). This documents current behavior and asks for no change to
it.

Quickstart now says `q` is optional on `/catalog/search`. Measured today:
`?platform=reddit` and `?category=social` each return 200, and a bare
`/catalog/search` returns 400 `"name q, category, or platform"`. The generated
API reference already had this right.

Gate: check-docs-nav.sh, check-agent-contract.sh, mint validate, and
mint broken-links all pass.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kev1n

kev1n commented Sep 5, 2026

Copy link
Copy Markdown
Member Author

Review note: things I found and deliberately did not fix

Each of these is outside the contract of this PR. Recording them rather than widening the change.

1. This page documents 8 tools. The server publishes 10. quote_api and read_result are missing from the Tools row and from the accordion. Anonymous tools/list against production returns:

get_api, get_balance, get_request, list_apis, quote_api,
read_result, report_bug, run_api, search_apis, send_feedback

2. Every tool requires a context argument, and no input table on the page mentions it. From the same live tools/list:

get_api      | required: ['sku_id', 'context']
get_balance  | required: ['context']
get_request  | required: ['request_id', 'context']
list_apis    | required: ['context']
quote_api    | required: ['sku_id', 'input', 'context']
read_result  | required: ['result_id', 'context']
report_bug   | required: ['summary', 'context']
run_api      | required: ['sku_id', 'input', 'context']
search_apis  | required: ['context']
send_feedback| required: ['summary', 'context']

A customer building a call from the tables on this page is missing a required field. run_api and read_result also accept an undocumented jq parameter.

I left all of this alone because bringing the section up to date is a real piece of work with product judgment in it: whether quote_api, read_result and jq are meant to be customer-facing is not mine to decide. Worth a ticket.

3. The same false "without a key" claim is published in two more places, both outside this repo. The MCP Registry entry io.github.getanyapi-com/anyapi carries it in its env var descriptions, and getanyapi-com/mcp's README says quote_api needs no key. Both are sourced from getanyapi-com/mcp (server.json and README.md), so they have to be fixed there and re-released.

4. A stale MCP Registry record is still served as active. Searching the registry returns two records under io.github.getanyapi-com/anyapi: version 0.1.0 (isLatest: false, repository.url still getanyapi-com/skills, remotes only) and version 0.1.2 (isLatest: true, correct repo, both packages). Whether the old one can or should be retired, I could not tell.

5. langchain-anyapi requires query on anyapi_search_apis where the gateway does not. The gateway accepts any non-empty combination of q, category and platform; the LangChain tool's schema is required: ['query']. The package README calls this out as a deliberate difference, so the new page documents the tool as it actually behaves and points at anyapi_list_apis for enumerating a category. Flagging in case the divergence was not intended.

6. Disclosure. While checking the URLs in the getanyapi-com/mcp README, a research agent ran the documented POST https://api.getanyapi.com/agent/signup, which returned 200 and minted a free-trial agent key. The response body was discarded and never used. No billed call was made and no money was spent.

@kev1n
kev1n merged commit f909f06 into main Sep 5, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant