You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Regenerate llms-full.txt (now includes the OAuth-MCP and tool-error
schema sections from docs/oauth.md and docs/tools.md).
- Open a fresh `[Unreleased]` heading in CHANGELOG.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Files in the response are uploaded to Slack automatically
332
344
- `initialize()` and `close()` are optional lifecycle hooks
345
+
- For error returns, use `make_tool_error(...)` so the LLM gets a structured payload it can interpret consistently. See [Tool error schema](#tool-error-schema) below.
333
346
334
347
## File Importer Providers
335
348
@@ -405,6 +418,82 @@ tools:
405
418
406
419
All MCP tool providers are initialized in parallel at startup. If any provider fails to connect after exhausting its retries, the agent exits with an error.
407
420
421
+
## MCP over HTTP with OAuth
422
+
423
+
`slack_agents.tools.mcp_http_oauth` is the OAuth-authenticated counterpart to
424
+
`mcp_http` — for MCP servers that require per-user OAuth 2.1 authentication
425
+
rather than a static API key. See [`docs/oauth.md`](oauth.md) for the full
426
+
guide. Minimal example:
427
+
428
+
```yaml
429
+
tools:
430
+
my-mcp:
431
+
type: slack_agents.tools.mcp_http_oauth
432
+
url: "https://my-server.example.com/mcp"
433
+
allowed_functions: [".*"]
434
+
```
435
+
436
+
This pulls in extra runtime requirements: `OAUTH_PUBLIC_URL`,
437
+
`OAUTH_SECRET_KEY`, and an in-process HTTP listener for OAuth callbacks. Read
438
+
the OAuth doc before configuring this in production.
439
+
440
+
## Tool error schema
441
+
442
+
When a tool returns `is_error: True`, every built-in tool emits a JSON-encoded
443
+
payload in `content` matching this shape, so the LLM consuming the result can
444
+
reason about the failure uniformly. Custom tools should produce the same shape
445
+
via the `make_tool_error` helper.
446
+
447
+
```json
448
+
{
449
+
"error": "<type>", // required: e.g. "permission_denied"
0 commit comments