Skip to content

Commit d3feeee

Browse files
committed
docs(tools): improve Quick Selection Guide per reviewer feedback
- Add Functions vs Tools vs Pipelines separation table - Include Actions in decision tree (was missing) - Clarify OpenAPI Tools support for event emitters/advanced features - Document native MCP HTTP streaming vs MCPO proxy paths - More nuanced examples: Filters, Pipes, Actions differentiated - Restructure decision tree for clearer category boundaries Addresses maintainer review comments on PR #1087
1 parent 500526a commit d3feeee

File tree

1 file changed

+79
-1
lines changed
  • docs/features/extensibility/plugin/tools

1 file changed

+79
-1
lines changed

docs/features/extensibility/plugin/tools/index.mdx

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,85 @@ These are **Python scripts** that run directly within the Open WebUI environment
4747
- **MCPO (Proxy)**: Most community MCP servers use `stdio` (local command line). To use these in Open WebUI, you use the [**MCPO Proxy**](../../plugin/tools/openapi-servers/mcp.mdx) to bridge the connection.
4848

4949
### 4. OpenAPI / Function Calling Servers
50-
Generic web servers that provide an OpenAPI (`.json` or `.yaml`) specification. Open WebUI can ingest these specs and treat every endpoint as a tool.
50+
Generic web servers that provide an OpenAPI (`.json` or `.yaml`) specification.
51+
Open WebUI can ingest these specs and treat every endpoint as a tool.
52+
53+
---
54+
55+
## Quick Selection Guide
56+
57+
🎯 Not sure which extension type to use?
58+
Start here.
59+
60+
### Categories Explained
61+
62+
| Category | Purpose | Code Location |
63+
|----------|---------|---------------|
64+
| **Native Features** | Built-in capabilities (Web Search, Image Gen) | None (internal) |
65+
| **Functions** | Transform or intercept messages | Open WebUI server |
66+
| **Tools** | Execute tasks, call external services | Open WebUI server or external |
67+
| **Pipelines** | Offload heavy processing | Separate container/service |
68+
69+
### Decision Tree
70+
71+
```text
72+
Do you need a built-in capability (Web Search, Image Gen, etc.)?
73+
├─ Yes → Use Native Features (Admin Panel → Settings)
74+
75+
└─ No → Do you need to transform or intercept messages?
76+
├─ Yes → Use Functions
77+
│ ├─ Modify input before model sees it? → Filter
78+
│ ├─ Modify output before user sees it? → Pipe
79+
│ └─ Trigger on message patterns (no modification)? → Action
80+
81+
└─ No → Do you need to execute tasks or call external services?
82+
├─ Yes → Use Tools
83+
│ ├─ Custom Python code → Workspace Tools
84+
│ ├─ REST API with OpenAPI spec → OpenAPI Server
85+
│ │ └─ Need event emitters or advanced features? → Use extended tool API
86+
│ └─ MCP-compatible service → MCP
87+
│ ├─ Server supports HTTP/SSE streaming natively → Native HTTP MCP
88+
│ └─ Stdio-only community server → MCPO Proxy bridge
89+
90+
└─ Yes, but heavy/long-running → Use Pipelines
91+
(separate service/container for async processing)
92+
```
93+
94+
### Common Scenarios
95+
96+
**"I want the model to search the web."**
97+
**Native Web Search** (no code required).
98+
Enable in Admin Panel → Settings → Web Search, then toggle in chat if applicable.
99+
100+
**"I need a custom weather lookup API call."**
101+
**Workspace Tools**.
102+
Write Python to call the API, parse JSON, return structured results to the model.
103+
104+
**"I want to redact sensitive text (PII) before sending to the model."**
105+
**Functions → Filter**.
106+
Intercepts user input, applies regex/patterns, forwards sanitized text to the LLM.
107+
108+
**"I want to format responses with custom markdown or add signatures."**
109+
**Functions → Pipe**.
110+
Transforms model output before displaying to user (e.g., add headers/footers).
111+
112+
**"I want to trigger notifications when certain keywords appear."**
113+
**Functions → Action**.
114+
Event-driven handler: fires on message patterns without modifying message content.
115+
Useful for logging, alerts, or triggering external workflows.
116+
117+
**"I need to run heavy ML classification without slowing the chat UI."**
118+
**Pipelines**.
119+
Separate container/service processes workload asynchronously, returns results when ready.
120+
121+
**"I want to connect my company's internal REST API."**
122+
**OpenAPI Server**.
123+
Provide OpenAPI spec (JSON/YAML); endpoints become auto-generated tools.
124+
125+
**"I have an MCP server from a desktop AI workflow (like Claude Desktop)."**
126+
**MCP**.
127+
- If server supports HTTP streaming: Connect directly (Settings → Connections)
128+
- If stdio-only (most community MCPs): Use [MCPO Proxy](../../plugin/tools/openapi-servers/mcp.mdx) to bridge to HTTP
51129

52130
---
53131

0 commit comments

Comments
 (0)