ЁЯкк рдзрдбрд╛ 04 тАФ Wire: badge, discovery, calls (protocol рдЖрд╡реГрддреНрддреА 2026-07-28)
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 8 рдкреИрдХреА рдзрдбрд╛ 04 ┬╖ рдорд╛рдЧреЗ: lesson-03-primitives ┬╖ рдкреБрдвреЗ: lesson-05-transports-security
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбреЗ 01тАУ03, рдЖрдгрд┐ рдЦрд░рд╛ рд╕рдВрд╡рд╛рдж, рд╕рдВрджреЗрд╢рд╛-рд╕рдВрджреЗрд╢рд╛рдиреЗ тАФ protocol рдореНрд╣рдгрдЬреЗрдЪ рдЕрд╕рд▓реЗрд▓реА sequence рдЖрдХреГрддреА, рдЖрд╡реГрддреНрддреА 2026-07-28 рдиреБрд╕рд╛рд░ (рд╕рдзреНрдпрд╛рдЪреА; тЭУ рдХрд╛рдп рдЪреНрдпрд╛ рд╢реЗрд╡рдЯрдЪрд╛ box рдХрд╛рдп рдмрджрд▓рд▓реЗ рдЖрдгрд┐ рдХрд╛ рддреЗ рд╕рд╛рдВрдЧрддреЛ).
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рдЦреЛрд▓реАрдд рдЙрдкрдХрд░рдг рдЬреЛрдбрдгреНрдпрд╛рдЪреА рд╕реБрд░реБрд╡рд╛рдд рдкреВрд░реНрд╡реА рдПрдХрд╛ рдЫреЛрдЯреНрдпрд╛ рд╡рд┐рдзреАрдиреЗ рд╡реНрд╣рд╛рдпрдЪреА ("рдирдорд╕реНрдХрд╛рд░, рдореА socket-standard 2025 рдмреЛрд▓рддреЛ"). рдЖрддрд╛ рдирд╛рд╣реА. рдЖрддрд╛ рдкреНрд░рддреНрдпреЗрдХ message рдУрд│рдЦрдкрддреНрд░рд╛рдЪрд╛ badge рдШрд╛рд▓рддреЛ ЁЯкк, рдореНрд╣рдгреВрди рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡рд┐рдзреАрдЪреА рдЧрд░рдЬ рдирд╛рд╣реА:
- ЁЯкк Badge. рдкреНрд░рддреНрдпреЗрдХ request
_metaрдШреЗрдКрди рдпреЗрддреЛ: рдореА рдХреЛрдгрддреА рдЖрд╡реГрддреНрддреА рдмреЛрд▓рддреЛ (io.modelcontextprotocol/protocolVersion), рдореА рдХреЛрдг рдЖрд╣реЗ (тАж/clientInfo) рдЖрдгрд┐ рдореА рдХрд╛рдп рдХрд░реВ рд╢рдХрддреЛ (тАж/clientCapabilities). рдЙрдкрдХрд░рдг рдкреНрд░рддреНрдпреЗрдХ message рд╡рд░рдЪрд╛ badge рддрдкрд╛рд╕рддреЗ рдЖрдгрд┐ рдЙрддреНрддрд░ рджреЗрддреЗ тАФ рдХрд┐рдВрд╡рд╛ рддреА рдЖрд╡реГрддреНрддреА рдмреЛрд▓рдд рдирд╕реЗрд▓ рддрд░ рддрд╕реЗ рд╕рд╛рдВрдЧрддреЗ (UnsupportedProtocolVersion, рдЖрдгрд┐ рддреЗ рдмреЛрд▓рддреЗ рддреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪреА рдпрд╛рджреА). рдРрдЪреНрдЫрд┐рдХ рдкрдг рд╕рднреНрдп: рдУрд│рдЦ (server/discover) тАФ "рддреВ рдХреЛрдг рдЖрд╣реЗрд╕, рдХреЛрдгрддреА рднрд╛рд╖рд╛ рдмреЛрд▓рддреЛрд╕, рдХреЛрдгрддреЗ рдХрдкреНрдкреЗ рднрд░рддреЛрд╕?" рдЖрдкрд▓рд╛ client рдиреЗрд╣рдореА рд╡рд┐рдЪрд╛рд░рддреЛ; client рд╣реЗ рдЯрд╛рд│реВрди рдереЗрдЯ рдмреЛрд▓рд╛рдпрд▓рд╛ рд╕реБрд░реБрд╡рд╛рддрд╣реА рдХрд░реВ рд╢рдХрддреЛ. - ЁЯУЛ "рддреВ рдХрд╛рдп рджреЗрддреЛрд╕?" (
tools/list) тАФ рдЙрдкрдХрд░рдг рдЖрдкрд▓рд╛ рдХрдкреНрдкрд╛ рд╡рд╛рдЪреВрди рджрд╛рдЦрд╡рддреЗ: рдирд╛рд╡реЗ, рд╡рд░реНрдгрдиреЗ, input forms. - ЁЯз░ "рддреЗ рдХрд╛рдо рдХрд░." (
tools/callрдирд╛рд╡ + arguments рд╕рд╣) тАФ рдЙрдкрдХрд░рдг рдЦрд░реЗ рдХрд╛рдо рдХрд░рддреЗ рдЖрдгрд┐ рдмрд╛рдХрд╛рд╕рд╛рдареА content рдкрд░рдд рджреЗрддреЗ.
рдмрд╕реНрд╕тАж рд╣реАрдЪ рд╕рдВрдкреВрд░реНрдг рднрд╛рд╖рд╛. рддреАрди рдХреНрд░рд┐рдпрд╛рдкрджреЗ рдЖрдгрд┐ рдПрдХ badge. рдкреНрд░рддреНрдпреЗрдХ message
JSON-RPC 2.0 рдЕрд╕рддреЛ: requests рдордзреНрдпреЗ id рдЕрд╕рддреЛ (рдЙрддреНрддрд░рд╛рдВрдиреА рддреЛ рдкрд░рдд рд╕рд╛рдВрдЧрд╛рдпрд▓рд╛рдЪ рд╣рд╡рд╛
тАФ рддреНрдпрд╛рд╡рд░реВрдирдЪ socket рдкреНрд░рд╢реНрдирд╛рдЪреА рдЙрддреНрддрд░рд╛рд╢реА рдЬреЛрдбрдгреА рдХрд░рддреЗ), notifications рдордзреНрдпреЗ рдирд╕рддреЛ
(рдкрд╛рдард╡рд╛ рдЖрдгрд┐ рд╡рд┐рд╕рд░рд╛ тАФ рдЖрдкрд▓рд╛ server рддреНрдпрд╛рдВрдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рддреЛ), errors code рд╕рд╣ error
рдореНрд╣рдгреВрди рдпреЗрддрд╛рдд. рдкреНрд░рддреНрдпреЗрдХ result resultType: "complete" рд╕рд╛рдВрдЧрддреЛ рдЖрдгрд┐ server рдЪрд╛
рд╕реНрд╡рддрдГрдЪрд╛ badge (_meta тЖТ serverInfo) рдШреЗрдКрди рдпреЗрддреЛ.
ЁЯЧ║я╕П рдЖрдХреГрддреА тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдЧрд│реАрдХрдбреЗ рджрд┐рд╕рдгрд╛рд░рд╛ рдХреНрд░рдо
sequenceDiagram
participant H as ЁЯФМ client (in the host)
participant S as ЁЯФм server
H->>S: 1 server/discover {_meta: protocolVersion, clientInfo, clientCapabilities} тАФ optional
S-->>H: 2 {resultType, supportedVersions: ["2026-07-28"], capabilities: {tools}, _meta: {serverInfo}}
H->>S: 3 tools/list {_meta: тАжthe same badge, every time}
S-->>H: 4 {resultType, tools: [{name, description, inputSchema}, тАж], ttlMs}
H->>S: 5 tools/call {name: "lookup_grade", arguments: {student: "katrina"}, _meta: тАж}
S-->>H: 6 {resultType, content: [{type: "text", text: "Katrina (3A) has grade A+."}], isError: false}
Note over H,S: three verbs and a badge тАФ that's the protocol ЁЯкк (no handshake since 2026-07-28)
тЭУ рдХрд╛рдп
- JSON-RPC 2.0 рдЪреЗ рдЖрдХрд╛рд░ (рдЖрдкрд▓реНрдпрд╛ demo output рдордзреНрдпреЗ рд╕рдЧрд│реЗ рджрд┐рд╕рддрд╛рдд):
- request:
{"jsonrpc":"2.0","id":N,"method":"тАж","params":{тАж, "_meta":{тАж}}} - response:
{"jsonrpc":"2.0","id":N,"result":{"resultType":"complete", тАж}}(рддреЛрдЪ id!) - error:
{"jsonrpc":"2.0","id":N,"error":{"code":тАж,"message":тАж,"data":тАж}} - notification:
idрдирд╛рд╣реА тЖТ рдХрдзреАрдЪ response рдирд╛рд╣реА.
- request:
- Version negotiation рдкреНрд░рддреНрдпреЗрдХ request рд╡рд░ рд╣реЛрддреЗ: badge рдПрдХрд╛ рдЖрд╡реГрддреНрддреАрдЪреЗ рдирд╛рд╡
рд╕рд╛рдВрдЧрддреЛ (рдЗрдереЗ
2026-07-28); рддреА рди рдмреЛрд▓рдгрд╛рд░рд╛ serverdata.supported: [...]рд╕рд╣-32022 Unsupported protocol versionрдЕрд╕реЗ рдЙрддреНрддрд░ рджреЗрддреЛ, рдЖрдгрд┐ client рддреНрдпрд╛рдВрдкреИрдХреА рдПрдХрд╛ рдЖрд╡реГрддреНрддреАрдиреЗ рдкреБрдиреНрд╣рд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ. Session рдирд╛рд╣реА, requests рдордзреНрдпреЗ рддреБрдордЪреА рдХреЛрдгрддреАрд╣реА рдЖрдард╡рдг рдирд╛рд╣реА тАФ рдореНрд╣рдгреВрдирдЪ load balancer рдорд╛рдЧреАрд▓ рдХреЛрдгрддрд╛рд╣реА server instance рдХреЛрдгрддреНрдпрд╛рд╣реА request рд▓рд╛ рдЙрддреНрддрд░ рджреЗрдК рд╢рдХрддреЛ. - Capabilities = рдХрдкреНрдкреНрдпрд╛рдВрдЪреА рдпрд╛рджреА (L03), рдЬреНрдпрд╛рдВрдЪреЗ рдЙрддреНрддрд░
server/discoverрджреЗрддреЛ: рдЖрдкрд▓рд╛ server{"tools": {}}рдореНрд╣рдгрддреЛ. Clients рдЖрдкрд▓реНрдпрд╛ badge рдордзреНрдпреЗ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЬрд╛рд╣реАрд░ рдХрд░рддрд╛рдд тАФ рд╣реЗ рджреЛрдиреНрд╣реА рдмрд╛рдЬреВрдВрдиреА рд╣реЛрддреЗ. - Results рдордзреНрдпреЗ рдиреЗрд╣рдореА
resultTypeрдЕрд╕рддреЛ тАФ"complete", рдХрд┐рдВрд╡рд╛ server рд▓рд╛ рдЖрдзреА host рдХрдбреВрди рдХрд╛рд╣реАрддрд░реА рд╣рд╡реЗ рдЕрд╕реЗрд▓ рддреЗрд╡реНрд╣рд╛"input_required"(server рдиреЗ рд╕реБрд░реВ рдХреЗрд▓реЗрд▓реНрдпрд╛ sampling/elicitation requests рдЪреА рдЬрд╛рдЧрд╛ рдШреЗрдгрд╛рд░реА multi-round-trip рдкрджреНрдзрдд) тАФ рдЖрдгрд┐ рдмрд╣реБрдзрд╛_meta.serverInfo. List results рдордзреНрдпреЗttlMs/cacheScopeрдЬреЛрдбрд▓реЗ рдЬрд╛рддрд╛рдд, рдореНрд╣рдгрдЬреЗ hosts рдХрдкреНрдкрд╛ cache рдХрд░реВ рд╢рдХрддрд╛рдд. - Tool results рдореНрд╣рдгрдЬреЗ content arrays (
{"type":"text",тАж}тАФ images рдЖрдгрд┐ рдЗрддрд░рд╣реА рдЖрд╣реЗрдд) рдЖрдгрд┐isErrorтАФ tool рдЕрдкрдпрд╢ рдореНрд╣рдгрдЬреЗ model рдиреЗ рдкреНрд░рддрд┐рд╕рд╛рдж рджреНрдпрд╛рд╡рд╛ рдЕрд╕рд╛ data, protocol crash рдирд╡реНрд╣реЗ. рдЕрдЬреНрдЮрд╛рдд tool рдирд╛рд╡ рдорд╛рддреНрд░ protocol error рдЕрд╕рддреЛ (-32602). school_server.py рдордзреАрд▓tools/callhandler рдкрд╛рд╣рд╛: рджреЛрдиреНрд╣реА рдкреНрд░рдХрд╛рд░ рддрд┐рдереЗ рдЖрд╣реЗрдд. - рдЗрддрд░ рдХрдкреНрдкреНрдпрд╛рдВрд╕рд╛рдареА рдЖрдгрдЦреА verbs рдЖрд╣реЗрдд (
resources/list,prompts/get, тАж) рдЖрдгрд┐ рдмрджрд▓рд╛рдВрдЪреНрдпрд╛ notifications рд╕рд╛рдареАрд╣реА (subscriptions/listen) тАФ рддреЗрдЪ рд╡реНрдпрд╛рдХрд░рдг, рдЧрд░рдЬ рд▓рд╛рдЧреЗрд▓ рддреЗрд╡реНрд╣рд╛ рд╢рд┐рдХрд╛.
тП│ рдХрд╛рдп рдмрджрд▓рд▓реЗ, рдЖрдгрд┐ рдЬреБрдиреА рдкрджреНрдзрдд рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдЬреВрдирд╣реА рдХрд╛ рднреЗрдЯреЗрд▓. рдЖрд╡реГрддреНрддреА 2025-11-25 рдкрд░реНрдпрдВрдд рдкреНрд░рддреНрдпреЗрдХ session handshake рдиреЗ рд╕реБрд░реВ рд╡реНрд╣рд╛рдпрдЪреЗ тАФ
initializeтЖТnotifications/initializedтАФ рдЖрдгрд┐ server рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛рдпрдЪрд╛ (рдПрдХ session; HTTP рд╡рд░Mcp-Session-Id). рдЖрд╡реГрддреНрддреА 2026-07-28 рдиреЗ рддреЗ рдирд┐рд╡реГрддреНрдд рдХреЗрд▓реЗ: requests рд╕реНрд╡рддрдГрдЪреЗ рд╡рд░реНрдгрди рд╕реНрд╡рддрдГ рдХрд░рддрд╛рдд, sessions рдЧреЗрд▓реЗ, рдЖрдгрд┐server/discoverрд╣рд╛ рдЖрдзреАрдЪ рд╡рд┐рдЪрд╛рд░рдгреНрдпрд╛рдЪрд╛ рдРрдЪреНрдЫрд┐рдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рдЬреБрдиреЗ servers рдЕрдЬреВрдирд╣реА handshake рдЕрдкреЗрдХреНрд╖рд┐рдд рдзрд░рддрд╛рдд; рдЖрдкрд▓рд╛ client рдореБрджреНрджрд╛рдо рдлрдХреНрдд рдЖрдзреБрдирд┐рдХ рдЖрд╡реГрддреНрддреА рдмреЛрд▓рддреЛ, рдЖрдгрд┐ рдЖрдкрд▓рд╛ server рдЬреБрдиреНрдпрд╛initializeрд▓рд╛-32022рдЖрдгрд┐ рддреЛ рдмреЛрд▓рддреЛ рддреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рджреЗрдКрди рдЙрддреНрддрд░ рджреЗрддреЛ тАФ рдЬреБрдиреНрдпрд╛ client рд╢реА рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд░рд╛рд╣рдгреНрдпрд╛рдЪрд╛ spec рдиреЗ рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реЗрд▓рд╛ рдорд╛рд░реНрдЧ.
ЁЯдФ рдХрд╛
рдПрдХрджрд╛ рддреБрдореНрд╣реА wire рд╡рд╛рдЪреВ рд╢рдХрд▓рд╛рдд рдХреА MCP debugging рдЕрдВрджрд╛рдЬрдкрдВрдЪреЗ рди рд░рд╛рд╣рддрд╛ k8s рдЪреНрдпрд╛ рдзрдбрд╛ 16
рд╕рд╛рд░рдЦреЗ triage рдмрдирддреЗ: рдкрд╣рд┐рд▓реНрдпрд╛рдЪ request рд╡рд░ -32022? (version mismatch тАФ badge рдиреЗ
server рди рдмреЛрд▓рдгрд╛рд▒реНрдпрд╛ рдЖрд╡реГрддреНрддреАрдЪреЗ рдирд╛рд╡ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ.) Tool рдХрдзреАрдЪ call рдЭрд╛рд▓рд╛ рдирд╛рд╣реА? (рд╡рд╛рдИрдЯ
рд╡рд░реНрдгрди тАФ model рд▓рд╛ рддреБрдордЪрд╛ рдХрдкреНрдкрд╛ рдиреАрдЯ рджрд┐рд╕рдд рдирд╛рд╣реА, L03.) Call рдЕрдбрдХрддреЛ? (id mismatch рдХрд┐рдВрд╡рд╛
server рдореЗрд▓рд╛ тАФ stderr рддрдкрд╛рд╕рд╛.) "MCP рдЪрд╛рд▓рдд рдирд╛рд╣реА" рдкреИрдХреА рдирд╡реНрд╡рдж рдЯрдХреНрдХреЗ рдкреНрд░рдХрд░рдгреЗ рддреБрдореНрд╣рд╛рд▓рд╛
рдЖрддрд╛ рддреЛрдВрдбрдкрд╛рда рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд╣рд╛ messages рдордзреНрдпреЗ рджрд┐рд╕рддрд╛рдд.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ тАФ рдЖрдХреГрддреА, live
python3 client/mini_client.py
рдпрд╛ рдзрдбреНрдпрд╛рдЪреА sequence рдЖрдХреГрддреА output рд╢реЗрдЬрд╛рд░реА рдареЗрд╡рд╛: messages 1тАУ6, рдХреНрд░рдорд╛рдиреЗ, рдЦрд░реЗ. рдордЧ
рдЭрдЯрдкрдЯ рдкреНрд░рд╢реНрди: рдкреНрд░рддреНрдпреЗрдХ тЖТ рдУрд│реАрд╡рд░ рдХреЛрдгрддреЗ field рдЕрд╕рддреЗ? (_meta badge.) рдЖрддрд╛ рдореБрджреНрджрд╛рдо
рдореЛрдбрд╛ тАФ mini_client.py рдордзреАрд▓ BADGE рдЪреА META + "protocolVersion" рдУрд│ comment out
рдХрд░рд╛, рдкреБрдиреНрд╣рд╛ рдЪрд╛рд▓рд╡рд╛, рдЖрдгрд┐ server рдЪрд╛ рдирдХрд╛рд░ рд╡рд╛рдЪрд╛: -32022, рддреЛ рдмреЛрд▓рддреЛ рддреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╕рд╣.
рддреА рдкрд░рдд рд▓рд╛рд╡рд╛, --drive рд╕рд╣ рдЪрд╛рд▓рд╡рд╛, lookup_grade {"student":"nobody"} call рдХрд░рд╛ тАФ
wire рдордзреНрдпреЗ рдирдореНрд░ isError рдЙрддреНрддрд░ рд╢реЛрдзрд╛; рдордЧ рджреБрд╕рд▒реНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ error рд╕рд╛рдареА
fly_to_moon {}.
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
Scripted run рдиреЗрдордХреНрдпрд╛ рдпрд╛рдЪ рдХреНрд░рдорд╛рдиреЗ рд╕рд╣рд╛ messages рджрд╛рдЦрд╡рддреЛ: server/discover тЖТ рддреНрдпрд╛рдЪрд╛ result (supportedVersions, capabilities, _meta.serverInfo); tools/list тЖТ {resultType, tools:[тАж]}; tools/call тЖТ {resultType, content:[тАж], isError:false}. рдкреНрд░рддреНрдпреЗрдХ тЖТ рдУрд│реАрд╡рд░ io.modelcontextprotocol/protocolVersion: "2026-07-28" рдЕрд╕рд▓реЗрд▓рд╛ _meta badge рдЕрд╕рддреЛ. BADGE рдордзреВрди protocolVersion рдУрд│ рдХрд╛рдврд╛ рдЖрдгрд┐ рдкрд╣рд┐рд▓реЗ рдЙрддреНрддрд░ supported: ["2026-07-28"] рдЪреА рдпрд╛рджреА рджреЗрдгрд╛рд░реЗ error -32022 Unsupported protocol version рдмрдирддреЗ.
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
рддреБрдореНрд╣реА рд╕рдзреНрдпрд╛рдЪреЗ MCP lifecycle рдбреЛрд│реНрдпрд╛рдВрдиреА рд╡рд╛рдЪреВ рд╢рдХрддрд╛: рддреАрди рдХреНрд░рд┐рдпрд╛рдкрджреЗ, рдкреНрд░рддреНрдпреЗрдХ request рд╡рд░ badge, рдкреНрд░рддреНрдпреЗрдХ result рд╡рд░ resultType, рдЖрдгрд┐ рддреБрдореНрд╣реА рдШрдбрд╡реВ рд╢рдХрддрд╛ рд╡ рдЬреНрдпрд╛рддреВрди рд╕рд╛рд╡рд░реВ рд╢рдХрддрд╛ рдЕрд╕рд╛ version error.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
initializeрд╢реЛрдзрдгреЗ тАФ 2026-07-28 рдкрд╛рд╕реВрди рддреЛ рдирд╛рд╣реА; рддреБрдордЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ request рд▓рд╛-32022рдиреЗ рдЙрддреНрддрд░ рджреЗрдгрд╛рд░рд╛ server рддреЛ рдХреЛрдгрддреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛ рдмреЛрд▓рддреЛ рддреЗ рд╕рд╛рдВрдЧрдд рдЕрд╕рддреЛ- JSON-RPC
idрдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рдгреЗ тАФ рдЙрддреНрддрд░рд╛рдЪреА рдЬреЛрдбрдгреА id рдиреЗ рд╣реЛрддреЗ; retry рд▓рд╛ рдирд╡рд╛ id рдорд┐рд│рд╛рдпрд▓рд╛рдЪ рд╣рд╡рд╛ isError: trueрд▓рд╛ protocol рдЕрдкрдпрд╢ рдорд╛рдирдгреЗ тАФ рддреЛ tool рдЪреА рддрдХреНрд░рд╛рд░ рдШреЗрдКрди рдпреЗрдгрд╛рд░рд╛ рд╕рд╛рдорд╛рдиреНрдп result рдЖрд╣реЗ, model рд╕рд╛рдареА
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: version negotiation рдЖрддрд╛ рдкреНрд░рддреНрдпреЗрдХ request рд╡рд░ рд╣реЛрддреЗ, рддреНрдпрд╛рдореБрд│реЗрдЪ load balancer рдорд╛рдЧреАрд▓ рдХреЛрдгрддрд╛рд╣реА server instance рдХреЛрдгрддреНрдпрд╛рд╣реА request рд▓рд╛ рд╕рд╛рдорд╛рдпрд┐рдХ session store рд╢рд┐рд╡рд╛рдп рдЙрддреНрддрд░ рджреЗрдК рд╢рдХрддреЛ. Server рдмрд╛рдЬреВрд▓рд╛ badge (
clientInfo, version) log рдХрд░рд╛ тАФ debugging рд╕рд╛рдареА рддреЛ рддреБрдордЪрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдзрд╛рдЧрд╛ рдЖрд╣реЗ.
тПня╕П рдкреБрдвреЗ
Messages рдХрд╕реЗ рдкреНрд░рд╡рд╛рд╕ рдХрд░рддрд╛рдд (stdio рд╡рд┐рд░реБрджреНрдз Streamable HTTP) тАФ рдЖрдгрд┐ рдХрдзреАрдЪ рди рдЯрд╛рд│рд╛рдпрдЪрд╛ security рдзрдбрд╛: transports рдЖрдгрд┐ рд╡рд┐рд╢реНрд╡рд╛рд╕.
git checkout lesson-05-transports-security