Skip to main content

Bifrost Tool Catalog

Complete reference for all tools available through the Bifrost MCP Gateway.


Overview

Bifrost provides 21 tools across 7 domains that agents can invoke. All tools are executed through the Bifrost API and routed to appropriate backends (Norns, n8n, etc.).


Tool Index

DomainToolsDescription
Tasks6Task and project management
Calendar2Calendar events
Home2Smart home control
Shopping2Shopping lists and inventory
Navigation3Directions and places
Observability4System monitoring
Admin1User management
System1Internal testing

Tasks Domain

query_tasks

Query tasks with optional filters.

Example Phrases:

  • "What's on my todo list?"
  • "Show me high priority tasks"
  • "What tasks are in the Ravenhelm project?"

Input Schema:

{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Filter by status: open, completed, all"
},
"project": {
"type": "string",
"description": "Filter by project name or ID"
},
"limit": {
"type": "integer",
"description": "Maximum results (default 10)"
}
}
}

Example Call:

{
"tool_name": "query_tasks",
"arguments": {
"status": "open",
"limit": 5
}
}

Returns: Array of task objects with id, title, status, due_date, project.


create_task

Create a new task.

Example Phrases:

  • "Add a task to call mom"
  • "Create a task: review PR by Friday"
  • "Remind me to buy groceries tomorrow"

Input Schema:

{
"type": "object",
"required": ["title"],
"properties": {
"title": {
"type": "string",
"description": "Task title (required)"
},
"description": {
"type": "string",
"description": "Detailed description"
},
"project": {
"type": "string",
"description": "Project name or ID"
}
}
}

Example Call:

{
"tool_name": "create_task",
"arguments": {
"title": "Call mom",
"project": "Personal"
}
}

Returns: Created task object with assigned ID.


update_task

Update an existing task's properties.

Example Phrases:

  • "Move the dentist task to next week"
  • "Change the priority of code review to high"
  • "Rename the task to 'Review authentication PR'"

Input Schema:

{
"type": "object",
"required": ["task_id"],
"properties": {
"task_id": {
"type": "string",
"description": "Task ID (required)"
},
"title": {
"type": "string",
"description": "New title"
},
"status": {
"type": "string",
"description": "New status"
}
}
}

Returns: Updated task object.


complete_task

Mark a task as complete.

Example Phrases:

  • "Mark the grocery task as done"
  • "Complete the code review task"
  • "I finished the documentation"

Input Schema:

{
"type": "object",
"required": ["task_id"],
"properties": {
"task_id": {
"type": "string",
"description": "Task ID to complete"
}
}
}

Returns: Confirmation with task details.


query_projects

List available projects.

Example Phrases:

  • "What projects do I have?"
  • "Show me active projects"
  • "List all projects"

Input Schema:

{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Filter: active, archived, all"
},
"limit": {
"type": "integer",
"description": "Maximum results"
}
}
}

Returns: Array of project objects.


get_daily_summary

Get a summary of today's tasks and calendar events.

Example Phrases:

  • "Give me my daily summary"
  • "What do I have going on today?"
  • "Brief me on my day"

Input Schema:

{
"type": "object",
"properties": {}
}

Returns: Object with tasks_due, tasks_overdue, calendar_events, summary_text.


Calendar Domain

calendar_read

Read calendar events for a date range.

Example Phrases:

  • "What's on my calendar today?"
  • "Do I have any meetings tomorrow?"
  • "What's my schedule for this week?"

Input Schema:

{
"type": "object",
"properties": {
"days_ahead": {
"type": "integer",
"description": "Number of days to look ahead (default 1)"
}
}
}

Example Call:

{
"tool_name": "calendar_read",
"arguments": {
"days_ahead": 7
}
}

Returns: Array of calendar events with title, start, end, location.


calendar_create

Create a new calendar event.

Example Phrases:

  • "Schedule a meeting with John at 3pm Friday"
  • "Add dentist appointment tomorrow at 10am"
  • "Create an event: team lunch on Monday at noon"

Input Schema:

{
"type": "object",
"required": ["title", "start"],
"properties": {
"title": {
"type": "string",
"description": "Event title (required)"
},
"start": {
"type": "string",
"description": "Start time in ISO format (required)"
},
"end": {
"type": "string",
"description": "End time in ISO format"
}
}
}

Returns: Created event with calendar ID.


Home Domain

home_status

Get current status of Home Assistant entities.

Example Phrases:

  • "What's the temperature inside?"
  • "Are any lights on?"
  • "Is the garage door open?"
  • "What's the status of my home?"

Input Schema:

{
"type": "object",
"properties": {}
}

Returns: Object with entity states grouped by domain (lights, climate, locks, etc.).


home_command

Execute a Home Assistant command.

Example Phrases:

  • "Turn off the living room lights"
  • "Set the thermostat to 72"
  • "Lock the front door"
  • "Turn on the porch light"

Input Schema:

{
"type": "object",
"required": ["command"],
"properties": {
"command": {
"type": "string",
"description": "Natural language command"
}
}
}

Example Call:

{
"tool_name": "home_command",
"arguments": {
"command": "turn off living room lights"
}
}

Returns: Confirmation of action taken.


Shopping Domain

add_shopping_item

Add an item to the shopping list.

Example Phrases:

  • "Add milk to the shopping list"
  • "I need to buy eggs"
  • "Add 2 loaves of bread"

Input Schema:

{
"type": "object",
"required": ["item"],
"properties": {
"item": {
"type": "string",
"description": "Item name (required)"
},
"quantity": {
"type": "integer",
"description": "Quantity (default 1)"
}
}
}

Returns: Confirmation with item added to Grocy.


query_inventory

Check current inventory or shopping list.

Example Phrases:

  • "What do I need from the store?"
  • "Do we have coffee?"
  • "What's in my pantry?"

Input Schema:

{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Filter by category"
}
}
}

Returns: Array of inventory items or shopping list.


get_directions

Get turn-by-turn directions between locations.

Example Phrases:

  • "How do I get to the airport?"
  • "Give me directions to 123 Main Street"
  • "Navigate to Whole Foods"

Input Schema:

{
"type": "object",
"required": ["from", "to"],
"properties": {
"from": {
"type": "string",
"description": "Starting location (required)"
},
"to": {
"type": "string",
"description": "Destination (required)"
}
}
}

Returns: Route with steps, distance, and estimated time.


get_travel_time

Get estimated travel time with current traffic.

Example Phrases:

  • "How long to get to work?"
  • "What's the drive time to downtown?"
  • "How long will it take to get to the airport?"

Input Schema:

{
"type": "object",
"required": ["from", "to"],
"properties": {
"from": {
"type": "string",
"description": "Starting location"
},
"to": {
"type": "string",
"description": "Destination"
}
}
}

Returns: Travel time in minutes with traffic conditions.


search_places

Search for places by name or category.

Example Phrases:

  • "Find coffee shops near me"
  • "Where's the nearest gas station?"
  • "Search for Italian restaurants"

Input Schema:

{
"type": "object",
"required": ["query"],
"properties": {
"query": {
"type": "string",
"description": "Search query (required)"
},
"type": {
"type": "string",
"description": "Place type filter"
}
}
}

Returns: Array of places with name, address, distance.


Observability Domain

container_status

Check Docker container health and status.

Example Phrases:

  • "Is postgres healthy?"
  • "What containers are running?"
  • "Check the status of norns-agent"

Input Schema:

{
"type": "object",
"properties": {
"container": {
"type": "string",
"description": "Container name (optional, all if omitted)"
}
}
}

Returns: Container status with health, uptime, resource usage.


query_logs

Search system logs.

Example Phrases:

  • "Show me errors from norns-agent"
  • "What happened in the last hour?"
  • "Find logs mentioning authentication"

Input Schema:

{
"type": "object",
"required": ["query"],
"properties": {
"query": {
"type": "string",
"description": "Log search query (required)"
},
"limit": {
"type": "integer",
"description": "Maximum results (default 50)"
}
}
}

Returns: Array of log entries matching query.


check_metrics

Check system metrics.

Example Phrases:

  • "What's the CPU usage?"
  • "How much memory is being used?"
  • "Check disk space"

Input Schema:

{
"type": "object",
"required": ["metric"],
"properties": {
"metric": {
"type": "string",
"description": "Metric to check: cpu, memory, disk, network"
}
}
}

Returns: Current metric value with thresholds.


grafana_dashboard

Get a link to a Grafana dashboard.

Example Phrases:

  • "Show me the system dashboard"
  • "Open the Norns metrics"
  • "Link to the overview dashboard"

Input Schema:

{
"type": "object",
"properties": {
"dashboard": {
"type": "string",
"description": "Dashboard name"
}
}
}

Returns: Dashboard URL and summary.


Admin Domain

onboard_user

Create a new user account.

Example Phrases:

Input Schema:

{
"type": "object",
"required": ["slack_user_id", "email", "display_name"],
"properties": {
"slack_user_id": {
"type": "string",
"description": "Slack user ID"
},
"email": {
"type": "string",
"description": "User email"
},
"display_name": {
"type": "string",
"description": "Display name"
},
"timezone": {
"type": "string",
"description": "User timezone"
}
}
}

Returns: Created user object with ID.


System Domain

n8n_echo

Test tool for verifying n8n workflow execution.

Input Schema:

{
"type": "object",
"required": ["message"],
"properties": {
"message": {
"type": "string",
"description": "Message to echo back"
}
}
}

Returns: Echoed message confirming n8n connectivity.


API Usage

Execute a Tool

curl -X POST https://bifrost-api.ravenhelm.dev/mcp/tools/call \
-H "Content-Type: application/json" \
-H "X-API-Key: $BIFROST_API_KEY" \
-d '{
"organization_id": "00000000-0000-0000-0000-000000000001",
"tool_name": "query_tasks",
"arguments": {"status": "open"}
}'

List Available Tools

curl -X POST https://bifrost-api.ravenhelm.dev/mcp/tools/list \
-H "Content-Type: application/json" \
-H "X-API-Key: $BIFROST_API_KEY" \
-d '{"organization_id": "00000000-0000-0000-0000-000000000001"}'

See Also

  • [[Bifrost-MCP-Gateway]] - Gateway architecture
  • [[../Use-Cases]] - End-to-end usage examples
  • [[../DevOps/MCP-Servers]] - MCP server configuration