# odin

## Quick Start

```bash
# Connect this server (installs CLI if needed)
npx -y smithery mcp add favcrm/odin

# Browse available tools
npx -y smithery tool list favcrm/odin

# Get full schema for a tool
npx -y smithery tool get favcrm/odin search_members

# Call a tool
npx -y smithery tool call favcrm/odin search_members '{}'
```

## Direct MCP Connection

Endpoint: `https://odin--favcrm.run.tools`

**Required config:**
- `apiKey` (header) — Paste in this exact format: Bearer fav_mcp_xxx — get a key at favcrm.io/developers

## Tools (91)

- `search_members` — Search and filter members/accounts. Supports text search, date ranges, booking/activity history, membership tier, tags,…
- `get_member_profile` — Get detailed profile for a specific member/account by ID.
- `list_tags` — List all available tags for the merchant.
- `attach_tags` — Attach one or more tags to a member/account. Useful for segmenting members after filtering.
- `list_tiers` — List all membership tiers with member counts and stats.
- `get_membership_tier` — Get a specific membership tier by ID.
- `issue_rewards` — Issue a gift/reward to multiple members. Requires a gift offer ID and member IDs.
- `get_dashboard_stats` — Get high-level business KPIs: member count, new members this week, active subscriptions, total points issued, active pr…
- `list_bookings` — List bookings with filters for date range, status, service, staff, or member.
- `get_booking_detail` — Get full booking details including line items, status history, and participants.
- `get_booking_stats` — Get booking counts: today, this week, this month, and breakdown by status.
- `get_available_slots` — Find available booking slots for a service on a specific date.
- `list_services` — List booking services with name, price, duration, and status.
- `get_service_detail` — Get full service details including addons, staff, resources, and tier pricing.
- `list_tickets` — List support tickets with optional filters.
- `get_ticket_stats` — Get ticket counts grouped by status.
- `create_ticket` — Create a support ticket for a member issue.
- `update_ticket_status` — Update the status of an existing support ticket.
- `list_deals` — List CRM deals (sales pipeline) with optional filters.
- `update_deal_stage` — Move a deal to a different pipeline stage.
- `list_contacts` — List contacts (people linked to CRM accounts), optionally filtered by account or search.
- `get_contact` — Fetch a single contact by ID.
- `create_contact` — Create a contact on an existing CRM account.
- `update_contact` — Update fields on an existing contact.
- `list_tasks` — List tasks with optional status, assignee, and account filters.
- `create_task` — Create a task. Optionally link to a CRM account or assign to a team member.
- `update_task` — Update a task (status, priority, assignee, due date, completion).
- `send_whatsapp_message` — Send a WhatsApp text message to a phone number. Uses the company's connected WhatsApp Business account. Records the out…
- `search_crm` — Search across CRM accounts and contacts by name, email, or phone.
- `list_invoices` — List invoices with optional filters. Use status "OVERDUE" to find unpaid invoices past due date.
- `list_subscriptions` — List member subscriptions. Filter by status to find active, cancelled, or past-due subscriptions.
- `list_campaigns` — List marketing campaigns (email, SMS, WhatsApp) with delivery stats.
- `list_conversations` — List messaging conversations across channels (WhatsApp, SMS, email, etc). Shows unread counts and last message time.
- `create_broadcast` — Create a DRAFT WhatsApp or SMS broadcast campaign. The broadcast is NOT sent — admin must review and send it from the B…
- `clone` — Duplicate an existing record (product, tier, campaign, post, service package, promotion, gift offer). Creates a copy in…
- `list_notes` — List notes attached to a member/account, booking, or ticket.
- `create_note` — Add a note to a member/account, booking, ticket, or invoice.
- `confirm_booking` — Confirm a pending booking.
- `cancel_booking` — Cancel a booking. Optionally provide a reason.
- `complete_booking` — Mark a booking as completed. Triggers commission calculation if configured.
- `mark_no_show` — Mark a booking as no-show when the customer did not attend.
- `list_promotions` — List promotion/coupon codes with optional status filter.
- `get_promotion` — Get details of a specific promotion/coupon code.
- `list_reward_schemes` — List loyalty reward schemes (points/stamps programs) configured for this business.
- `list_staff` — List staff/team members in the business.
- `list_resources` — List booking resources (rooms, equipment, etc.).
- `list_my_companies` — List all companies/organisations the current user has access to. Use this to see available orgs before switching.
- `switch_company` — Switch the current session to a different company/organisation. Returns a new access token scoped to the target company…
- `list_posts` — List CMS posts (blog posts and/or pages) with optional filters.
- `get_post` — Get detailed CMS post including content blocks, categories, and tags.
- `create_post` — Create a new CMS post (blog_post, page, or any custom post type). The post type must already exist — use list_post_type…
- `update_post` — Update an existing CMS post (any post type). Only provided fields are changed.
- `delete_post` — Delete a CMS post by ID. Permanent — categories detach automatically (cascade), but blocks/meta are not recoverable.
- `list_categories` — List CMS post categories.
- `create_category` — Create a CMS post category (e.g. "Equipment", "Injection — Botox"). For sub-categories, use namespaced names — the tabl…
- `update_category` — Update a CMS post category.
- `delete_category` — Delete a CMS post category. Posts in the category are not deleted; they are simply unlinked.
- `list_post_types` — List all post types defined for this company (built-in: blog_post, page; plus any custom types).
- `create_post_type` — Define a new custom post type (e.g. "treatment", "service"). Required before creating posts of that type. After creatin…
- `list_post_type_fields` — List the custom field schema for a post type. Use this before creating posts to know which keys to pass in meta and wha…
- `create_post_type_field` — Add a custom field to a post type schema. The field key becomes the key in meta when creating/updating posts. Use field…
- `update_post_type` — Update a custom post type. Built-in types (blog_post, page) cannot be modified.
- `delete_post_type` — Delete a custom post type. Built-in types cannot be deleted. Fails if any posts of this type still exist — delete those…
- `update_post_type_field` — Update a field on a post type schema. Changing fieldType or flipping required=true is blocked when posts already use th…
- `delete_post_type_field` — Remove a field from a post type schema. Blocked when posts of this type still have data in the field unless force=true …
- `reorder_post_type_fields` — Reorder fields on a post type. Pass field IDs in the desired display order; sortOrder is updated to match.
- `append_post_block` — Append one or more blocks to the end of a post. Each block must be a valid block object: { id, version, type, data }. T…
- `replace_post_block` — Replace a single block at the given index (0-based). Avoids fetching the full post and re-sending all blocks via update…
- `remove_post_block` — Remove the block at the given index (0-based). All subsequent blocks shift up by one.
- `reorder_post_blocks` — Reorder blocks by passing block IDs in the desired order. The id list must contain every existing block id exactly once.
- `create_booking` — Create a new booking for a member. Use get_available_slots first to find valid times, then create the booking with the …
- `get_conversation_messages` — Get messages from a specific conversation thread. Shows the chat history between the merchant and a contact.

---
*Response truncated. Use `npx -y smithery` for complete data.*
