Skip to content

feat: Tell Claude users to add their own server as a custom connector - #1595

Merged
jirispilka merged 8 commits into
masterfrom
claude/focused-dirac-p46xdb
Oct 16, 2026
Merged

jirispilka merged 8 commits into
masterfrom
claude/focused-dirac-p46xdb

Conversation

@jirispilka

@jirispilka jirispilka commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Why

Closes #1599. Follow-up to #1533. Jan asked in #1533 (comment) to make the remedy explicit: create a new configuration and add it to your agent. Agreed:

  • generic wording that says "agent" rather than "MCP client";
  • a Claude variant when the connector URL carries ?client=claude, which is how the Claude directory connector URL ends.

What changed

  • Before: … To use another Actor, set up your own Apify MCP server at https://mcp.apify.com.
  • Now: … create your own Apify MCP server configuration at https://mcp.apify.com and add it to your agent.
  • With ?client=claude: … and add it to Claude as a custom connector. This variant appears only in tool descriptions and the instructions. Tool results keep the neutral sentence on every client: the client knows who it is, and this keeps ?client= out of tool dispatch and tool args.

Proof it works

Check Result
Tool names 21 (default) / 23 (Apps), identical with and without client=claude
inputSchema, outputSchema, annotations, title, _meta identical for every tool with and without client=claude
Descriptions and instructions identical except the remedy sentence
Instructions remedy Claude sentence with client=claude; generic without client and with client=claude-code
search-actors / search-actors-widget descriptions same split
search-actors result footer neutral sentence in both client=claude and client=cursor sessions
fetch-actor-details for apify/web-scraper This Actor is not exposed as a tool … with the neutral sentence in both sessions
Pinned 2025-11-25 and 2026-07-28 with client=claude Claude sentence once in the instructions and the search-actors description, neutral and old wording absent
?ui=apps&client=claude Claude sentence once in each of search-actors and search-actors-widget descriptions and in the instructions
fetch-actor-details for apify/rag-web-browser (served as a tool) no caveat
  • Default tools (?client=claude and ?client=claude&ui=true, which include call-actor): tools/list and instructions byte-identical to a master build, no own-server text.
  • stdio (node dist/stdio.js --tools <same selection>, protocol 2025-11-25, 21 tools): generic sentence in the instructions.

The tip caveat is covered by mocked unit tests only. A live probe found no recent RAG Web Browser run with a TIP record, and one fresh run did not write one either.

AI-assisted (Claude Code): code, tests, mcpc probes and this description. A separate Claude Code review pass found no bugs; its test and comment additions are in the last commit.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ChBz93feLbm26jESmnDTtM

https://claude.ai/code/session_011QiQRhqm3wKyv6KFLncAqG

Sessions that cannot run arbitrary Actors ended their caveat with "set up
your own Apify MCP server at https://mcp.apify.com". It now reads "create
your own Apify MCP server configuration at https://mcp.apify.com and add it
to your MCP client", or "... add it to Claude as a custom connector" when
the connector URL carries ?client=claude.

getOwnServerRemedy() picks the wording. The existing clientParam option is
threaded to tool descriptions (tools/list), server instructions, and tool
calls (sync, task, and direct Actor tools) so all five caveat sites agree.
Sessions with a run tool render unchanged text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ChBz93feLbm26jESmnDTtM
Also note in the clientParam docs that it now picks tool wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ChBz93feLbm26jESmnDTtM
…g test

Each site takes its wording from getOwnServerRemedy(), so one test of the
helper covers the text. Also drops doc and formatting churn on pass-through
params.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ChBz93feLbm26jESmnDTtM
Checks the legacy and stateless paths render the Claude wording in the
search-actors description and the instructions when clientParam is
'claude'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011QiQRhqm3wKyv6KFLncAqG
Threads clientParam through task mode, the direct Actor tool dispatch and
the executor's tip caveat; each step could be dropped with all tests
green. Also says in three comments that clientParam now picks wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011QiQRhqm3wKyv6KFLncAqG
…ions

Tool results use the neutral "add it to your agent" sentence; only
tools/list descriptions and the instructions switch on ?client=claude.
Drops the clientParam plumbing through tool dispatch, InternalToolArgs
and ActorExecutionParams. Adds isClaudeClient so the literal lives once.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@jirispilka
jirispilka marked this pull request as ready for review October 16, 2026 09:01
@apify-service-account apify-service-account added the tested Temporary label used only programatically for some analytics. label Oct 16, 2026
@apify-service-account apify-service-account added the t-ai Issues owned by the AI team. label Oct 16, 2026

@vojtechj-apify vojtechj-apify left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good!

@jirispilka
jirispilka merged commit fea9a33 into master Oct 16, 2026
25 of 28 checks passed
@jirispilka
jirispilka deleted the claude/focused-dirac-p46xdb branch October 16, 2026 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-ai Issues owned by the AI team. tested Temporary label used only programatically for some analytics.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Say how to add a new server configuration in the run-limitation text

4 participants