Commit 9e21cd0
committed
Resolve tool output-schema references within the schema document only
The client validated `structuredContent` with a jsonschema validator built
on the library's default registry, which retrieves any `$ref` it cannot
resolve locally over the network or filesystem, synchronously, on every
call. The 2026-07-28 spec requires that non-local `$ref`s are not
dereferenced by default and that a schema failing on an unresolved
external reference is rejected rather than treated as permissive.
Build the validator with an empty `referencing.Registry` so references
resolve inside the tool's schema (and the bundled metaschemas) and
nowhere else, and surface an unresolvable reference from `call_tool` as
the documented `RuntimeError` instead of a `referencing` exception.1 parent e7284ed commit 9e21cd0
3 files changed
Lines changed: 43 additions & 8 deletions
File tree
- docs/advanced
- src/mcp/client
- tests/client
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
121 | 121 | | |
122 | 122 | | |
123 | 123 | | |
| 124 | + | |
124 | 125 | | |
125 | 126 | | |
126 | 127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1126 | 1126 | | |
1127 | 1127 | | |
1128 | 1128 | | |
1129 | | - | |
| 1129 | + | |
| 1130 | + | |
1130 | 1131 | | |
1131 | 1132 | | |
1132 | 1133 | | |
| |||
1140 | 1141 | | |
1141 | 1142 | | |
1142 | 1143 | | |
| 1144 | + | |
1143 | 1145 | | |
1144 | 1146 | | |
1145 | 1147 | | |
1146 | 1148 | | |
1147 | 1149 | | |
1148 | 1150 | | |
1149 | 1151 | | |
1150 | | - | |
1151 | | - | |
1152 | | - | |
1153 | | - | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
1154 | 1160 | | |
1155 | 1161 | | |
1156 | 1162 | | |
| |||
1168 | 1174 | | |
1169 | 1175 | | |
1170 | 1176 | | |
| 1177 | + | |
1171 | 1178 | | |
1172 | 1179 | | |
1173 | 1180 | | |
| |||
1177 | 1184 | | |
1178 | 1185 | | |
1179 | 1186 | | |
1180 | | - | |
1181 | | - | |
1182 | | - | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
1183 | 1190 | | |
1184 | 1191 | | |
1185 | 1192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| 14 | + | |
13 | 15 | | |
14 | 16 | | |
15 | 17 | | |
| |||
163 | 165 | | |
164 | 166 | | |
165 | 167 | | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
0 commit comments