Skip to content

Error Codes

Every code of the MTHDS core error registry has a page here, at the URL a problem's type names: https://mthds.ai/errors/<code>. Each page says what its code means, who must act and what to do, and gives the code's steps, parameters and templates. The Error Registry page describes the registry itself, and the HTTP Runner Protocol how a problem document carries a code.

These pages are generated from the registry's data, which is published with every release of the standard as mthds-error-registry.json. This is version 8.0.0 of the registry.

Extension prefixes

A code that is not a core code starts with a registered prefix, and its page is published by the prefix's owner, under the base URL the prefix is registered with.

Prefix Owner Base URL
pipelex. Pipelex https://docs.pipelex.com/errors

request

The HTTP request itself, before any run.

Code Title Domain Retry Status
request.malformed The request body cannot be parsed input no 422
request.invalid The request does not match the route's schema input no 422
request.too_large The request exceeds a size limit input no 413
request.not_found No such route input no 404
request.method_not_allowed The route does not accept this HTTP method input no 405
request.unsupported The request uses a form this runtime does not accept input no 422
request.idempotency_conflict The idempotency key was used for a different request input no 409
request.idempotency_key_in_use A request under this idempotency key is still running runtime yes 409
request.already_executed The request already ran and its answer is not kept input no 409
request.pipe_not_found The selected pipe is not in the method input no 422
request.pipe_ambiguous The pipe selection matches several pipes input no 422
request.pipe_unspecified No pipe is selected input no 422
request.blobs_missing The runner does not hold some files sent by hash input no 422

auth

Credentials and permissions.

Code Title Domain Retry Status
auth.missing_credential No credential was sent account no 401
auth.invalid_credential The credential was refused account no 401
auth.credential_expired The credential has expired account no 401
auth.forbidden The credential does not permit this account no 403

account

The account's limits.

Code Title Domain Retry Status
account.rate_limited The account is over its request rate account yes 429
account.quota_exhausted The account's quota is used up account no 429

input

A run's inputs.

Code Title Domain Retry Status
input.missing A required input is missing input no 422
input.unexpected An input the method does not declare input no 422
input.wrong_concept An input is not the declared concept input no 422
input.wrong_multiplicity An input has the wrong number of items input no 422
input.invalid An input does not fit its concept's structure input no 422
input.file_unreadable An input file cannot be read input no 422
input.file_type_unsupported An input file's type is not supported here input no 422
input.too_large An input exceeds a size limit input no 422
input.reference_not_found An input refers to something that does not exist input no 422
input.url_unreachable An input's URL could not be fetched input yes 422

method

The method as written, the validation vocabulary included.

Code Title Domain Retry Status
method.invalid The method does not validate method no 422
method.syntax The method does not parse method no 422
method.schema_violation The method breaks a rule of the language method no 422
method.not_found No method at this address input no 404
method.ambiguous The method address matches several methods input no 422
method.fetch_failed The method could not be fetched runtime yes 502
method.package_invalid The method's package breaks a package rule method no 422
method.dependency_missing A dependency of the method is not available method no 422
method.dependency_invalid A dependency of the method does not load method no 422
method.resource_missing A file the method refers to is not in its tree method no 422
method.concept_unresolved The method names a concept no library declares method no 422
method.pipe_unresolved The method names a pipe that does not exist method no 422
method.pipe_not_exported The method calls a pipe its dependency does not export method no 422
method.ref_ambiguous A reference matches several declarations method no 422
method.name_conflict A name is declared twice or collides with a reserved one method no 422
method.cycle Declarations form a cycle method no 422
method.identifier_invalid A name is not a valid identifier method no 422
method.pipe_type_invalid A pipe's type is missing, unknown or retired method no 422
method.signature_mismatch A pipe differs from its signature method no 422
method.not_runnable The method still holds pipe signatures method no 422
method.input_undeclared A pipe reads an input it does not declare method no 422
method.input_unused A pipe declares an input it never reads method no 422
method.input_concept_mismatch A pipe's input concept does not fit its use method no 422
method.output_concept_mismatch A pipe's output concept does not fit method no 422
method.output_multiplicity_mismatch A pipe's declared multiplicity does not fit its use method no 422
method.wiring_invalid A pipe's wiring does not give it what it reads method no 422
method.field_path_unresolved A path names a field its concept does not have method no 422
method.binding_step_invalid A binding step is malformed method no 422
method.optional_marker_invalid An optional marker is misplaced method no 422
method.optional_unhandled An optional value reaches a place that needs a required one method no 422
method.template_invalid A template in the method is invalid method no 422
method.template_private_name A template reads a name reserved to the runtime method no 422
method.function_invalid A function the method declares cannot be used method no 422
method.concept_invalid A concept's structure cannot be built or described method no 422
method.model_setting_invalid A model setting in the method is invalid method no 422
method.mock_unsatisfiable The dry run cannot mock an output concept method no 422
method.changed_concurrently A method file changed while it was being fixed runtime yes 409
method.hint_invalid A hint is not understood method no none (warning)
method.input_presence_vacuous A presence check always holds method no none (warning)
method.optional_force_redundant An optional force is redundant method no none (warning)

pipe

A pipe failing at run time because of what the method does.

Code Title Domain Retry Status
pipe.output_multiplicity A pipe's output does not have the declared multiplicity method no 422
pipe.output_invalid A pipe's output does not fit its concept method no 422
pipe.function_raised The method's function raised method no 422
pipe.function_timed_out The method's function ran past its time limit method no 422
pipe.template_render_failed A template failed to render method no 422
pipe.template_budget_exceeded A template exceeded its render budget method no 422
pipe.condition_unmatched A condition matched no outcome method no 422
pipe.condition_refused The method refused these inputs input no 422
pipe.binding_failed A binding step could not bind its value method no 422
pipe.input_unresolved A pipe could not read a value it needs method no 422
pipe.forced_input_absent A forced input was absent method no 422
pipe.prompt_empty A pipe's prompt is empty input no 422
pipe.stack_overflow The run nested pipes deeper than the limit method no 422

model

The model a step names.

Code Title Domain Retry Status
model.unknown The method names a model that does not exist method no 422
model.unavailable This deployment serves no backend for the model operator no 501
model.unspecified No model is named for this step method no 422
model.capability_unsupported The model cannot do what the step asks method no 422
model.context_exceeded The inputs exceed what the model can read input no 422
model.output_truncated The answer was cut at the method's token cap method no 422
model.output_schema_mismatch The model's structured output did not match its schema runtime yes 502
model.content_refused The provider refused the content input no 422
model.no_result The model found nothing for this request input no 422

provider

The inference provider behind a model.

Code Title Domain Retry Status
provider.rate_limited The provider is rate limiting this deployment runtime yes 429
provider.unavailable The provider is unavailable runtime yes 502
provider.timeout The provider did not answer in time runtime yes 504
provider.failed The provider failed runtime yes 502
provider.response_invalid The provider's answer could not be used runtime yes 502
provider.credential_refused The provider refused this deployment's credential operator no 502
provider.quota_exhausted This deployment's provider account is out of quota operator no 502
provider.outcome_unknown The provider call may have taken effect runtime yes 502

run

A run's lifecycle and its reads.

Code Title Domain Retry Status
run.not_found No such run input no 404
run.failed The run did not succeed runtime no 409
run.not_finished The run has not finished runtime yes 409
run.cancelled The run was cancelled by its caller input yes 409
run.timed_out The run passed its time limit method no 422
run.lost The run's outcome is lost runtime outcome_unknown 500
run.outcome_unknown The runtime cannot tell whether the run started or finished runtime outcome_unknown 502
run.already_ended The run has already ended input no 409
run.answer_not_kept The run's answer was not kept input no 409
run.results_not_stored The run's results were not stored input no 404
run.terminated The run was stopped by an operator or an erasure operator no 409

security

Refusals made for safety. An implementation may also record each one as a security event.

Code Title Domain Retry Status
security.input_url_refused A URL in the request was refused input no 422
security.method_url_refused A URL the method names was refused method no 422
security.provider_url_refused A URL a provider returned was refused runtime no 502
security.input_path_refused A path the caller supplied was refused input no 422
security.method_path_refused A path the method names was refused method no 422
security.template_refused A template was refused by the template sandbox method no 422
security.schema_refused An output schema was refused method no 422
security.integrity_mismatch A dependency's content differs from its lock method no 422

runtime

The runtime itself.

Code Title Domain Retry Status
runtime.unexpected An unexpected error occurred runtime no 500
runtime.misconfigured The runtime is misconfigured operator no 500
runtime.unavailable The runtime or a service it depends on is unavailable runtime yes 503
runtime.unsupported This runtime cannot do what was asked operator no 501

client

What a client detects itself, and never receives as a response body.

Code Title Domain Retry Status
client.unreachable The runtime could not be reached runtime yes none (client)
client.timeout The runtime did not answer in time runtime yes none (client)
client.response_unreadable The runtime's answer could not be read runtime no none (client)
client.outcome_unknown The call may have created a run runtime outcome_unknown none (client)
client.follow_failed Following a started run stopped runtime outcome_unknown none (client)
client.not_configured The client has no usable configuration input no none (client)
client.argument_invalid An argument was refused before sending input no none (client)
client.file_unreadable A local file cannot be read input no none (client)
client.write_failed A local file could not be written input no none (client)
client.target_exists The target already exists input no none (client)
client.workspace_busy Local files changed underneath the client runtime yes none (client)
client.output_mismatch An output does not match the generated types input no none (client)
client.link_refused A download link was refused operator no none (client)
client.download_limit_exceeded A download passed the client's limit input no none (client)
client.aborted The call was stopped by the caller input yes none (client)
client.tool_missing A local tool the client needs is missing input no none (client)
client.tool_outdated A local tool is too old input no none (client)