Overview
Chat Tools allow your app to provide custom functions that become available in Omi chat when users install your app. These tools enable the AI assistant to interact with your service directly through natural language conversations.Custom Actions
Define tools that perform actions on external services
Natural Language
Users interact with tools through normal conversation
Automatic Discovery
Tools become available when users install your app
- Send messages to Slack channels
- List available channels
- Search messages in Slack
Chat Tools require your app to have the
external_integration capability enabled. They are not a separate capability, but rather a feature that works with external integration apps.How Chat Tools Work
1
User Chats with Omi
User makes a request in natural language
2
AI Decides to Use Tool
Omi’s AI determines your tool is the best way to fulfill the request
3
Omi Calls Your Endpoint
POST request with
uid, app_id, tool_name, plus extracted parameters4
Your Server Processes
Execute the action and return a result
5
User Sees Result
Omi displays your response to the user
Part 1: Implementing Chat Tools
Step 1: Create Tool Endpoints
Your backend server needs to expose endpoints that Omi will call when tools are invoked.Endpoint Requirements
Endpoint Requirements
Your endpoints should:
- Accept POST requests with JSON payload (or GET with query parameters)
- Receive these standard fields:
uid: User IDapp_id: Your app IDtool_name: Name of the tool being called- Plus any tool-specific parameters
- Return JSON with either:
result: Success message (string)error: Error message (string)
Example: Send Message Tool
Example: Search Tool
Step 2: Handle Authentication
If your tools require user authentication:Store Tokens Securely
Save OAuth tokens in a secure database associated with
uidValidate Authentication
Check if user has connected their account before processing
Return Helpful Errors
If auth is missing, return a clear error message
Step 3: Error Handling Best Practices
Part 2: Adding Chat Tools in Omi App Store
Chat tools are defined via a manifest endpoint hosted on your server. When you create or update your app in the Omi App Store, Omi will automatically fetch the tool definitions from your manifest URL.Single Source of Truth
Tool definitions live on your server
Easy Updates
Modify your manifest and re-save the app to refresh
Full Control
Define parameters with JSON Schema
Version Control
Track changes in your codebase
Step 1: Create the Manifest File
Create a JSON file at/.well-known/omi-tools.json on your server: Step 2: Host the Manifest
Make sure your manifest is accessible via HTTPS. Common locations:https://your-app.com/.well-known/omi-tools.json(recommended)https://your-app.com/omi/manifest.jsonhttps://your-app.com/api/tools-manifest
Step 3: Add Manifest URL in Omi App Store
1
Open Omi App
Navigate to Apps → Create App (or edit an existing app)
2
Select Capability
Choose External Integration capability
3
Enter Manifest URL
In the Chat Tools Manifest URL field, enter:
4
Submit
Omi will automatically fetch your tool definitions
Endpoint URLs in Manifest: You can use relative paths (e.g.,
/api/send_message) in your manifest. Omi will automatically resolve them using your App Home URL as the base URL.Manifest Schema Reference
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique tool identifier (e.g., send_slack_message) |
description | string | Yes | Detailed description for the AI to understand when/how to use the tool |
endpoint | string | Yes | URL endpoint (can be relative or absolute) |
method | string | No | HTTP method (default: POST) |
parameters | object | No | JSON Schema defining tool parameters |
auth_required | boolean | No | Whether user auth is required (default: true) |
status_message | string | No | Message shown to user when tool is called |
Parameters Schema
Example: FastAPI Manifest Endpoint
Tool Definition Best Practices
Tool Names
Tool Names
Use descriptive, action-oriented names:
| Good | Bad |
|---|---|
send_slack_message | slack1 |
list_slack_channels | do_stuff |
search_slack_messages | msg |
Descriptions
Descriptions
Write detailed descriptions that help the AI understand:
- When to use: “Use this when the user wants to…”
- Required parameters: List what’s needed
- What it does: Clear explanation of the action
HTTP Methods
HTTP Methods
Choose the appropriate method:
| Method | Use For |
|---|---|
POST | Creating resources or sending data (most common) |
GET | Retrieving data (parameters as query params) |
PUT/PATCH | Updating resources |
DELETE | Deleting resources |
Status Messages
Status Messages
Provide custom messages shown during tool execution:
- “Searching Slack…”
- “Sending message…”
- “Creating calendar event…”
Request and Response Format
Request Format
POST Request:Response Format
- Success
- Error
200Best Practices
Clear Responses
Keep responses concise but informative
- ✅ “Successfully sent message to #general”
- ❌ “OK”
Helpful Errors
Guide users on how to fix issues
- ✅ “Slack not connected. Please connect your account.”
- ❌ “Error 401”
Secure Auth
Store tokens encrypted and implement token refresh for long sessions
Rate Limiting
Protect your endpoints from abuse
Rate Limiting Example
Testing Your Tools
1
Test Endpoints Directly
Use curl or Postman before adding to your app:
2
Create the App
Add your tool definitions in the Omi App Store
3
Install the App
Install it in your test account
4
Connect Your Account
If auth is required, click the connect button in app settings
5
Test in Chat
Try using the tools naturally:
- “Send a message to #general saying hello”
- “What Slack channels do I have?”
- “Search Slack for messages about the project”
Troubleshooting
Tool Not Appearing in Chat
Tool Not Appearing in Chat
- Verify the app is installed and enabled (
enabled: true) - Check that
chat_toolsarray is properly formatted - Ensure endpoints are accessible and return proper responses
- Verify the app has
external_integrationcapability
Tool Calls Failing
Tool Calls Failing
- Check endpoint logs for errors
- Verify authentication is working
- Ensure response format matches specification
- Test endpoints directly with curl/Postman
- Check that required parameters are being sent
AI Not Using Your Tool
AI Not Using Your Tool
- Improve tool description to be more specific about when to use it
- Add examples in the description
- Ensure tool name is descriptive
- Make sure the description clearly states when the tool should be used
Complete Example
Slack Integration Example
See a complete working example that demonstrates OAuth authentication, multiple chat tools, handling invocations, and error handling
Related Documentation
Developer API
Access your own personal Omi data programmatically
Data Import APIs
Create conversations and memories via REST API
Integration Apps
Learn about external integrations
OAuth Guide
Set up authentication for your app
Submit Your App
Publish your app to the store
Notifications
Send push notifications to users