Resources
MCP resources provide contextual, read-only data that AI agents can reference when making decisions. Unlike tools, resources are data sources -- not actions.
What Are Resources?
In the MCP protocol, resources are named data endpoints that provide context to AI agents. When an agent connects to FrontDeskOS, it can read resources to understand the current state of the business -- who the staff members are, what services are offered, what the business hours look like, and more.
Resources are read at the start of a conversation or when explicitly refreshed. They help the AI give accurate, context-aware responses without needing to call tools first.
frontdesk://business-info
Core business information including name, address, phone number, website, and description. Used by the AI to identify itself and provide accurate business details to callers.
{
"name": "Riverside Family Dental",
"address": "123 Main Street, Suite 200, Portland, OR 97201",
"phone": "+1-503-555-0100",
"website": "https://riverside-dental.com",
"description": "Full-service family dental practice offering preventive, restorative, and cosmetic dentistry.",
"specialties": ["General Dentistry", "Orthodontics", "Cosmetic Dentistry"]
}frontdesk://staff-directory
Complete list of staff members with their roles, specialties, and schedules. The AI uses this to route calls, book with the right provider, and answer questions about staff.
{
"staff": [
{
"id": "staff_01",
"name": "Dr. Sarah Johnson",
"role": "Dentist",
"specialties": ["General", "Cosmetic"],
"schedule": {
"monday": "08:00-17:00",
"tuesday": "08:00-17:00",
"wednesday": "08:00-17:00",
"thursday": "08:00-19:00",
"friday": "08:00-15:00"
}
},
{
"id": "staff_02",
"name": "Dr. Michael Chen",
"role": "Orthodontist",
"specialties": ["Orthodontics", "Invisalign"],
"schedule": {
"monday": "09:00-17:00",
"wednesday": "09:00-17:00",
"friday": "09:00-15:00"
}
}
]
}frontdesk://services
List of all services offered with descriptions, durations, and pricing. Helps the AI answer questions about what services are available and book the correct appointment type.
{
"services": [
{
"id": "svc_01",
"name": "Dental Cleaning",
"description": "Professional teeth cleaning and oral exam",
"duration_minutes": 60,
"price_range": "$150-$250",
"requires_staff": ["Dentist", "Hygienist"]
},
{
"id": "svc_02",
"name": "Orthodontic Consultation",
"description": "Initial consultation for braces or Invisalign",
"duration_minutes": 45,
"price_range": "Complimentary",
"requires_staff": ["Orthodontist"]
}
]
}frontdesk://business-hours
Current business hours and holiday schedule. The AI uses this to inform callers about office hours and determine when to offer voicemail vs. live scheduling.
frontdesk://faqs
Frequently asked questions and their answers. Populated from your workspace's knowledge base, these allow the AI to answer common questions without needing custom prompts.
frontdesk://voice-agents
Voice agent configurations and status. Returns a list of configured voice agents with provider, voice settings, and activity status.
{
"voice_agents": [
{
"id": "va_01",
"name": "Main Reception Agent",
"provider": "retell",
"voice": "jennifer",
"language": "en-US",
"status": "active",
"calls_handled_today": 47,
"avg_duration_seconds": 185,
"settings": {
"greeting": "Thank you for calling Riverside Family Dental. How can I help you?",
"transfer_on_complex": true,
"max_call_duration": 600
}
},
{
"id": "va_02",
"name": "After-Hours Agent",
"provider": "vapi",
"voice": "matthew",
"language": "en-US",
"status": "inactive",
"calls_handled_today": 0,
"avg_duration_seconds": 120,
"settings": {
"greeting": "You've reached Riverside Family Dental after hours.",
"transfer_on_complex": false,
"max_call_duration": 300
}
}
]
}frontdesk://automations
Active automation workflows. Returns configured automations with triggers, conditions, actions, and execution stats.
{
"automations": [
{
"id": "auto_01",
"name": "New Lead Follow-Up",
"trigger": "lead.created",
"status": "active",
"conditions": [
{ "field": "lead.source", "operator": "in", "value": ["website", "referral"] }
],
"actions": [
{ "type": "send_sms", "template": "welcome_new_lead" },
{ "type": "assign_agent", "agent_id": "va_01" },
{ "type": "create_task", "assignee": "front_desk" }
],
"stats": {
"total_executions": 1284,
"last_executed": "2025-02-23T14:32:00Z",
"success_rate": 0.978
}
},
{
"id": "auto_02",
"name": "Missed Call Callback",
"trigger": "call.missed",
"status": "active",
"conditions": [
{ "field": "call.business_hours", "operator": "eq", "value": true }
],
"actions": [
{ "type": "send_sms", "template": "missed_call_apology" },
{ "type": "schedule_callback", "delay_minutes": 15 }
],
"stats": {
"total_executions": 567,
"last_executed": "2025-02-23T16:45:00Z",
"success_rate": 0.992
}
}
]
}frontdesk://custom/ prefix and can contain any business-specific information your AI needs.Reading Resources Programmatically
// Read a specific resource
const businessInfo = await mcp.readResource("frontdesk://business-info");
// List all available resources
const resources = await mcp.listResources();
// Returns: ["frontdesk://business-info", "frontdesk://staff-directory", ...]