diff --git a/fern/tools/custom-tools-troubleshooting.mdx b/fern/tools/custom-tools-troubleshooting.mdx index b46eb6ad2..3d1b9784d 100644 --- a/fern/tools/custom-tools-troubleshooting.mdx +++ b/fern/tools/custom-tools-troubleshooting.mdx @@ -31,7 +31,8 @@ Start with the most common issue for your symptoms: format problems - **Symptoms:** Tool parameters or responses truncated Increase token limits + **Symptoms:** Tool parameters or responses truncated Increase the model + token limit @@ -83,8 +84,7 @@ Add `strict: true` to catch validation errors early: "parameters": { // ... your parameters }, - "strict": true, - "maxTokens": 500 + "strict": true } ``` @@ -225,20 +225,17 @@ Tool returns data but the assistant doesn't use it in conversation. Tool parameters or responses are getting cut off. -### Increase token limits +### Increase the model token limit -The default token limit is only 100. Increase it for complex tools: +Tool call arguments are generated by the model, so they draw on the same +per-turn token budget as speech. Raise `maxTokens` on the assistant's `model`, +not on the tool. It accepts a value from `50` to `10000` and defaults to `250`. -```json title="Tool configuration" {7} -{ - "name": "complex_tool", - "description": "Tool that needs more tokens", - "parameters": { - // ... your parameters - }, - "maxTokens": 500 // Increase from default 100 -} -``` + + `maxTokens` is a model property, not a tool property. Setting it inside + `tools[].function` is rejected with `400 Bad Request` and the message + `assistant.model.each value in tools.function.property maxTokens should not exist`. + Look for "Token truncation warnings" in your call logs to identify when this @@ -353,24 +350,32 @@ Tool behavior doesn't match your expectations. ```json title="Complete tool configuration" { - "name": "tool_name", - "description": "Clear description of what the tool does", - "parameters": { - "type": "object", - "properties": { - "param1": { - "type": "string", - "description": "Parameter description" - } + "type": "function", + "async": false, + "function": { + "name": "tool_name", + "description": "Clear description of what the tool does", + "parameters": { + "type": "object", + "properties": { + "param1": { + "type": "string", + "description": "Parameter description" + } + }, + "required": ["param1"] }, - "required": ["param1"] + "strict": true }, - "strict": true, - "maxTokens": 500, - "async": false + "server": { + "url": "https://your-server.com/webhook" + } } ``` +`name`, `description`, `parameters` and `strict` belong inside `function`. +`type`, `async` and `server` sit on the tool itself. + ### Critical response rules **Always return HTTP 200** - Even for errors @@ -389,5 +394,5 @@ Look for these key error messages in your call logs: | "Tool call ID mismatches" | toolCallId doesn't match | Ensure exact ID match | | "HTTP errors" | Webhook not returning 200 | Return HTTP 200 always | | "Schema validation errors" | Missing required parameters | Check required array | -| "Token truncation warnings" | Need more tokens | Increase maxTokens | +| "Token truncation warnings" | Need more tokens | Increase `model.maxTokens` | | "Response parsing errors" | Malformed JSON/line breaks | Fix JSON format |