Skip to main content
Chat tools enable Gorkie to interact with Slack, search for information, generate content, and manage tasks during conversations. All chat tools provide real-time status updates and structured return values.

Communication Tools

reply

Send messages to Slack channels or threads.
offset
number
default:0
Number of messages to go back from the triggering message. 0 means reply to the current message. Use with caution in threads.
content
string[]
required
Array of text lines to send. Maximum 4 lines. Each line is sent as a separate message.
type
'reply' | 'message'
default:"reply"
  • reply: Send in a thread (creates thread if needed)
  • message: Post directly in the channel
Returns:
{ success: true, content: "Sent reply to Slack channel" }
// or
{ success: false, error: "Error message" }
Example usage:
// Reply in thread
{ offset: 0, content: ["Here's the answer.", "Let me know if you need more details."], type: "reply" }

// Post to main channel
{ offset: 0, content: ["Update: Task completed successfully."], type: "message" }

react

Add emoji reactions to the current Slack message.
emojis
string[]
required
Array of emoji names (without colons). Supports Unicode and custom Slack emojis.
Returns:
{ success: true, content: "Added reactions: thumbsup, rocket" }
// or
{ success: false, error: "Error message" }
Example usage:
{ emojis: ["thumbsup", "rocket", "tada"] }

Information Retrieval

searchWeb

Search the web using Exa for current information, documentation, news, and articles.
query
string
required
The web search query. Be specific and clear (1-500 characters).
Returns:
{
  results: Array<{
    url: string;
    title: string;
    text?: string;
    // ... Exa search result fields
  }>;
}
Example usage:
{ query: "latest TypeScript 5.4 features" }
{ query: "Vercel AI SDK tool calling examples" }

searchSlack

Search the Slack workspace for messages and content. Requires the user to explicitly mention Gorkie in their message.
query
string
required
Search query for the Slack workspace.
Returns:
{
  success?: false;
  error?: string;
  messages?: Array<SlackSearchMessage>;
}
Example usage:
{ query: "project roadmap" }
{ query: "deployment issues from:@user" }
This tool only works if the user explicitly mentions Gorkie (e.g., @gorkie search for X). It will fail with an error if called without a mention.

getUserInfo

Get detailed information about a Slack user by their user ID.
userId
string
required
Slack user ID (e.g., U123ABC456). Must be a valid Slack user ID, not a display name.
Returns:
{
  success: true;
  data: {
    id: string;
    username: string;
    displayName?: string;
    realName?: string;
    statusText?: string;
    statusEmoji?: string;
    isBot?: boolean;
    tz?: string;
    updated?: number;
    title?: string;
    teamId?: string;
    idResolved: string | null;
  };
}
// or
{ success: false, error: "User not found. Use their Slack ID." }
Example usage:
{ userId: "U12345678" }

getWeather

Get current weather information for a specific location using Open-Meteo API.
latitude
number
required
Geographic latitude of the location (-90 to 90).
longitude
number
required
Geographic longitude of the location (-180 to 180).
Returns:
{
  // Weather data from Open-Meteo API
  current: {
    temperature_2m: number;
    // ... other current weather fields
  };
  hourly: {
    temperature_2m: number[];
    // ... other hourly forecast fields
  };
  daily: {
    sunrise: string[];
    sunset: string[];
    // ... other daily fields
  };
  timezone: string;
}
// or
{ success: false, error: "Failed to fetch weather" }
Example usage:
// Get weather for San Francisco
{ latitude: 37.7749, longitude: -122.4194 }

// Get weather for London
{ latitude: 51.5074, longitude: -0.1278 }
Weather data is provided by the free Open-Meteo API and includes current conditions, hourly forecasts, and daily sunrise/sunset times.

readConversationHistory

Read message history from a public Slack channel or thread.
channelId
string
default:"current channel"
Target Slack channel ID.
threadTs
string
Optional thread timestamp. If provided, reads messages from that specific thread.
limit
number
default:40
Maximum number of messages to return (1-200).
latest
string
Optional upper timestamp bound for returned messages.
oldest
string
Optional lower timestamp bound for returned messages.
inclusive
boolean
default:false
When true, include messages exactly at latest/oldest boundaries.
Returns:
{
  success: true;
  channelId: string;
  threadTs: string | null;
  messageCount: number;
  messages: Array<SlackMessage>;
}
// or
{ success: false, error: "Error message" }
Example usage:
{ channelId: "C12345678", limit: 50 }
{ channelId: "C12345678", threadTs: "1234567890.123456", limit: 100 }
This tool only works with public channels. Reading private channels, DMs, or group DMs is not allowed.

summariseThread

Generate a summary of a Slack thread using AI.
instructions
string
Optional instructions to provide to the summarizer agent (e.g., “focus on action items” or “extract key decisions”).
channelId
string
default:"current channel"
Channel ID containing the thread to summarize.
threadTs
string
required
Timestamp of the thread to summarize. Defaults to current thread if already in one.
Returns:
{
  success: true;
  summary: string;
  messageCount: number;
}
// or
{ success: false, error: "Error message" }
Example usage:
{ channelId: "C12345678", threadTs: "1234567890.123456" }
{ instructions: "Extract action items and owners", threadTs: "1234567890.123456" }

Content Generation

generateImage

Generate AI images from text prompts or transform uploaded images.
prompt
string
required
Image generation prompt with visual details (1-1500 characters).
n
number
default:1
Number of images to generate (1-4).
size
string
Optional image size in {width}x{height} format (e.g., 1024x1024). Cannot be used with aspectRatio.
aspectRatio
string
Optional aspect ratio in {width}:{height} format (e.g., 16:9). Cannot be used with size.
seed
number
Optional seed for reproducible generations.
Returns:
{
  success: true;
  content: "Generated 2 image(s)" | "Generated 1 image(s) from attachment(s)";
}
// or
{ success: false, error: "Error message" }
Example usage:
{ prompt: "A serene mountain landscape at sunset", n: 1, aspectRatio: "16:9" }
{ prompt: "Convert this to pixel art style", n: 2 } // with image attachment

mermaid

Generate Mermaid diagrams and upload them as images to Slack.
code
string
required
Valid Mermaid diagram code (flowchart, sequence diagram, class diagram, etc.).
title
string
Optional title/alt text for the diagram.
Returns:
{ success: true, content: "Mermaid diagram uploaded to Slack and sent" }
// or
{ success: false, error: "Error message" }
Example usage:
{
  code: `flowchart TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Action 1]
    B -->|No| D[Action 2]`,
  title: "Approval Workflow"
}

Task Management

scheduleReminder

Schedule a one-time reminder to be sent to the user via DM.
text
string
required
The reminder message text that will be sent to the user.
seconds
number
required
Number of seconds to wait before sending (max 120 days = 10,368,000 seconds).
Returns:
{ success: true, content: "Scheduled reminder for U12345678 successfully" }
// or
{ success: false, error: "Error message" }
Example usage:
{ text: "Hi! Remember to submit your timesheet.", seconds: 3600 } // 1 hour
{ text: "Meeting in 15 minutes", seconds: 900 }

scheduleTask

Create a recurring cron-based task that executes on a schedule.
task
string
required
Task instructions to run on each execution (1-2000 characters).
cronExpression
string
required
Cron expression (5 or 6 fields, e.g., 0 9 * * 1-5 for weekdays at 9 AM).
timezone
string
required
IANA timezone name (e.g., America/Los_Angeles, Europe/London).
destinationType
'dm' | 'channel'
default:"dm"
Where results should be delivered:
  • dm: Send to the user’s DM
  • channel: Send to a specific channel
channelId
string
Required if destinationType is channel. Defaults to current channel if omitted.
threadTs
string
Optional thread timestamp for channel destinations. Results will post into this thread.
Returns:
{
  success: true;
  taskId: string;
  content: "Scheduled recurring task to your DM. Next run: 2026-03-02T09:00:00.000Z (America/Los_Angeles).";
}
// or
{ success: false, error: "Error message" }
Example usage:
{
  task: "Check the team calendar and send a summary of upcoming meetings",
  cronExpression: "0 9 * * 1-5",
  timezone: "America/New_York",
  destinationType: "channel",
  channelId: "C12345678"
}
Limits:
  • Maximum 20 active scheduled tasks per user
  • Minimum interval: 30 minutes between executions

listScheduledTasks

List your scheduled recurring tasks.
includeDisabled
boolean
default:false
Include disabled/cancelled tasks in the results.
limit
number
default:20
Maximum number of tasks to return (1-50).
Returns:
{
  success: true;
  tasks: Array<{
    id: string;
    enabled: boolean;
    cronExpression: string;
    timezone: string;
    nextRunAt: string; // ISO timestamp
    destinationType: "dm" | "channel";
    destinationId: string;
    threadTs: string | null;
    lastStatus: string;
    lastError: string | null;
    promptPreview: string; // First 140 chars
  }>;
}
Example usage:
{ limit: 10 }
{ includeDisabled: true, limit: 50 }

cancelScheduledTask

Cancel (disable) a scheduled recurring task.
taskId
string
required
The scheduled task ID to cancel.
Returns:
{ success: true, content: "Cancelled scheduled task abc-123." }
// or
{ success: false, error: "No scheduled task found with ID abc-123." }
Example usage:
{ taskId: "550e8400-e29b-41d4-a716-446655440000" }

Utilities

leaveChannel

Leave the current Slack channel. Use carefully and only when explicitly requested by the user.
reason
string
Optional short reason for leaving the channel.
Returns:
{ success: true }
// or
{ success: false, error: "Error message" }
Example usage:
{ reason: "As requested by user" }

skip

End the interaction without replying to the message. Used when no response is appropriate.
reason
string
Optional short reason for skipping the reply.
Returns:
{ success: true }
Example usage:
{ reason: "Message is not intended for bot" }

Code Execution

For code execution and file processing capabilities, see the Sandbox Tools documentation.

Next Steps

Sandbox Tools

Deep dive into code execution and skills

Task Tools

Tools for scheduled task execution

Scheduled Tasks Feature

Learn about recurring automations

Add Custom Tools

Extend Gorkie with new tools

Build docs developers (and LLMs) love