{"message":"01Mind's Tool Generation Engine auto-builds Safe-tier requests: read-only lookups, stateless calculations, and simple non-money API wrappers. Submit toolDescription (plain language, for classification) plus your own recipe (Charon does not generate one for you) and testParams (real sample values Charon runs once, live, before your tool is ever listed).","safeTierCategories":["read-only lookups","stateless calculations","simple non-money API wrappers"],"recipeTypes":{"math-expression":{"recipe":{"type":"math-expression","expression":"input.celsius * 9 / 5 + 32"},"testParams":{"celsius":23},"notes":"Every variable in the expression MUST be written as input.<name> -- a bare name like \"celsius\" is rejected outright, nothing is inferred. testParams must supply a real numeric value for every input.<name> referenced, or validation fails with a missing-input error even if the expression syntax itself is correct."},"api-call":{"recipe":{"type":"api-call","url":"https://api.example.com/real-endpoint","allowedParams":["location"]},"testParams":{"location":"Sydney"},"notes":"url must be a real, live https:// endpoint. allowedParams names the query params a caller may supply at execution time; testParams must include a real sample value for each one you list, so the one, real, live HTTP call this makes during validation actually succeeds."},"bundle":{"recipe":{"type":"bundle","steps":[{"key":"gasPrice","recipe":{"type":"api-call","url":"https://api.example.com/gas-oracle","allowedParams":[]}},{"key":"tokenPrice","recipe":{"type":"api-call","url":"https://api.example.com/simple/price","allowedParams":["ids","vs_currencies"]}}]},"testParams":{"gasPrice":{},"tokenPrice":{"ids":"ethereum","vs_currencies":"usd"}},"notes":"A bundle needs 2 to 8 steps, each a distinct \"key\" plus its own valid api-call or math-expression recipe -- a step may not itself be type \"bundle\" (no nesting). Each step is validated and executed independently, exactly like a standalone api-call or math-expression -- there is no way for one step to read another step's result. testParams is namespaced per step key (testParams.<key>), never flat."}},"commonFailures":["A bare identifier (e.g. \"celsius\") instead of input.celsius in a math-expression.","testParams missing a real value for an input your expression or allowedParams references.","An api-call url that is not a real, live https:// endpoint."]}