mcp-connector changedagents-and-tools/mcp-connector
Nearest release: v2.1.304, published under an hour after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+100added
Lines−58removed
From line
576
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits32to this page, all time
The whole hunk
from line 576, old and new numbered
/
from line 576
576576
577577<CodeGroup>
578578 ```bash cURL
579 BODY='{
580 "model": "claude-opus-5-5",
581 "max_tokens": 1024,
582 "mcp_servers": [
583 {
584 "type": "url",
585 "url": "https://example-server.modelcontextprotocol.io/sse",
586 "name": "example-mcp",
587 "authorization_token": "YOUR_TOKEN"
588 }
589 ],
590 "tools": [
591 {
592 "type": "mcp_toolset",
593 "mcp_server_name": "example-mcp"
594 }
595 ],
596 "messages": [
597 {
598 "role": "user",
599 "content": "What tools do you have available?"
600 }
601 ]
602 }'
603
604579 # First request: the toolset isn't pinned, so the API asks the server for
605580 # its tools and the response starts with an mcp_tool_listing block.
606 # tee shows the response on stderr while the variable captures it.
607 FIRST=$(curl -sS https://api.anthropic.com/v1/messages \
581 curl https://api.anthropic.com/v1/messages \
608582 -H "content-type: application/json" \
609583 -H "x-api-key: $ANTHROPIC_API_KEY" \
610584 -H "anthropic-version: 2023-06-01" \
611585 -H "anthropic-beta: mcp-client-2026-09-15" \
612 -d "$BODY" | tee /dev/stderr)
586 -d '{
587 "model": "claude-opus-5-5",
588 "max_tokens": 1024,
589 "mcp_servers": [
590 {
591 "type": "url",
592 "url": "https://example-server.modelcontextprotocol.io/sse",
593 "name": "example-mcp",
594 "authorization_token": "YOUR_TOKEN"
595 }
596 ],
597 "tools": [
598 {
599 "type": "mcp_toolset",
600 "mcp_server_name": "example-mcp"
601 }
602 ],
603 "messages": [
604 {
605 "role": "user",
606 "content": "What tools do you have available?"
607 }
608 ]
609 }'
613610
614611 # Pin the list: copy the block's tools into the toolset. The API uses
615 # exactly these entries and doesn't ask the server again.
616 TOOLS=$(jq '.content[] | select(.type == "mcp_tool_listing") | .tools' \
617 <<<"$FIRST")
618 PINNED=$(jq --argjson tools "$TOOLS" '.tools[0].tools = $tools' <<<"$BODY")
619
620 # With a pinned toolset, the response has no mcp_tool_listing block.
612 # exactly these entries and doesn't ask the server again, so the response
613 # has no mcp_tool_listing block.
621614 curl https://api.anthropic.com/v1/messages \
622615 -H "content-type: application/json" \
623616 -H "x-api-key: $ANTHROPIC_API_KEY" \
624617 -H "anthropic-version: 2023-06-01" \
625618 -H "anthropic-beta: mcp-client-2026-09-15" \
626 -d "$PINNED"
619 -d '{
620 "model": "claude-opus-5-5",
621 "max_tokens": 1024,
622 "mcp_servers": [
623 {
624 "type": "url",
625 "url": "https://example-server.modelcontextprotocol.io/sse",
626 "name": "example-mcp",
627 "authorization_token": "YOUR_TOKEN"
628 }
629 ],
630 "tools": [
631 {
632 "type": "mcp_toolset",
633 "mcp_server_name": "example-mcp",
634 "tools": [
635 {
636 "name": "echo",
637 "description": "Returns the text it receives.",
638 "input_schema": {
639 "type": "object",
640 "properties": { "text": { "type": "string" } },
641 "required": ["text"]
642 }
643 }
644 ]
645 }
646 ],
647 "messages": [
648 {
649 "role": "user",
650 "content": "What tools do you have available?"
651 }
652 ]
653 }'
627654 ```
628655
629656 ```bash CLI
630 request=$(cat <<'YAML'
657 # First request: the toolset isn't pinned, so the API asks the server for
658 # its tools and the response starts with an mcp_tool_listing block.
659 ant beta:messages create --beta mcp-client-2026-09-15 <<'YAML'
631660 model: claude-opus-5-5
632661 max_tokens: 1024
633662 mcp_servers:
from line 671
642671 - role: user
643672 content: What tools do you have available?
644673 YAML
645 )
646674
647 # First request: the toolset isn't pinned, so the API asks the server for
648 # its tools and the response starts with an mcp_tool_listing block.
649 # tee shows the response on stderr while the variable captures it.
650 first=$(ant beta:messages create --beta mcp-client-2026-09-15 --format json \
651 <<<"$request" | tee /dev/stderr)
652 tools=$(jq -c '.content[] | select(.type == "mcp_tool_listing") | .tools' \
653 <<<"$first")
654
655 # Pin the list: copy the block's tools into the toolset. The --tool flag
656 # replaces the body's tools array. The API uses exactly these entries and
657 # doesn't ask the server again, so the response has no mcp_tool_listing block.
658 ant beta:messages create --beta mcp-client-2026-09-15 \
659 --tool "{type: mcp_toolset, mcp_server_name: example-mcp, tools: $tools}" \
660 <<<"$request"
675 # Pin the list: copy the block's tools into the toolset. The API uses
676 # exactly these entries and doesn't ask the server again, so the response
677 # has no mcp_tool_listing block.
678 ant beta:messages create --beta mcp-client-2026-09-15 <<'YAML'
679 model: claude-opus-5-5
680 max_tokens: 1024
681 mcp_servers:
682 - type: url
683 url: https://example-server.modelcontextprotocol.io/sse
684 name: example-mcp
685 authorization_token: YOUR_TOKEN
686 tools:
687 - type: mcp_toolset
688 mcp_server_name: example-mcp
689 tools:
690 - name: echo
691 description: Returns the text it receives.
692 input_schema:
693 type: object
694 properties:
695 text:
696 type: string
697 required:
698 - text
699 messages:
700 - role: user
701 content: What tools do you have available?
702 YAML
661703 ```
662704
663705 ```python Python
No line in this hunk matches that.