ErrLookup › PrefectHQ/fastmcp
PrefectHQ/fastmcp
🚀 The fast, Pythonic way to build MCP servers and clients. · Python · 282 source files
Analyzed at 1f02114297 on 2026-08-29. 492 documented errors.
| Code / Message | Type | Severity | Tags |
|---|---|---|---|
| module {__name__!r} has no attribute {name!r} | exception | error | python, attributeerror, lazy-import |
| Cannot resolve tool reference: {fn!r} | exception | error | python, valueerror, tool-registration |
| Cannot specify both a name as first argument and as keyword | exception | error | python, typeerror, decorator-usage |
| First argument to @{decorator_name} must be a function, stri | exception | error | python, typeerror, decorator-usage |
| Cannot determine tool name for {fn!r} | exception | error | python, valueerror, tool-registration |
| Approval requires prefab-ui. Install with: pip install 'fast | exception | error | python, importerror, optional-dependency |
| Choice requires prefab-ui. Install with: pip install 'fastmc | exception | error | python, importerror, optional-dependency |
| FileUpload requires prefab-ui. Install with: pip install 'fa | exception | error | python, importerror, optional-dependency |
| File {name!r} not found. Available: {available} | exception | error | python, valueerror, file-not-found, session-scope |
| File {f.get('name', '?')!r} exceeds max size ({_format_size( | validation | error | python, valueerror, file-upload, size-limit |
| FormInput requires prefab-ui. Install with: pip install 'fas | exception | error | dependency, optional-extra, import-error, prefab-ui |
| GenerativeUI requires prefab-ui. Install with: pip install ' | exception | error | dependency, optional-extra, import-error, prefab-ui |
| FastMCP CLI support is not installed. Install `fastmcp` or ` | exception | error | dependency, cli, optional-extra, install |
| app-bridge.js not found in ext-apps tarball | exception | error | packaging, tarball, upstream-drift, npm |
| User server did not start on port {mcp_port} | exception | error | network, startup, timeout, dev-server, port |
| Expected integer, got {raw!r} | validation | error | validation, cli, input-parsing, integer |
| Expected number, got {raw!r} | validation | error | validation, cli, input-parsing, number |
| Expected boolean, got {raw!r} | validation | error | validation, cli, input-parsing, boolean |
| Expected JSON {schema_type}, got {raw!r} | validation | error | cli, json-parsing, validation |
| The device authorization request expired | exception | error | oauth, device-flow, timeout |
| The device authorization request was denied | exception | error | oauth, device-flow, user-denied |
| Device authorization failed | exception | error | oauth, device-flow, unknown-error |
| The Horizon host changed during login | exception | error | cli, state-file, host-mismatch |
| Horizon authentication is required | exception | error | cli, authentication, missing-credentials |
| The API key is empty | validation | error | pydantic, validation, api-key |
| The Horizon API key is invalid | exception | error | pydantic, validation, api-key, state-file |
| Horizon returned an invalid organization cursor | exception | error | pagination, http, api |
| Could not restrict access to CLI state | exception | error | windows, permissions, filesystem, subprocess |
| Could not create the CLI state directory | exception | error | filesystem, permissions, configuration |
| The CLI state lock must not be a symbolic link | exception | error | security, symlink, filesystem, lockfile |
| Could not lock CLI state | exception | error | lockfile, concurrency, filesystem |
| CLI state must not be a symbolic link: {path.name} | exception | error | security, symlink, filesystem |
| CLI state is invalid: {path.name} | validation | error | json, validation, corruption, state |
| Could not read CLI state: {path.name} | exception | error | permissions, filesystem, io |
| Could not write CLI state: {path.name} | exception | error | filesystem, io, atomic-write, state |
| OAuth client not found - cached credentials may be stale | exception | error | oauth, auth, stale-credentials, client |
| Unexpected authorization response: {response.status_code} | exception | error | oauth, http, authorization-server, network |
| OAuth callback timed out after {self._callback_timeout} seco | exception | error | oauth, timeout, callback, browser |
| OAuth callback handler could not be started | exception | error | oauth, callback, port-in-use, server |
| OAuth provider has no server URL. Either pass mcp_url to OAu | exception | error | oauth, configuration, misuse, client |
| OAuth server rejected the static client credentials. Verify | exception | error | oauth, credentials, auth, configuration |
INVALID_PARAMS server/discover result is not conformant with {version}; treating the server as | error_code | warning | protocol, negotiation, mcp, client |
| mode must be 'legacy', 'auto', or one of {list(MODERN_PROTOC | validation | error | validation, configuration, arguments, client |
| The 'verify' parameter is only supported for HTTP transports | validation | error | tls, ssl, validation, transport, arguments |
| a custom cache store requires CacheConfig.target_id for Fast | validation | error | cache, configuration, validation, arguments |
| Client is not connected. Use the 'async with client:' contex | exception | error | python, async, lifecycle, client-session |
| Server session was closed unexpectedly | exception | error | python, network, transport, server-crash |
| Failed to initialize server session | exception | error | python, timeout, handshake, initialization |
| The client negotiated a modern protocol era (server/discover | exception | error | python, protocol, mcp, api-migration |
| Session task completed without exception but connection fail | exception | error | python, transport, startup, race-condition |
| logging/setLevel is not available on MCP 2026-07-28 connecti | exception | warning | python, logging, protocol, mcp |
| Elicitation responses must be serializable as a JSON object | validation | error | python, elicitation, validation, json |
| ClientGroup requires at least one client | validation | error | python, validation, configuration, client-group |
| Protocol mode for server {name!r} must be a string | validation | error | python, type-error, configuration, validation |
| ClientGroup is already connected | exception | error | python, async, lifecycle, reentrancy |
| ClientGroup clients are not connected: {names} | exception | error | mcp, connection, client-group, async-context |
| ClientGroup client for server {route.server_name!r} is not c | exception | error | mcp, connection, client-group, session-dropped |
| Tool name collision: {public_name!r} | validation | error | mcp, naming-collision, client-group, configuration |
| Unknown tool: {name!r}. If servers changed their tools, call | exception | error | mcp, client-group, unknown-tool, stale-cache |
| [{self.name}] Reached auto-pagination limit ({max_pages} pag | exception | error | pagination, client, mcp, runtime-error |
| [{self.name}] Reached auto-pagination limit ({max_pages} pag | exception | error | pagination, client, mcp, runtime-error |
| [{self.name}] Reached auto-pagination limit ({max_pages} pag | exception | error | pagination, client, mcp, runtime-error |
| Provided resource URI is invalid: {str(uri)!r} | validation | error | uri, validation, client, resources, valueerror |
| [{self.name}] Reached auto-pagination limit ({max_pages} pag | exception | error | pagination, client, mcp, runtime-error |
| {msg or "Tool '{name}' returned an error"} | exception | error | mcp, tool-call, client |
| Invalid root: {r} | validation | error | mcp, roots, validation, client |
| Invalid roots handler: {handler} | validation | error | mcp, roots, validation, client |
| The `anthropic` package is not installed. Install it with `p | exception | error | dependency, optional-extra, anthropic, import |
| Unsupported image MIME type for Anthropic: {content.mime_typ | validation | error | anthropic, sampling, image, mime-type |
| ImageContent is only supported in user messages for Anthropi | validation | error | anthropic, sampling, image, message-role |
| AudioContent is not supported by the Anthropic API | validation | error | anthropic, sampling, audio, unsupported |
| Unsupported content type for Anthropic: {type(item).__name__ | validation | error | anthropic, sampling, content-type, conversion |
| Unsupported content type: {type(content)} | validation | error | anthropic, sampling, unsupported-content, valueerror |
| No content in response from Anthropic | validation | error | anthropic, sampling, empty-response, api |
| No text content in response from Anthropic: {[type(b).__name | exception | error | anthropic, sampling, text-content, tool-use |
| Unsupported tool_choice mode: {tool_choice.mode!r} | validation | error | anthropic, sampling, tool-choice, valueerror |
| The `google-genai` package is not installed. Install it with | exception | critical | importerror, google-genai, missing-dependency, optional-extra |
| Unsupported tool result content type: {type(item).__name__} | validation | error | google-genai, sampling, tool-result, unsupported-content |
| Unsupported content type: {type(content)} | validation | error | google-genai, sampling, unsupported-content, valueerror |
| Invalid message role: {message.role} | validation | error | google-genai, sampling, message-role, valueerror |
| No candidate in response from completion. | exception | error | sampling, google-genai, empty-response |
| Model returned only thinking/reasoning content with no respo | exception | error | sampling, google-genai, empty-response |
| No content in response from completion (finish_reason={finis | exception | error | sampling, google-genai, empty-response, tool-calls |
| The `openai` package is not installed. Please install `fastm | exception | error | dependency, openai, import-error |
| Unsupported image MIME type for OpenAI: {content.mime_type!r | validation | error | openai, sampling, image, mime-type |
| Unsupported audio MIME type for OpenAI: {content.mime_type!r | validation | error | openai, sampling, audio, mime-type |
| Unsupported content type for OpenAI: {type(item).__name__} | validation | error | openai, sampling, content-conversion, tool-calls |
| ImageContent/AudioContent is only supported in user messages | validation | error | openai, sampling, content-conversion, assistant-message |
| ImageContent is only supported in user messages for OpenAI | validation | error | openai, sampling, multimodal, validation |
| AudioContent is only supported in user messages for OpenAI | validation | error | openai, sampling, audio, validation |
| Unsupported content type: {type(content)} | validation | error | openai, sampling, type-error, content-conversion |
| No response for completion | exception | error | openai, sampling, empty-response, api |
| No content in response from completion | exception | error | openai, sampling, empty-response, max-tokens |
| Unsupported tool_choice mode: {tool_choice.mode!r} | validation | error | openai, sampling, tool-choice, validation |
| Invalid JSON in tool arguments for '{func.name}': {func.argu | exception | error | openai, sampling, json, tool-calls, truncation |
| mcp_tool() got unexpected keyword argument(s): {sorted(unkno | exception | error | python, decorator, type-error, fastmcp |
| mcp_resource() got unexpected keyword argument(s): {sorted(u | exception | error | python, decorator, type-error, fastmcp |
| mcp_prompt() got unexpected keyword argument(s): {sorted(unk | exception | error | python, decorator, type-error, fastmcp |
| {name!r} moved to the fastmcp-tasks package. Install it with | exception | error | python, import-error, optional-dependency, fastmcp |
| module {__name__!r} has no attribute {name!r} | exception | error | python, attribute-error, import-error, fastmcp |
| CodeMode requires pydantic-monty for the Monty sandbox provi | exception | error | python, import-error, optional-dependency, code-mode, fastmcp |
| Discovery tool name '{self.execute_tool_name}' collides with | exception | error | code-mode, naming-collision, value-error, fastmcp |
| Discovery tools must have unique names. | exception | error | code-mode, naming-collision, value-error, fastmcp |
| Tool call limit exceeded: at most {max_tool_calls} call_tool | exception | error | code-mode, rate-limit, tool-error, fastmcp |
| Unknown tool: {tool_name} | exception | error | code-mode, not-found, tool-error, fastmcp |
| Invalid URL: {url} | exception | error | config, url, validation, mcp |
| At least one of 'tools', 'include_tags', or 'exclude_tags' i | validation | error | config, validation, pydantic, mcp |
| MCP configs that use FastMCP-specific tool transforms or tag | exception | error | import, installation, dependency, mcp |
| No MCP servers defined in the config: {file_path} | exception | error | config, file-io, validation, mcp |
| messages[{i}] must be Message, got {type(item).__name__}. Us | exception | error | prompts, type-error, validation, python |
| messages must be str or list[Message], got {type(messages)._ | exception | error | prompts, type-error, validation, python |
| Subclasses must implement render() | exception | error | prompts, not-implemented, subclassing, python |
| messages[{i}] must be Message or str, got {type(item).__name | exception | error | prompts, type-error, validation, python |
| Prompt must return str, list[Message], or PromptResult, got | exception | error | prompts, type-error, return-value, python |
| Missing required arguments: {missing} | exception | error | prompts, validation, arguments |
| Error rendering prompt {self.name!r}: {e} | exception | error | prompts, error-handling, exception-wrapping |
| To decorate a classmethod, use @classmethod above @prompt. S | exception | error | prompts, decorator, classmethod, typeerror |
| Cannot specify name both as first argument and keyword | exception | error | prompts, decorator, arguments, typeerror |
| Invalid first argument: {type(name_or_fn)} | exception | error | prompts, decorator, typeerror, arguments |
| contents[{i}] must be ResourceContent, got {type(item).__nam | exception | error | python, resources, type-error |
| contents must be str, bytes, or list[ResourceContent], got { | exception | error | python, resources, type-error |
| Either name or uri must be provided | exception | error | python, resources, value-error |
| Subclasses must implement read() | exception | error | python, resources, not-implemented |
| Cannot pass both 'metadata' and individual parameters to fro | validation | error | python, resources, api-misuse |
| uri is required when metadata is not provided | validation | error | python, resources, missing-argument |
| The @resource decorator requires a URI. Use @resource('uri') | exception | error | python, decorator, api-misuse |
| Subclasses must implement read() or override create_resource | exception | error | python, resource-templates, not-implemented |
| Subclasses must implement create_resource(). Use FunctionRes | exception | error | python, resource-templates, not-implemented |
| Invalid boolean value for {param_name}: {param_value!r} | validation | error | python, resource-templates, value-error, uri-parameters |
| You must provide a name for lambda functions | validation | error | python, resources, naming |
| Functions with *args are not supported as resource templates | validation | error | python, resources, signature |
| URI template parameters '{seen[normalized]}' and '{raw_name} | validation | error | uri-template, validation, naming |
| URI template must contain at least one parameter | validation | error | uri-template, validation |
| Query parameters {invalid_query_params} must be optional fun | validation | error | uri-template, query-params, validation |
| Required function arguments {required_params} must be a subs | validation | error | uri-template, validation, signature |
| URI parameters {all_uri_params} must be a subset of the func | validation | error | uri-template, validation, signature |
| Path must be absolute | validation | error | filesystem, pydantic, validation |
| Error reading file {self.path} | exception | error | filesystem, io, resources |
| Directory not found: {self.path} | exception | error | filesystem, resources, path-not-found |
| Not a directory: {self.path} | exception | error | filesystem, resources, wrong-path-type |
| Error listing directory {self.path} | exception | error | filesystem, permissions, resources, glob |
| Error reading directory {self.path} | exception | error | filesystem, resources, mcp-client |
| FastMCP server support is not installed. Install `fastmcp` o | exception | error | imports, installation, lazy-loading, optional-dependency |
| module {__name__!r} has no attribute {name!r} | exception | error | imports, attributeerror, lazy-loading |
| module {__name__!r} has no attribute {name!r} | exception | error | imports, attributeerror, auth, lazy-loading |
| Invalid client_id | http | error | oauth, authentication, client-configuration |
| Invalid client_assertion_type: expected {JWT_BEARER_ASSERTIO | http | error | oauth, jwt, private-key-jwt, protocol-violation |
| Missing client_assertion | http | error | oauth, authentication, jwt, client-assertion |
| Invalid client assertion: {e} | http | error | oauth, jwt, signature-validation, cimd |
| Subclasses must implement verify_token | exception | error | python, not-implemented, auth, subclass-contract |
| MultiAuth requires at least a server or one verifier | validation | error | python, configuration, multiauth, auth |
| Unsupported JWK key type: {key_type!r} | validation | error | jwk, cimd, jwt, unsupported-key-type |
| CIMD documents cannot use shared-secret auth methods: {v}. U | validation | error | pydantic, cimd, validation, oauth-security |
| CIMD documents must include at least one redirect_uri | validation | error | pydantic, cimd, validation, redirect-uri |
| CIMD redirect_uris must be non-empty strings | validation | error | pydantic, cimd, validation, redirect-uri |
| CIMD redirect_uri must have a scheme (e.g. http:// or https: | validation | error | pydantic, cimd, validation, redirect-uri, url-parsing |
| CIMD redirect_uri must have a host: {uri!r} | validation | error | oauth, cimd, validation, redirect-uri |
| {str(e) from SSRFError/SSRFFetchError} | exception | error | oauth, cimd, ssrf, network, security |
| str(e) | exception | error | oauth, cimd, network, http |
| CIMD server returned 304 Not Modified without cached documen | exception | error | oauth, cimd, http-cache, caching |
| CIMD document is not valid JSON: {e} | validation | error | oauth, cimd, json, validation |
| Invalid CIMD document: {e} | validation | error | oauth, cimd, pydantic, schema-validation |
| CIMD client_id mismatch: document says '{doc.client_id}' but | validation | error | oauth, cimd, validation, client-id-mismatch |
| CIMD jwks_uri failed SSRF validation: {e} | validation | error | oauth, cimd, ssrf, security, jwks |
| CIMD document must have jwks_uri or jwks for private_key_jwt | exception | error | oauth, cimd, jwt, private-key-jwt, validation |
| Invalid JWT assertion | exception | error | oauth, cimd, jwt, private-key-jwt, authentication |
| Assertion must include exp claim | exception | error | oauth, jwt, private-key-jwt, validation |
| Assertion has expired | exception | error | oauth, jwt, token-expired, clock-skew |
| Assertion iat is in the future | exception | error | oauth, jwt, clock-skew, validation |
| Assertion lifetime too long: {exp - iat}s (max {self.MAX_ASS | exception | error | oauth, jwt, private-key-jwt, validation |
| Assertion exp too far in future (max {self.MAX_ASSERTION_LIF | exception | error | oauth, jwt, validation, lifetime |
| Assertion sub claim must be {client_id} | exception | error | oauth, jwt, rfc7523, validation |
| Assertion must include jti claim | exception | error | oauth, jwt, rfc7523, replay-protection |
| Assertion replay detected: jti {jti} already used | exception | error | oauth, jwt, replay-attack, security |
| Server overloaded, please retry | exception | error | oauth, security, dos-protection, rate-limiting |
| Failed to extract key ID from token: {e} | exception | error | jwt, jwks, parsing, base64 |
| JWKS document contains no keys | exception | error | oauth, jwks, private-key-jwt, cimd |
| No matching key found for kid={kid} in JWKS | exception | error | oauth, jwks, kid-mismatch, private-key-jwt |
| Failed to convert JWK to PEM: {e} | exception | error | oauth, jwks, key-format, cryptography |
| Client must have CIMD document for private_key_jwt | exception | error | oauth, cimd, private-key-jwt, client-metadata |
| CIMD document must specify private_key_jwt auth method | exception | error | oauth, cimd, auth-method-mismatch, private-key-jwt |
| identity_assertion.trusted_issuers must not be empty | validation | error | config, pydantic, validation, identity-assertion |
| trusted_issuers entries must be non-empty strings | validation | error | config, pydantic, validation, identity-assertion |
| Unsupported algorithm {v!r} for identity assertion: trusted | validation | error | config, jwt, algorithm, validation |
| Unsupported algorithm {algorithm!r} for issuer {issuer!r}: m | validation | error | config, jwt, algorithm, validation |
| OIDC discovery for issuer {issuer!r} recently failed; backin | exception | warning | network, oidc, discovery, retry, backoff |
| OIDC discovery for issuer {issuer!r} failed: {e} | exception | error | network, oidc, discovery, http |
| OIDC discovery document for issuer {issuer!r} is not a JSON | exception | error | oidc, discovery, json, schema |
| OIDC discovery document for issuer {issuer!r} has no jwks_ur | exception | error | oidc, discovery, jwks, configuration |
| Malformed assertion header: {e} | exception | error | jwt, malformed, parsing |
| Assertion JOSE header must be a JSON object | exception | error | jwt, malformed, json, schema |
| Assertion typ must be {ID_JAG_TYP!r}, got {header.get('typ') | exception | error | jwt, typ, oidc, spec-compliance |
| Malformed assertion payload: {e} | exception | error | jwt, malformed, parsing |
| Assertion payload is not a JSON object | exception | error | jwt, malformed, json, schema |
| Untrusted assertion issuer: {iss!r} | exception | error | jwt, issuer, configuration, security |
| Assertion failed signature/issuer/audience/expiry validation | exception | error | jwt, signature, expired, audience, security |
| Assertion must include exp claim | exception | error | auth, jwt, oauth, identity-assertion |
| Assertion is not yet valid (nbf in future) | exception | error | auth, jwt, clock-skew, identity-assertion |
| Assertion iat is in the future | validation | error | auth, jwt, clock-skew, identity-assertion |
| Assertion lifetime too long (max {self.MAX_ASSERTION_LIFETIM | validation | error | auth, jwt, token-lifetime, identity-assertion |
| Assertion exp too far in future (max {self.MAX_ASSERTION_LIF | validation | error | auth, jwt, token-lifetime, identity-assertion |
| Assertion must include sub claim | validation | error | auth, jwt, oauth, identity-assertion |
| Assertion missing required scopes: {sorted(missing)} | validation | error | auth, oauth, scopes, identity-assertion |
| Assertion client_id {assertion_client_id!r} does not match a | validation | error | auth, oauth, client-binding, identity-assertion |
| Assertion is missing resource claim | validation | error | auth, oauth, resource-indicators, identity-assertion |
| Assertion resource {assertion_resource!r} does not match thi | validation | error | auth, oauth, resource-indicators, url-mismatch |
| Assertion must include a string jti claim | validation | error | auth, oauth, jwt, identity-assertion |
| Assertion replay detected: jti {jti} reused | validation | error | auth, oauth, replay-attack, jwt |
| Server overloaded, please retry | validation | error | auth, capacity, rate-limiting, replay-cache |
| Assertion {name} claim must be a number | validation | error | jwt, validation, timestamp, auth |
| Either high_entropy_material or low_entropy_material must be | exception | error | configuration, cryptography, jwt-signing |
| Either high_entropy_material or low_entropy_material must be | exception | error | configuration, missing-env-var, jwt-signing, cryptography |
| Token type mismatch: expected {expected_token_use}, got {tok | validation | error | jwt, auth, token-validation |
| Token has expired | validation | error | jwt, auth, token-expired |
| Invalid token issuer | validation | error | jwt, auth, issuer-validation, configuration |
| Invalid token audience | validation | error | jwt, auth, audience-validation, configuration |
| jwt_signing_key is required when upstream_client_secret is n | exception | critical | oauth, jwt, configuration, startup |
| JWT issuer not initialized. Ensure get_routes() is called be | exception | error | oauth, jwt, lifecycle, initialization-order |
| client_id is required for client registration | exception | error | oauth, dcr, client-registration, validation |
invalid_redirect_uri Redirect URI '{redirect_uri}' is not allowed. | error_code | error | oauth, dcr, redirect-uri, registration |
invalid_target Resource does not match this server | error_code | error | oauth, rfc-8707, resource-indicator, audience |
invalid_client Client ID is required | error_code | error | oauth, authorize, client-id, validation |
invalid_grant Authorization code not found | error_code | error | oauth, token-exchange, invalid-grant |
unsupported_grant_type unsupported_grant_type: The JWT bearer grant is not supported by this authorizat | error_code | error | oauth, id-jag, jwt-bearer, unsupported-grant-type |
| Unsupported token_endpoint_auth_method: {method!r}. Supporte | validation | error | oauth, configuration, auth-method |
| OAuth token endpoint error: {token['error']}: {token.get('er | http | error | oauth, network, token-endpoint, upstream-provider |
| Missing required configuration metadata: {attr} | validation | error | oidc, configuration, discovery, validation |
| Invalid URL for configuration metadata: {attr} | validation | error | oidc, configuration, url-validation |
| Missing required config URL | validation | error | oidc, configuration, missing-parameter |
| Missing required client id | validation | error | oidc, configuration, missing-parameter |
| Either client_secret or jwt_signing_key must be provided. jw | validation | error | oidc, configuration, client-secret |
| Missing required base URL | validation | error | oidc, configuration, missing-parameter |
| Cannot specify 'algorithm' when providing a custom token_ver | validation | error | oidc, configuration, conflicting-options |
| Cannot specify 'required_scopes' when providing a custom tok | validation | error | python, configuration, oauth, constructor-validation |
| Missing required OIDC endpoints | validation | error | python, oauth, openid-connect, discovery, configuration |
| AzureProvider requires at least one non-OIDC scope in requir | validation | error | python, azure, oauth, scopes, configuration |
| tenant_name should be the short name without the .onmicrosof | validation | error | python, azure, azure-ad-b2c, configuration |
| Azure AD B2C does not support the On-Behalf-Of (OBO) flow. U | exception | error | python, azure, azure-ad-b2c, obo, unsupported-feature |
| OBO token exchange requires either a client_secret or a subc | validation | error | python, azure, obo, credentials, configuration |
| {feature} requires the `azure` extra. Install with: pip inst | exception | error | python, azure, missing-dependency, importerror |
| No access token available. Cannot perform OBO exchange. | exception | error | python, azure, obo, context, runtime |
| EntraOBOToken requires an AzureProvider as the auth provider | exception | error | python, azure, obo, provider-mismatch, configuration |
| Could not extract project_id from config_url: {issuer_url} | validation | error | python, descope, oauth, configuration, url-parsing |
| Either config_url (new API) or both project_id and descope_b | validation | error | configuration, oauth, constructor |
| Requested scopes are not valid: {', '.join(invalid_scopes)} | error_code | error | oauth, scopes, validation |
| client_id is required for client registration | validation | error | oauth, client-registration, validation |
unauthorized_client unauthorized_client: Client '{client.client_id}' not registered. | error_code | error | oauth, authorization, unauthorized-client |
invalid_request invalid_request: Invalid redirect_uri. | error_code | error | oauth, redirect-uri, authorization |
invalid_client invalid_client: Client ID is required | error_code | error | oauth, client-id, authorization |
invalid_grant invalid_grant: Authorization code not found or already used. | error_code | error | oauth, authorization-code, token-exchange, single-use |
invalid_scope invalid_scope: Requested scopes exceed those authorized by the refresh token. | error_code | error | oauth, scopes, refresh-token |
| JWKS URI not configured | validation | error | auth, configuration, jwt, jwks |
| Key ID '{kid}' found in JWKS but its key type is unsupported | exception | error | auth, jwt, jwks, key-type |
| Key ID '{kid}' not found in JWKS | exception | error | auth, jwt, jwks, key-rotation |
| Multiple keys in JWKS but no key ID (kid) in token | exception | error | auth, jwt, jwks, kid |
| No keys found in JWKS | exception | error | auth, jwt, jwks, configuration |
| Failed to fetch JWKS: {e} | exception | error | network, ssrf, jwt, jwks |
| Invalid JWKS JSON: {e} | exception | error | json, http, jwt, jwks |
| Failed to process JWKS: {e} | exception | error | jwt, jwks, configuration |
| Overall timeout exceeded: {url} | exception | error | network, timeout, ssrf, httpx |
| HTTP {response.status_code} fetching {url} | http | error | network, http, ssrf, status-code |
| Response too large: {size} bytes (max {max_size}) | exception | error | network, ssrf, size-limit, http |
| Response too large: exceeded {max_size} bytes | exception | error | network, ssrf, size-limit, streaming |
| Timeout fetching {url} | exception | error | network, timeout, ssrf, dns, httpx |
| Error fetching {url}: {last_error} | exception | error | network, tls, ssrf, httpx, connection |
| Error fetching {url}: no fetch targets succeeded | exception | error | network, ssrf, dns, edge-case |
| cache_scope requires cache_ttl; a scope without a TTL does n | validation | error | config, caching, validation, fastmcp |
| cache_ttl must be a positive integer, got {cache_ttl} | validation | error | python, configuration, caching, valueerror |
| A completion handler returned a str; return a list of string | exception | error | python, completions, typeerror, return-type |
| FastMCP instance is no longer available | exception | error | python, context, lifecycle, runtimeerror |
| Unexpected CreateTaskResult: Context calls should not have t | exception | error | python, context, prompts, internal-error, runtimeerror |
| request_id is not available because the MCP session has not | exception | error | python, context, request-id, runtimeerror, session-lifecycle |
| session_id is not available because no session exists. This | exception | error | python, context, session, runtimeerror, background-tasks |
| session is not available because the MCP session has not bee | exception | error | python, context, session, runtimeerror, session-lifecycle |
| Imperative ctx.elicit() is not supported inside a background | exception | error | python, context, elicitation, background-tasks, toolerror |
| elicitation via server-initiated requests is unavailable on | exception | error | python, context, elicitation, protocol-version, toolerror |
| Unexpected elicitation action: {result.action} | exception | error | elicitation, protocol, mcp |
| Value for state key {key!r} is not serializable. Use set_sta | exception | error | state, serialization, pydantic |
| No active context found. | exception | error | context, lifecycle, request-scope |
| No FastMCP server instance in context | exception | error | context, server, lifecycle |
| FastMCP server instance is no longer available | exception | error | context, lifecycle, garbage-collection |
| No active HTTP request found. | exception | error | http, context, transport |
| Excluded headers must be lowercase | exception | warning | http, headers, validation |
| Expected fastmcp.server.auth.auth.AccessToken, got {type(acc | exception | error | auth, type-mismatch, oauth |
| Failed to resolve dependency '{parameter}' for {fn_name} | exception | error | dependency-injection, runtime, fastmcp |
| No active context found. This can happen if: - Called outs | exception | error | context, asyncio, fastmcp |
| Total must be at least 1 | validation | error | progress, validation, fastmcp |
| Amount must be at least 1 | validation | error | progress, validation, fastmcp |
| Progress dependency requires a FastMCP server context. | exception | error | progress, context, fastmcp |
| No access token found. Ensure authentication is configured a | exception | error | auth, oauth, access-token, fastmcp |
| No access token available. Cannot extract claim '{self.claim | exception | error | auth, claims, access-token, fastmcp |
| Claim '{self.claim_name}' not found in access token. Availab | exception | error | auth, jwt, claims, fastmcp |
| ctx.elicit() requires a response_type. The empty-schema form | exception | error | elicitation, mcp, api-change, fastmcp |
| response_title and response_description are only supported w | exception | error | elicitation, pydantic, schema, fastmcp |
| Dict response_type cannot be empty. | exception | error | elicitation, schema, fastmcp, python |
| Invalid list response_type format. Received: {lst} | exception | error | elicitation, schema, fastmcp, python |
| Elicitation response missing required 'value' field. | exception | error | elicitation, response-validation, fastmcp, mcp-client |
| Elicitation expected an empty response, but received: {conte | exception | error | elicitation, deprecated-api, fastmcp, mcp-client |
| Elicitation schema must be an object schema, got type '{sche | exception | error | elicitation, json-schema, schema-validation, fastmcp |
| Elicitation schema field '{prop_name}' contains a reference | exception | error | elicitation, json-schema, refs, fastmcp |
| Elicitation schema field '{prop_name}' has union type '{unio | exception | error | elicitation, json-schema, union-types, fastmcp |
| Elicitation schema field '{prop_name}' is an array of object | exception | error | elicitation, json-schema, nested-objects, fastmcp |
| Elicitation schema field '{prop_name}' is an array, but arra | exception | error | elicitation, json-schema, arrays, fastmcp |
| Elicitation schema field '{prop_name}' is an object, but nes | exception | error | elicitation, json-schema, nested-objects, fastmcp |
| Elicitation schema field '{prop_name}' has type '{prop_type} | exception | error | elicitation, schema-validation, json-schema |
| MethodBinding cannot bind spec method {self.method!r}; exten | exception | error | extensions, method-binding, api-misuse |
| Extension {self.identifier!r} is not bound to a FastMCP serv | exception | error | extensions, lifecycle, initialization-order |
METHOD_NOT_FOUND Method {binding.method!r} is not available at protocol version {ctx.protocol_ver | error_code | error | protocol-version, extensions, method-not-found |
| Task group is not initialized. Make sure to use run(). | exception | critical | asgi, lifespan, deployment |
| {new_error_message}\nOriginal error: {e} | exception | error | asgi, runtime-error, deployment |
| host_origin_protection must be True, False, or 'auto'. | validation | error | configuration, http-app, validation |
| Cannot compose Lifespan with {type(other).__name__}. Use @li | validation | error | lifespan, type-error, composition |
| server/discover handler returned {type(raw).__name__}; expec | validation | error | discover, low-level, return-type |
| FastMCP instance is no longer available | exception | error | python, lifecycle, weakref, garbage-collection |
| Authorization failed for tool '{tool_name}': missing context | exception | error | auth, middleware, security, fail-closed |
| Authorization failed for tool '{tool_name}': not found or no | exception | error | auth, tools, middleware, access-control |
| Authorization failed for tool '{tool_name}': insufficient sc | exception | error | auth, oauth, scopes, jwt, insufficient-scope |
| Authorization failed for tool '{tool_name}': insufficient pe | exception | error | auth, middleware, access-control, custom-auth |
| Authorization failed for resource '{uri}': missing context | exception | error | auth, resources, middleware, fail-closed |
| Authorization failed for resource '{uri}': not found or not | exception | error | auth, resources, middleware, access-control |
| Authorization failed for resource '{uri}': insufficient scop | exception | error | auth, oauth, scopes, insufficient-scope |
| Authorization failed for resource '{uri}': insufficient perm | exception | error | auth, middleware, access-control, custom-auth |
| Authorization failed for prompt '{prompt_name}': missing con | exception | error | auth, prompts, middleware, fail-closed |
| Authorization failed for prompt '{prompt_name}': not found o | exception | error | authorization, prompts, mcp |
| Authorization failed for prompt '{prompt_name}': insufficien | exception | error | authorization, oauth-scopes, prompts |
| Authorization failed for prompt '{prompt_name}': insufficien | exception | error | authorization, prompts, access-control |
| interval_ms must be positive | validation | error | configuration, validation, middleware |
| Global rate limit exceeded | exception | error | rate-limiting, middleware, traffic |
| Rate limit exceeded for client: {client_id} | exception | error | rate-limiting, middleware, clients |
| Rate limit exceeded: {self.max_requests} requests per {self. | exception | error | rate-limiting, sliding-window, middleware |
| max_size must be positive, got {max_size} | validation | error | configuration, validation, middleware |
| Task-enabled tools ({names}) require the tasks extension, bu | exception | error | tasks, extensions, startup, configuration |
INVALID_PARAMS str(e) (from paginate_sequence ValueError, wrapped as INVALID_PARAMS) | error_code | error | pagination, invalid-params, mcp |
| Unknown transport: {transport} | validation | error | transport, configuration, valueerror |
| SSE transport does not support stateless mode | validation | error | transport, sse, stateless, configuration |
| module {__name__!r} has no attribute {name!r} | exception | error | import, attributeerror, python, lazy-loading |
| Ambiguous app tool {tool_name!r}: {len(matches)} components | exception | error | tools, aggregation, ambiguity, providers |
| Failed to import {module_name} from {file_path}: {e} | exception | error | python, import, module-loading, plugin-discovery |
| Cannot load spec for {file_path} | exception | error | python, import, spec, file-loading |
| Failed to reload module {file_path}: {e} | exception | error | python, reload, hot-reload, module-loading |
| Failed to execute module {file_path}: {e} | exception | error | python, import, module-loading, plugin-discovery |
| Expected Prompt or @prompt-decorated function, got {type(pro | exception | error | python, type-error, prompts, api-misuse |
| To decorate a classmethod, use @classmethod above @prompt. S | exception | error | python, classmethod, decorators, prompts |
| The function '{fn_name}' has '{params[0]}' as its first para | exception | error | python, methods, decorators, prompts |
| Cannot specify both a name as first argument and as keyword | exception | error | python, argument-conflict, decorators, prompts |
| Invalid first argument: {type(name_or_fn)} | exception | error | python, type-error, decorators, prompts |
| Expected Resource, ResourceTemplate, or @resource-decorated | exception | error | python, fastmcp, resources, type-error |
| The @resource decorator was used incorrectly. It requires a | exception | error | python, fastmcp, resources, decorator-misuse |
| The function '{fn_name}' has '{params[0]}' as its first para | exception | error | python, fastmcp, resources, methods |
| To decorate a classmethod, use @classmethod above @tool. See | exception | error | python, fastmcp, tools, decorator-order |
| The function '{fn_name}' has '{params[0]}' as its first para | exception | error | python, fastmcp, tools, methods |
| Cannot specify both a name as first argument and as keyword | exception | error | python, fastmcp, tools, api-misuse |
| First argument to @tool must be a function, string, or None, | exception | error | python, fastmcp, tools, type-error |
| Cannot add versioned {type_name} {logical_name!r} (version={ | exception | error | fastmcp, versioning, registration-conflict |
| Cannot add unversioned {type_name} {logical_name!r}: version | exception | error | fastmcp, versioning, registration-conflict |
| Component already exists: {component.key} | exception | error | fastmcp, duplicate-registration, components |
| Component {key!r} not found | exception | error | keyerror, provider, component-management |
| Tool {name!r} not found | exception | error | keyerror, tool, removal, provider |
| Tool {name!r} version {version!r} not found | exception | error | keyerror, tool, versioning, removal |
| Resource {uri!r} not found | exception | error | keyerror, resource, uri, removal |
| Resource {uri!r} version {version!r} not found | exception | error | keyerror, resource, versioning, removal |
| Template {uri_template!r} not found | exception | error | keyerror, resource-template, uri-template, removal |
| Template {uri_template!r} version {version!r} not found | exception | error | keyerror, resource-template, versioning, removal |
| Prompt {name!r} not found | exception | error | keyerror, prompt, removal |
| Prompt {name!r} version {version!r} not found | exception | error | keyerror, prompt, versioning, removal |
| HTTP error {response.status_code}: {response.reason_phrase} | exception | error | http, openapi, upstream-api, network |
| HTTP request timed out ({type(exc).__name__}) | exception | error | network, http, timeout, openapi |
| Request error ({type(exc).__name__}): {exc!s} | exception | error | network, http, openapi |
| Error building request for {self._route.method.upper()} {sel | exception | error | openapi, request-building, validation |
| Invalid OpenAPI specification: {e} | exception | error | openapi, validation, configuration |
| No server URL found in OpenAPI spec. Either add a 'servers' | exception | error | openapi, configuration, http |
| Remote server returned empty content for {backend_uri} | exception | error | proxy, resources, remote-server |
| Unsupported content type: {type(item)} | exception | error | proxy, resource, content-type, mcp |
| Remote server returned empty content for {parameterized_uri} | exception | error | proxy, resource, empty-content, mcp |
| Ambiguous app tool {tool_name!r}: {len(distinct)} components | exception | error | proxy, tool-routing, duplicate-registration, ambiguity |
| Stateful proxy requires a per-connection server session; no | exception | error | proxy, stateful, session, lifecycle |
| Invalid path: {e} | validation | error | path-traversal, security, skill-provider, validation |
| File not found: {file_path} | exception | error | file-not-found, skill-provider, filesystem |
| Not a file: {file_path} | validation | error | not-a-file, skill-provider, filesystem, validation |
| File not found: {self.file_path} | exception | error | filesystem, file-not-found, resources, skills |
| Unknown tool: {name!r} | exception | error | auth, authorization, tools, hashed-names |
| Rate limited by upstream API, please retry later | exception | warning | rate-limit, http-429, tools, retry |
| Upstream request timed out, please retry | exception | warning | timeout, network, tools, retry |
| Error calling tool {name!r} | exception | error | error-masking, tools, debugging |
| Error calling tool {name!r}: {e} | exception | error | tools, error-masking, debugging |
| Error reading resource {uri!r} | exception | error | mcp, resource, error-masking, python |
| Error reading resource {uri!r}: {e} | exception | error | mcp, resource, unhandled-exception, python |
| Unknown resource: {uri!r} | exception | error | mcp, resource, not-found, uri |
| Unknown resource: {uri!r} version {version!r} | exception | error | mcp, resource, not-found, versioning |
| Unknown prompt: {name!r} | exception | error | mcp, prompt, not-found |
| Error rendering prompt {name!r} | exception | error | python, prompts, server |
| Error rendering prompt {name!r}: {e} | exception | error | python, prompts, server |
| resource_uri cannot be set on resources — the resource itsel | validation | error | python, resources, ui, config |
| visibility cannot be set on resources — it only applies to t | validation | error | python, resources, config, visibility |
| Cannot mount a server onto itself | validation | error | python, server, mount, recursion |
| PromptsAsTools requires a FastMCP server instance, not a {ty | validation | error | python, prompts, transforms, type-error |
| ResourcesAsTools requires a FastMCP server instance, not a { | validation | error | python, resources, transforms, type-error |
| '{name}' is a synthetic search tool and cannot be called via | validation | error | python, search, tools, proxy |
| Unknown tool: {name!r} | exception | error | python, search, tools, not-found |
| ToolTransform has duplicate target name {target!r}: both {se | validation | error | python, valueerror, tool-transform, duplicate-name, config |
| At least one of version_gte or version_lt must be specified | validation | error | python, valueerror, version-filter, missing-argument, config |
| Setting {parent_attr} does not exist. | exception | error | python, attributeerror, settings, nested-attribute, typo |
| Either content or structured_content must be provided | validation | error | python, valueerror, tool-result, empty-response, mcp |
| structured_content must be a dict or None. Got {type(structu | validation | error | python, valueerror, tool-result, structured-content, schema-validation |
| Subclasses must implement run() | exception | error | python, notimplementederror, abstract-method, tool, subclass |
| Functions with positional-only parameters are not supported | validation | error | python, valueerror, positional-only, signature-validation, tool |
| Functions with *args are not supported as tools | validation | error | python, valueerror, var-args, signature-validation, tool |
| Functions with **kwargs are not supported as tools | validation | error | python, valueerror, var-kwargs, signature-validation, tool |
| Cannot pass both 'metadata' and individual parameters to fro | validation | error | python, api-misuse, tool-definition |
| You must provide a name for lambda functions | validation | error | python, lambda, naming, tool-definition |
| Tool {func_name!r}: timeout cannot be enforced when run_in_t | validation | error | python, timeout, concurrency, sync-async |
| Output schemas must represent object types due to MCP spec l | validation | error | python, json-schema, mcp-spec, output-schema |
-32000 Tool '{self.name}' execution timed out after {self.timeout}s | error_code | error | timeout, mcp, execution, concurrency |
| {str(e)} | validation | warning | validation, pydantic, arguments, client-error |
| To decorate a classmethod, use @classmethod above @tool. See | validation | error | python, decorators, classmethod, tool-definition |
| Cannot specify name both as first argument and keyword | validation | error | python, decorators, api-misuse, duplicate-argument |
| Invalid first argument: {type(name_or_fn)} | validation | error | python, decorators, api-misuse, argument-type |
| forward() can only be called within a transformed tool | exception | error | python, tool-transform, context, runtime-error |
| forward_raw() can only be called within a transformed tool | exception | error | python, tool-transform, context |
| Cannot specify both 'default' and 'default_factory' in ArgTr | validation | error | python, tool-transform, validation |
| default_factory can only be used with hide=True. Visible par | validation | error | python, tool-transform, validation |
| Cannot specify 'required=True' with 'default' or 'default_fa | validation | error | python, tool-transform, validation |
| Cannot specify both 'hide=True' and 'required=True'. Hidden | validation | error | python, tool-transform, validation |
| Cannot specify 'required=False'. Set a default value instead | validation | error | python, tool-transform, validation |
| Unknown arguments in transform_args: {', '.join(sorted(unkno | validation | error | python, tool-transform, validation |
| Function missing parameters required after transformation: { | validation | error | python, tool-transform, signature-mismatch |
| Multiple arguments would be mapped to the same names: {', '. | validation | error | python, tool-transform, validation |
| Hidden parameter '{old_name}' has no default value in parent | validation | error | python, tool-transform, validation |
| $defs collision for '{def_name}': an ArgTransform introduces | validation | error | python, schema, tool-transform, json-schema |
| Got unexpected keyword argument(s): {', '.join(sorted(unknow | validation | error | python, tool-transform, arguments, typeerror |
| StreamingASGITransport requires an async request stream; got | exception | error | python, httpx, asgi, streaming |
| Unexpected ASGI message type: {message['type']} | exception | error | python, asgi, http, protocol |
| Invalid JWT format (expected 3 parts) | exception | error | python, jwt, auth, base64 |
| require_roles() needs at least one role; a check with no rol | exception | error | python, auth, authorization, rbac |
| No server specification or fastmcp.json found | console | error | python, cli, config, fastmcp |
| Version must be a string, int, or float, got bool: {v!r} | exception | error | python, typeerror, versioning, components |
| Version must be a string, int, or float, got {type(v).__name | exception | error | python, typeerror, versioning, components |
| Version string cannot contain '@' (used as key delimiter): { | exception | error | fastmcp, validation, versioning, key-format |
| meta['fastmcp'] must be a dict | exception | error | fastmcp, validation, metadata, type-error |
| Component.enable() was removed in FastMCP 3.0. Use server.en | exception | error | fastmcp, api-removal, migration, version-3 |
| Component.disable() was removed in FastMCP 3.0. Use server.d | exception | error | fastmcp, api-removal, migration, version-3 |
408 Timed out while waiting for response. | error_code | error | network, timeout, httpx, client |
| Unknown format: {format} | exception | error | fastmcp, validation, bad-argument, inspect |
| No value is valid against a false schema | validation | error | json-schema, validation, pydantic |
| Can not apply name to non-object schema: {name} | exception | error | json-schema, validation, pydantic, bad-argument |
| uv is not installed. Please install it with: curl -LsSf http | exception | critical | environment, uv, missing-dependency, deployment |
| Failed to initialize project: {e.stderr} | exception | error | environment, uv, subprocess, project-init |
| Failed to pin Python version: {e.stderr} | exception | error | uv, python-version, subprocess, environment-setup |
| Failed to add dependencies: {e.stderr} | exception | error | uv, dependency-resolution, pip, environment-setup |
| Failed to add requirements: {e.stderr} | exception | error | uv, requirements-txt, dependency-resolution, environment-setup |
| Failed to add editable packages: {e.stderr} | exception | error | uv, editable-install, packaging, environment-setup |
| Failed to sync dependencies: {e.stderr} | exception | error | uv, dependency-install, environment-setup, build |
| Configuration file not found: {file_path} | exception | error | config, file-not-found, python |
| Invalid OpenAPI schema: {error_details} | validation | error | openapi, validation, schema |
| External or non-local reference not supported: {ref_str} | exception | error | openapi, references, unsupported |
| Cannot traverse part '{part}' in reference '{ref_str}' | exception | error | openapi, references, json-pointer |
| Reference part '{part}' not found in path '{ref_str}' | exception | error | openapi, references, json-pointer |
| Failed to resolve reference '{ref_str}': {e} | exception | error | openapi, json-ref, schema-resolution |
| External or non-local reference not supported: {ref_path}. F | exception | error | openapi, external-ref, schema-bundling |
| Invalid cursor: {cursor} | exception | error | pagination, cursor, encoding |
| Expected a Prefab UI component | exception | error | prefab, ui, type-check |
| Could not read manifest for skill: {skill_name} | exception | error | skills, mcp-resources, manifest |
| Invalid manifest JSON for skill: {skill_name} | exception | error | skills, json, manifest |
| Unexpected manifest format for skill: {skill_name} | exception | error | skills, mcp-resources, content-type |
| Invalid manifest format for skill: {skill_name} | exception | error | skills, manifest, schema-validation |
| Skill name {skill_name!r} would escape the target directory | validation | error | security, path-traversal, skills |
| Skill directory already exists: {skill_dir}. Use overwrite=T | exception | error | skills, file-exists, filesystem |
| '{name}' uses a sync function but has task execution enabled | validation | error | python, async, tasks, configuration |
| Invalid transport: {transport} | validation | error | testing, transport, sse, configuration |
| Server failed to start after {max_attempts} attempts | exception | error | testing, server-startup, timeout, subprocess |
| Server process failed to terminate even after kill | exception | error | testing, subprocess, process-termination, multiprocessing |
| Server did not start listening on {host}:{port} within {time | exception | error | network, timeout, testing, asyncio |
| No authorization response stored. redirect_handler must be c | exception | error | oauth, testing, auth, flow-order |
| OAuth authorization failed: {error} - {error_desc} | exception | error | oauth, auth, authorization, testing |
| Authorization failed: {response.status_code} | exception | error | oauth, http, auth, testing |
| Invalid timeout type: {type(value)} | validation | error | python, type-error, timeout, configuration |
| cache_ttl_seconds must be non-negative, got {ttl_seconds} | validation | error | validation, configuration, valueerror |
| max_cache_size must be non-negative, got {max_size} | validation | error | validation, configuration, valueerror |
| Either path or data must be provided | validation | error | validation, image, valueerror |
| Only one of path or data can be provided | validation | error | validation, image, valueerror |
| No image data available | validation | error | image, state, valueerror |
| No audio data available | validation | error | audio, state, valueerror |
| No resource data available | validation | error | python, resources, value-error |
| Accessing `{cls_name}.{camel}` is deprecated; MCP SDK v2 ren | console | warning | python, deprecation, mcp-sdk-v2, naming |
| Using in-memory token storage -- tokens will be lost when th | console | warning | python, oauth, token-storage, persistence |
| Both 'httpx_client_factory' and 'verify' were provided. The | console | warning | python, ssl, httpx, transport |
| Both 'httpx_client_factory' and 'verify' were provided. The | console | warning | python, ssl, httpx, sse, transport |
| Passing an httpx.AsyncClient to OpenAPIProvider is deprecate | console | warning | python, deprecation, openapi, httpx |
| `ProxyInitializeMiddleware` is deprecated and will be remove | console | warning | python, deprecation, proxy, middleware |
| Component keys are missing the '@' version delimiter and wil | console | warning | python, transforms, component-keys, filtering |
| {cls.__name__} does not define KEY_PREFIX. Component keys wi | console | warning | python, components, naming, subclassing |
| Pattern {pattern!r} is not supported by Pydantic's regex eng | console | warning | python, json-schema, regex, pydantic, validation |