API Reference

MCP Tools

Reference documentation for all available Dock AI MCP tools.

Overview

Dock AI exposes platform capabilities as MCP tools. These tools are available to any AI assistant that connects to our MCP server.

Info

Tool availability depends on which partner adapters are connected. Each partner (e.g., OpenTable, Planity, SimplyBook) has its own adapter that implements these tools. The available_actions field in search results indicates what actions each business supports.

Automatic User Context

When a user authenticates with Dock AI, their profile information (name, email, phone) is automatically available to tools that need it. This means:

  • The AI assistant doesn't need to ask users for their contact info
  • make_booking and contact tools use the authenticated user's profile
  • Reduced friction for end users - just say "book it" and it's done

Tip

No more "What's your email?" - User context is injected automatically from the OAuth authentication flow. The AI can proceed directly with bookings.

Supported Categories

The category parameter in search helps route queries to the right adapters:

restaurant
health
beauty
real_estate
automotive
events
fitness
professional_services

More categories are added as new adapters are developed.

Available Tools

search

Search for businesses, services, or listings across all connected platforms

businesses:read

Parameters

NameTypeRequiredDescription
querystringYesNatural language search text (e.g., "italian restaurant", "haircut")
categorystringYesCategory for routing: restaurant, health, beauty, real_estate, etc.
locationstringNoCity, postal code, or area
limitnumberNoMax results (default: 10)

Returns

Object with count, results array (id, name, category, description, rating, location, available_actions), and query metadata

get_details

Get detailed information about a specific business or listing

businesses:read

Parameters

NameTypeRequiredDescription
business_idstringYesUnique business identifier (e.g., "demo_resto_001")

Returns

Full business details: name, category, description, rating, location, opening_hours, phone, website, amenities, specialties, and category-specific fields

check_availability

Get available time slots for booking at a business

businesses:read

Parameters

NameTypeRequiredDescription
business_idstringYesBusiness identifier
datestringYesDate to check (format: YYYY-MM-DD)
party_sizenumberNoNumber of people (for restaurants)
visit_typestringNoType of visit (for health: "consultation", "teleconsultation")

Returns

Object with available_times array, slots with time/available/duration_minutes, and availability count

make_booking

Make a reservation or appointment at a business. Customer details (name, email, phone) are automatically injected from the authenticated user's profile.

requests:write

Parameters

NameTypeRequiredDescription
business_idstringYesBusiness identifier
datestringYesDate of booking (format: YYYY-MM-DD)
timestringYesTime of booking (format: HH:MM)
party_sizenumberNoNumber of people (for restaurants)
visit_typestringNoType of visit (for health appointments)
special_requestsstringNoSpecial requests or notes

Returns

Booking confirmation with confirmation_number, booking_details, and cancellation_policy

contact

Send a message or inquiry to a business. Sender details (name, email, phone) are automatically injected from the authenticated user's profile.

requests:write

Parameters

NameTypeRequiredDescription
business_idstringYesBusiness identifier
messagestringYesMessage content
subjectstringNoSubject line (optional)

Returns

Message delivery status with success boolean and confirmation

cancel

Cancel an existing booking

requests:write

Parameters

NameTypeRequiredDescription
confirmation_numberstringYesThe confirmation number from the original booking
reasonstringNoReason for cancellation (optional)

Returns

Cancellation confirmation

Example Usage

Here's how an AI assistant might use these tools in a conversation:

Conversation Example
User: "Find me a nice Italian restaurant in Paris for tomorrow evening"

AI: [calls search]
    → query: "italian restaurant"
    → category: "restaurant"
    → location: "Paris"

AI: "I found 5 Italian restaurants in Paris. La Bella Italia has 4.8 stars
     and is known for their homemade pasta. Would you like me to check
     availability for tomorrow?"

User: "Yes, for 2 people around 8pm"

AI: [calls check_availability]
    → business_id: "demo_resto_001"
    → date: "2025-01-15"
    → party_size: 2

AI: "They have tables available at 19:30, 20:00, and 20:30.
     Which time works best?"

User: "8pm please"

AI: [calls make_booking]
    → business_id: "demo_resto_001"
    → date: "2025-01-15"
    → time: "20:00"
    → party_size: 2
    (user info injected automatically from profile)

AI: "Done! I've booked a table for 2 at La Bella Italia tomorrow at 8pm.
     Confirmation number: #BOOK-12345. You'll receive an email at jean@example.com."

Info

Notice how the AI doesn't ask for the user's name or email - these are automatically injected from the authenticated user's Dock AI profile.

Error Handling

Tools return structured error responses that AI assistants can understand and communicate to users.

Error Response Format
{
  "error": {
    "code": "NO_AVAILABILITY",
    "message": "No tables available for the requested time",
    "suggestions": [
      "Try a different date",
      "Check availability for a smaller party",
      "Consider nearby restaurants"
    ]
  }
}