# GoHighLevel MCP → UI Component Analysis

> Comprehensive mapping of all 38 GHL tool files to required UI components.
> Generated 2025-02-03 from source analysis of every tool definition.

---

## Part 1: Endpoint-to-UI Mapping

### 1. Affiliates (17 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_affiliate_campaigns` | List of campaigns with name, commissionType, commissionValue, status | DataTable + StatusBadge | YES |
| `get_affiliate_campaign` | Single campaign detail: name, description, commissionType/Value, cookieDays, productIds | DetailHeader + KeyValueList | YES |
| `create/update/delete_affiliate_campaign` | Confirmation response | ActionButton (toast) | YES |
| `get_affiliates` | List: contactId, campaignId, customCode, status (pending/approved/rejected) | DataTable + StatusBadge | YES |
| `get_affiliate` | Single affiliate detail | DetailHeader + KeyValueList | YES |
| `approve/reject_affiliate` | Action confirmation | ActionButton | YES |
| `get_affiliate_commissions` | List: amount, status (pending/approved/paid), dates | DataTable + StatusBadge + **CurrencyDisplay** | PARTIALLY |
| `get_affiliate_stats` | Performance metrics: clicks, conversions, revenue, date range | StatsGrid + MetricCard + **BarChart** | PARTIALLY |
| `get_payouts` | List: amount, status, affiliateId, note | DataTable + StatusBadge | YES |
| `get_referrals` | List: type (lead/sale), affiliateId, campaignId | DataTable + FilterChips | YES |

**Gaps:** No chart component for affiliate performance over time. No currency/money formatting component.

---

### 2. Associations (10 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `ghl_get_all_associations` | List of associations with key, firstObjectLabel/Key, secondObjectLabel/Key | DataTable | YES |
| `ghl_get_association_by_id/key/object_key` | Single association detail | KeyValueList | YES |
| `ghl_create/update/delete_association` | Confirmation | ActionButton | YES |
| `ghl_create_relation` | Relation between two records | ActionButton | YES |
| `ghl_get_relations_by_record` | List of relations with record IDs | DataTable + **RelationshipGraph** | PARTIALLY |
| `ghl_delete_relation` | Confirmation | ActionButton | YES |

**Gaps:** Entity relationship visualization (graph/diagram showing how objects connect).

---

### 3. Blog (7 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_blog_posts` | List: title, status (DRAFT/PUBLISHED/SCHEDULED/ARCHIVED), author, categories, publishedAt | DataTable + StatusBadge + FilterChips | YES |
| `get_blog_sites` | List of blog sites with names | DataTable | YES |
| `get_blog_authors` | List of authors | DataTable | YES |
| `get_blog_categories` | List of categories | DataTable | YES |
| `create/update_blog_post` | Blog post detail: title, content (HTML), imageUrl, urlSlug, tags | DetailHeader + KeyValueList + **ContentPreview** | PARTIALLY |
| `check_url_slug` | Boolean availability check | StatusBadge + InfoBlock | YES |

**Gaps:** HTML/rich content preview component for blog post content.

---

### 4. Businesses (5 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_businesses` | List: name, phone, email, website, address, logoUrl | DataTable | YES |
| `get_business` | Full detail with all fields | DetailHeader + KeyValueList + **AvatarImage** (logo) | PARTIALLY |
| `create/update/delete_business` | Confirmation | ActionButton | YES |

**Gaps:** Avatar/logo display component.

---

### 5. Calendar (38 tools — largest single file)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_calendar_groups` | List of calendar groups | DataTable | YES |
| `get_calendars` | List: name, calendarType, slotDuration, isActive, groupId | DataTable + StatusBadge + FilterChips | YES |
| `get_calendar` | Single calendar detail | DetailHeader + KeyValueList | YES |
| `get_calendar_events` | Events: startTime, endTime, title, status, contactId, assignedUserId | **CalendarView** + DataTable + Timeline | PARTIALLY |
| `get_free_slots` | Available time slots by date | **TimeSlotGrid** | NO |
| `create/get/update/delete_appointment` | Appointment: title, startTime, endTime, status (new/confirmed/cancelled/showed/noshow) | DetailHeader + KeyValueList + StatusBadge | YES |
| `get_appointment_notes` | List of notes with body, userId | Timeline | YES |
| `create/update_block_slot` | Block slot data | **CalendarView** | NO |
| `get_blocked_slots` | Blocked time ranges | **CalendarView** | NO |
| `get_calendar_resources_equipments` | Equipment: name, quantity, outOfService, capacity | DataTable + **ResourceCapacityBar** | PARTIALLY |
| `get_calendar_resources_rooms` | Rooms: name, quantity, capacity | DataTable | YES |
| `get_calendar_notifications` | Notification configs: receiverType, channel, notificationType | DataTable + StatusBadge | YES |

**Gaps:** Calendar/schedule view component. Time slot picker grid. Resource utilization bar.

---

### 6. Campaigns (12 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_campaigns` | List: name, type (email/sms/voicemail), status (draft/scheduled/running/completed/paused) | DataTable + StatusBadge + FilterChips | YES |
| `get_campaign` | Full campaign detail | DetailHeader + KeyValueList | YES |
| `get_campaign_stats` | Opens, clicks, bounces, deliveries, unsubscribes | StatsGrid + MetricCard + **FunnelChart** | PARTIALLY |
| `get_campaign_recipients` | List: status (sent/delivered/opened/clicked/bounced) | DataTable + StatusBadge | YES |
| `start/pause/resume_campaign` | Action confirmations | ActionButton + ActionBar | YES |
| `get_scheduled_messages` | List of scheduled messages | DataTable + Timeline | YES |

**Gaps:** Funnel/waterfall chart for campaign delivery pipeline (sent→delivered→opened→clicked).

---

### 7. Companies (5 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_companies` | List: name, phone, email, website, industry, employeeCount, annualRevenue, tags | DataTable + FilterChips | YES |
| `get_company` | Full detail with customFields, address | DetailHeader + KeyValueList | YES |
| `create/update/delete_company` | Confirmation | ActionButton | YES |

**Covered:** YES

---

### 8. Contacts (31 tools — second largest)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `search_contacts` | List: firstName, lastName, email, phone, tags, source | DataTable + SearchBar + FilterChips | YES |
| `get_contact` | Full contact detail: all fields, customFields, tags | DetailHeader + KeyValueList + **TagList** | PARTIALLY |
| `create/update/delete_contact` | Confirmation | ActionButton | YES |
| `add/remove_contact_tags` | Updated tags array | **TagList** | NO |
| `get_contact_tasks` | List: title, dueDate, completed, assignedTo | DataTable + StatusBadge + **ChecklistView** | PARTIALLY |
| `create/update_contact_task` | Task detail | KeyValueList | YES |
| `get_contact_notes` | List of notes: body, userId, timestamp | Timeline | YES |
| `get_contact_appointments` | List of appointments | Timeline + DataTable | YES |
| `upsert_contact` | Created/updated contact + isNew flag | StatusBadge + KeyValueList | YES |
| `get_duplicate_contact` | Matched contact or null | **DuplicateCompare** | NO |
| `get_contacts_by_business` | Contact list filtered by business | DataTable | YES |
| `bulk_update_contact_tags` | Bulk result count | MetricCard | YES |
| `add/remove_contact_followers` | Followers list | **AvatarGroup** | NO |
| `add/remove_contact_to_campaign/workflow` | Confirmation | ActionButton | YES |

**Gaps:** Tag list/chip display, checklist/task list view, duplicate record comparison side-by-side, avatar group for followers.

---

### 9. Conversations (20 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `search_conversations` | List: contactName, lastMessageBody, unreadCount, starred | DataTable + StatusBadge + SearchBar | YES |
| `get_conversation` | Conversation + messages array: type, body, direction, timestamp | **ChatThread** + Timeline | NO |
| `get_recent_messages` | Enhanced conversations with last message | DataTable + StatusBadge | YES |
| `send_sms/send_email` | Message ID, conversation ID | ActionButton | YES |
| `get_email_message` | Full email: subject, html, from, to, cc, bcc, attachments | **EmailPreview** | NO |
| `get_message` | Message detail with type, body, status | KeyValueList + StatusBadge | YES |
| `get_message_recording` | Audio data, contentType | **AudioPlayer** | NO |
| `get_message_transcription` | Transcription text array | **TranscriptView** | NO |
| `add_inbound_message/add_outbound_call` | Confirmation | ActionButton | YES |

**Gaps:** Chat/message thread view, email preview with HTML rendering, audio player for recordings, transcript viewer.

---

### 10. Courses (30 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_courses` | List: title, description, thumbnailUrl, visibility, categoryId | DataTable + **CardGrid** | PARTIALLY |
| `get_course` | Course detail with all fields | DetailHeader + KeyValueList | YES |
| `get_course_posts` | Lessons: title, contentType (video/text/quiz/assignment), content, visibility | DataTable + StatusBadge | YES |
| `get_course_products` | Products: title, description, imageUrl | **CardGrid** | NO |
| `get_course_offers` | Pricing: name, price, currency, type (one-time/subscription), interval | LineItemsTable | YES |
| `get_course_enrollments` | List of enrolled contacts | DataTable | YES |
| `get_student_progress` | Progress data: completed lessons, total | ProgressBar + **CourseProgressView** | PARTIALLY |
| `update_lesson_completion` | Completion status | StatusBadge | YES |
| `get_course_instructors` | List of instructors | DataTable | YES |
| `get_course_categories` | Category list | DataTable | YES |

**Gaps:** Card grid for visual product/course browsing. Course-specific progress view showing lesson-by-lesson completion.

---

### 11. Custom Fields V2 (8 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `ghl_get_custom_fields_by_object_key` | Fields array + folders array: name, dataType, options, fieldKey | DataTable + **TreeView** (folders) | PARTIALLY |
| `ghl_get_custom_field_by_id` | Single field detail | KeyValueList | YES |
| `ghl_create/update/delete_custom_field` | Confirmation | ActionButton | YES |
| `ghl_create/update/delete_custom_field_folder` | Folder management | ActionButton | YES |

**Gaps:** Tree/folder view for hierarchical field organization.

---

### 12. Email ISV (1 tool)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `verify_email` | result, risk level, reasons array, recommendation | StatusBadge + KeyValueList + **RiskIndicator** | PARTIALLY |

**Gaps:** Risk/score indicator (visual gauge or traffic light).

---

### 13. Email Tools (5 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_email_campaigns` | List: status (active/pause/complete/cancelled), total | DataTable + StatusBadge | YES |
| `get_email_templates` | List of templates | DataTable | YES |
| `create/update/delete_email_template` | Confirmation | ActionButton | YES |

**Covered:** YES

---

### 14. Forms (3 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_forms` | List of forms with type | DataTable | YES |
| `get_form_submissions` | Submissions: contact data, field values, timestamps | DataTable + **FormResponseView** | PARTIALLY |
| `get_form_by_id` | Form detail | DetailHeader + KeyValueList | YES |

**Gaps:** Form submission viewer showing field labels with submitted values.

---

### 15. Funnels (8 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_funnels` | List: name, type (funnel/website), category, steps/pages | DataTable + FilterChips | YES |
| `get_funnel` | Funnel detail with pages | DetailHeader + KeyValueList + **StepFlow** | PARTIALLY |
| `get_funnel_pages` | Pages: name, path, order | DataTable + **StepFlow** | PARTIALLY |
| `count_funnel_pages` | Integer count | MetricCard | YES |
| `get_funnel_redirects` | Redirects: pathName, target, action | DataTable | YES |
| `create/update/delete_funnel_redirect` | Confirmation | ActionButton | YES |

**Gaps:** Step/flow visualization showing funnel page sequence.

---

### 16. Invoices (20 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `list_invoices` | List: title, status, contactId, currency, amount, dates | DataTable + StatusBadge + FilterChips | YES |
| `get_invoice` | Full invoice: items[], amounts, tax, contact, dates | DetailHeader + LineItemsTable + KeyValueList + **InvoiceDocument** | PARTIALLY |
| `list_estimates` | List: title, status (draft/sent/accepted/declined/invoiced/viewed) | DataTable + StatusBadge | YES |
| `list_invoice_templates` | Templates list | DataTable | YES |
| `list_invoice_schedules` | Recurring schedule list | DataTable + StatusBadge | YES |
| `send_invoice` | Send confirmation | ActionButton | YES |
| `create_invoice_from_estimate` | New invoice | ActionButton | YES |
| `generate_invoice_number` | Unique number string | InfoBlock | YES |

**Gaps:** Invoice document preview (formatted like a real invoice/PDF).

---

### 17. Links (5 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_links` | Trigger links: name, redirectTo, fieldKey, fieldValue | DataTable | YES |
| `get_link` | Link detail | KeyValueList | YES |
| `create/update/delete_link` | Confirmation | ActionButton | YES |

**Covered:** YES

---

### 18. Location (27 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `search_locations` | List: name, address, phone, email, website | DataTable + SearchBar | YES |
| `get_location` | Full location detail: name, address, timezone, settings | DetailHeader + KeyValueList + SplitLayout | YES |
| `get_location_tags` | Tag list: name, id | DataTable + **TagList** | PARTIALLY |
| `search_location_tasks` | Tasks: title, completed, assignedTo, dueDate | DataTable + StatusBadge | YES |
| `get_location_custom_fields` | Fields: name, dataType, model, placeholder | DataTable | YES |
| `get_location_custom_values` | Values: name, value | KeyValueList | YES |
| `get_location_templates` | Templates: type (sms/email/whatsapp), content | DataTable + FilterChips | YES |
| `get_timezones` | Array of timezone strings | DataTable | YES |
| `create/update/delete_location` | Confirmation | ActionButton | YES |

**Covered:** YES (mostly)

---

### 19. Media (3 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_media_files` | Files/folders: name, type, size, url, parentId, createdAt | DataTable + **MediaGallery** + **TreeView** | NO |
| `upload_media_file` | fileId, url | ActionButton | YES |
| `delete_media_file` | Confirmation | ActionButton | YES |

**Gaps:** Media gallery grid with thumbnails. File/folder tree browser.

---

### 20. OAuth (10 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_oauth_apps` | List of OAuth apps | DataTable | YES |
| `get_installed_locations` | Locations with install status | DataTable + StatusBadge | YES |
| `get_connected_integrations` | Connected integrations list | DataTable + StatusBadge | YES |
| `get_api_keys` | API key list | DataTable | YES |
| All CUD operations | Confirmations | ActionButton | YES |

**Covered:** YES

---

### 21. Objects (9 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_all_objects` | Objects: labels, key, type (standard/custom) | DataTable + StatusBadge | YES |
| `get_object_schema` | Schema with fields array, properties | KeyValueList + DataTable | YES |
| `search_object_records` | Records with dynamic properties | DataTable + SearchBar | YES |
| `get_object_record` | Record with properties key-value | KeyValueList | YES |
| `create/update/delete` | Confirmations | ActionButton | YES |

**Covered:** YES

---

### 22. Opportunities (10 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `search_opportunities` | List: name, status (open/won/lost/abandoned), monetaryValue, pipeline, stage, contact | DataTable + StatusBadge + FilterChips | YES |
| `get_pipelines` | Pipelines with stages array | **PipelineView** or KanbanBoard | PARTIALLY |
| `get_opportunity` | Full opportunity detail: name, value, stage, contact, customFields | DetailHeader + KeyValueList + StatusBadge | YES |
| `create/update/delete_opportunity` | Confirmations | ActionButton | YES |
| `upsert_opportunity` | Opportunity + isNew flag | StatusBadge | YES |
| `add/remove_opportunity_followers` | Followers list | **AvatarGroup** | NO |

**Gaps:** KanbanBoard already exists but pipeline view with stages + values needs stage-specific styling. Avatar group for followers.

---

### 23. Payments (22 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `list_orders` | Orders: status, amount, contactId, items, dates | DataTable + StatusBadge + FilterChips | YES |
| `get_order_by_id` | Full order: items, totals, contact, fulfillment status | DetailHeader + LineItemsTable + StatusBadge | YES |
| `list_transactions` | Transactions: amount, type, status, dates | DataTable + StatusBadge + **CurrencyDisplay** | PARTIALLY |
| `get_transaction_by_id` | Transaction detail | KeyValueList + StatusBadge | YES |
| `list_subscriptions` | Subscriptions: status, amount, interval, nextBilling | DataTable + StatusBadge | YES |
| `get_subscription_by_id` | Subscription detail | KeyValueList + StatusBadge | YES |
| `list_coupons` | Coupons: code, discountType, discountValue, status, dates | DataTable + StatusBadge | YES |
| `list_order_fulfillments` | Fulfillments: trackingNumber, carrier, items, status | DataTable + **ShipmentTracker** | PARTIALLY |
| `create_order_fulfillment` | Fulfillment confirmation | ActionButton | YES |

**Gaps:** Shipment/fulfillment tracking timeline. Currency formatting component.

---

### 24. Phone (20 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_phone_numbers` | List: number, name, forwardingNumber, callRecording | DataTable + StatusBadge | YES |
| `search_available_numbers` | Available numbers: number, type, capabilities | DataTable + FilterChips | YES |
| `get_ivr_menus` | IVR menus: name, greeting, options (digit→action→destination) | DataTable + **FlowDiagram** | PARTIALLY |
| `get_voicemail_settings` | Settings object | KeyValueList | YES |
| `get_voicemails` | List: status (new/read/archived), duration, transcription | DataTable + StatusBadge + **AudioPlayer** | PARTIALLY |
| `get_caller_ids` | List of verified caller IDs | DataTable + StatusBadge | YES |
| All CUD operations | Confirmations | ActionButton | YES |

**Gaps:** IVR flow diagram, audio player for voicemails.

---

### 25. Products (10 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `ghl_list_products` | Products: name, productType, availableInStore, description, image | DataTable + **CardGrid** + StatusBadge | PARTIALLY |
| `ghl_get_product` | Full product: variants, medias, collections, prices | DetailHeader + KeyValueList + **ImageCarousel** | PARTIALLY |
| `ghl_list_prices` | Prices: name, amount, currency, type (one_time/recurring), compareAtPrice | LineItemsTable + **CurrencyDisplay** | PARTIALLY |
| `ghl_list_inventory` | Inventory: availableQuantity, sku, product, allowOutOfStockPurchases | DataTable + **StockIndicator** | PARTIALLY |
| `ghl_list_product_collections` | Collections: name, slug, image | **CardGrid** | NO |

**Gaps:** Card grid for product catalog, image carousel, stock level indicator, currency display.

---

### 26. Reporting (12 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_attribution_report` | Source tracking: sources, lead counts, conversion rates | **BarChart** + DataTable + StatsGrid | NO |
| `get_call_reports` | Call metrics: duration, outcomes, inbound/outbound counts | **BarChart** + StatsGrid + MetricCard | NO |
| `get_appointment_reports` | Appointment stats: booked, confirmed, showed, noshow | StatsGrid + **PieChart** + **BarChart** | NO |
| `get_pipeline_reports` | Pipeline performance: stage values, conversion rates | **FunnelChart** + StatsGrid + MetricCard | NO |
| `get_email_reports` | Email metrics: deliverability, opens, clicks, bounces | StatsGrid + **BarChart** + **FunnelChart** | NO |
| `get_sms_reports` | SMS metrics: sent, delivered, failed | StatsGrid + **PieChart** | NO |
| `get_funnel_reports` | Funnel metrics: page views, conversions, conversion rate | **FunnelChart** + StatsGrid | NO |
| `get_ad_reports` | Ad performance: impressions, clicks, spend, CPC, conversions | StatsGrid + **LineChart** + DataTable | NO |
| `get_agent_reports` | Agent performance: calls, emails, appointments, revenue | DataTable + StatsGrid + **BarChart** | NO |
| `get_dashboard_stats` | Overview stats: contacts, revenue, appointments, tasks | StatsGrid + MetricCard + **SparklineChart** | PARTIALLY |
| `get_conversion_reports` | Conversion tracking by source | **BarChart** + DataTable | NO |
| `get_revenue_reports` | Revenue by period: groupBy (day/week/month) | **LineChart** + DataTable + MetricCard | NO |

**Gaps:** THIS IS THE BIGGEST GAP. Reporting needs: BarChart, LineChart, PieChart, FunnelChart, SparklineChart. None exist.

---

### 27. Reputation (14 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_reviews` | Reviews: platform, rating (1-5), text, status (replied/unreplied), date | DataTable + **StarRating** + StatusBadge + FilterChips | PARTIALLY |
| `get_review_stats` | Aggregate: avg rating, total count, breakdown by rating | StatsGrid + MetricCard + **StarRating** + **BarChart** | PARTIALLY |
| `send_review_request` | Confirmation | ActionButton | YES |
| `get_review_requests` | List: status (sent/clicked/reviewed), contact | DataTable + StatusBadge | YES |
| `get_connected_review_platforms` | Platform connections | DataTable + StatusBadge | YES |
| `get_review_links` | Platform-specific links | KeyValueList | YES |
| `reply_to_review` | Reply confirmation | ActionButton | YES |

**Gaps:** Star rating display component. Rating distribution bar chart.

---

### 28. SaaS (6 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_saas_locations` | Sub-accounts: name, isActive, subscription status | DataTable + StatusBadge + FilterChips | YES |
| `get_saas_location` | Location detail at agency level | DetailHeader + KeyValueList | YES |
| `pause/enable_saas_location` | Status change | ActionButton + StatusBadge | YES |
| `rebilling_update` | Rebilling config | KeyValueList | YES |

**Covered:** YES

---

### 29. Smart Lists (8 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_smart_lists` | List: name, filter criteria | DataTable | YES |
| `get_smart_list` | Detail with filters array | KeyValueList + **FilterBuilder** | PARTIALLY |
| `get_smart_list_contacts` | Contacts matching criteria | DataTable | YES |
| `get_smart_list_count` | Integer count | MetricCard | YES |
| `create/update/delete/duplicate` | Confirmations | ActionButton | YES |

**Gaps:** Visual filter builder showing filter conditions (though FilterChips covers simple cases).

---

### 30. Snapshots (6 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_snapshots` | List: name, description, locationId | DataTable | YES |
| `get_snapshot` | Snapshot detail | DetailHeader + KeyValueList | YES |
| `create_snapshot` | New snapshot | ActionButton | YES |
| `push_snapshot_to_subaccounts` | Push operation with override options | ActionButton + **ChecklistView** (overrides) | PARTIALLY |
| `get_snapshot_push_status` | Push status/progress | ProgressBar + StatusBadge | YES |

**Covered:** YES (mostly)

---

### 31. Social Media (16 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `search_social_posts` | Posts: summary, media[], status, scheduleDate, type (post/story/reel), accounts | DataTable + StatusBadge + FilterChips | YES |
| `get_social_post` | Post detail with media array | DetailHeader + **MediaGallery** + KeyValueList | PARTIALLY |
| `create_social_post` | New post with media | ActionButton | YES |
| `get_social_accounts` | Connected accounts + groups | DataTable + **AvatarGroup** | PARTIALLY |
| `get_social_categories/tags` | Category/tag lists | DataTable + **TagList** | PARTIALLY |
| `get_csv_upload_status` | Upload status list | DataTable + StatusBadge + ProgressBar | YES |
| `start_social_oauth` | OAuth URL/data | ActionButton | YES |

**Gaps:** Media gallery for post media preview, tag list component.

---

### 32. Store (17 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `ghl_list_shipping_zones` | Zones: name, countries[], shippingRates[] | DataTable | YES |
| `ghl_get_shipping_zone` | Zone detail with countries/states | DetailHeader + KeyValueList + DataTable | YES |
| `ghl_list_shipping_rates` | Rates: name, amount, currency, conditionType | DataTable + **CurrencyDisplay** | PARTIALLY |
| `ghl_get_available_shipping_rates` | Available rates for order context | DataTable + **CurrencyDisplay** | PARTIALLY |
| `ghl_list_shipping_carriers` | Carriers: name, services[], callbackUrl | DataTable | YES |
| `ghl_get_store_setting` | Settings: shippingOrigin, notifications | KeyValueList | YES |
| All CUD operations | Confirmations | ActionButton | YES |

**Covered:** YES (mostly)

---

### 33. Surveys (2 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `ghl_get_surveys` | List: survey names, types | DataTable | YES |
| `ghl_get_survey_submissions` | Submissions with meta: total, pagination, field values | DataTable + **FormResponseView** | PARTIALLY |

**Gaps:** Form/survey response viewer (same as forms).

---

### 34. Templates (16 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_sms_templates` | List: name, body (with merge fields) | DataTable | YES |
| `get_email_templates` | (from email-tools) | DataTable | YES |
| `get_voicemail_templates` | List: name, audioUrl | DataTable | YES |
| `get_social_templates` | List: name, content, platforms | DataTable | YES |
| `get_whatsapp_templates` | List: name, category, language, status (approved/pending/rejected), components | DataTable + StatusBadge | YES |
| `get_snippets` | List: name, shortcut, content, type | DataTable + FilterChips | YES |
| All CUD operations | Confirmations | ActionButton | YES |

**Covered:** YES

---

### 35. Triggers (11 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_triggers` | List: name, type, status (active/inactive), filters, actions | DataTable + StatusBadge + FilterChips | YES |
| `get_trigger` | Trigger detail with filters[] and actions[] | DetailHeader + KeyValueList + **FlowDiagram** | PARTIALLY |
| `get_trigger_types` | Available trigger type definitions | DataTable | YES |
| `get_trigger_logs` | Execution logs: status (success/failed), timestamps | DataTable + StatusBadge + Timeline | YES |
| `test/duplicate_trigger` | Confirmations | ActionButton | YES |

**Gaps:** Flow diagram for trigger logic (condition → action visualization).

---

### 36. Users (6 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_users` | List: firstName, lastName, email, phone, role, type | DataTable + FilterChips | YES |
| `get_user` | User detail with permissions | DetailHeader + KeyValueList | YES |
| `search_users` | Search results | DataTable + SearchBar | YES |
| `create/update/delete_user` | Confirmations | ActionButton | YES |

**Covered:** YES

---

### 37. Webhooks (9 tools)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `get_webhooks` | List: name, url, events[], active | DataTable + StatusBadge | YES |
| `get_webhook` | Detail with events | DetailHeader + KeyValueList | YES |
| `get_webhook_events` | Available event types list | DataTable | YES |
| `get_webhook_logs` | Delivery logs: status (success/failed/pending), timestamps | DataTable + StatusBadge + Timeline | YES |
| `retry/test_webhook` | Confirmations | ActionButton | YES |

**Covered:** YES

---

### 38. Workflows (1 tool)
| Tool | Data Returned | Ideal UI Components | Covered? |
|------|--------------|---------------------|----------|
| `ghl_get_workflows` | List: name, status, type | DataTable + StatusBadge | YES |

**Covered:** YES

---

## Part 2: Gap Analysis — Missing Components

### HIGH Priority (needed by 5+ endpoint categories)

| # | Component | What It Does | GHL Endpoints That Need It | Priority |
|---|-----------|-------------|---------------------------|----------|
| 1 | **BarChart** | Horizontal/vertical bar chart for comparing categories (e.g., source attribution, agent performance) | Reporting (attribution, calls, appointments, emails, agents, conversions), Reputation (rating distribution), Affiliates (stats) | **HIGH** |
| 2 | **LineChart** | Time-series line chart for trends (revenue over time, ad performance) | Reporting (ad reports, revenue reports), Campaigns (stats over time), Affiliates (earnings trend) | **HIGH** |
| 3 | **PieChart / DonutChart** | Proportional breakdown (appointment statuses, SMS delivery, review platforms) | Reporting (appointment reports, SMS reports), Reputation (platform breakdown), Campaigns (recipient statuses) | **HIGH** |
| 4 | **CurrencyDisplay** | Formatted monetary value with currency symbol, locale formatting (e.g., "$1,234.56 USD") | Affiliates (commissions, payouts), Payments (orders, transactions, subscriptions), Invoices, Products (prices), Opportunities (monetaryValue), Store (shipping rates) | **HIGH** |
| 5 | **TagList** | Visual tag/chip display for arrays of tags — inline colored pills | Contacts (tags), Location (tags), Social Media (tags), Blog (tags), Companies (tags) | **HIGH** |
| 6 | **CardGrid** | Grid of visual cards with image, title, description — for browsable catalogs | Products (product list), Courses (course list, course products), Blog (sites), Social Media (accounts), Media (gallery) | **HIGH** |
| 7 | **AvatarGroup** | Stacked circular avatars for users/followers/team members | Contacts (followers), Opportunities (followers), Social Media (accounts), Calendar (assigned users) | **HIGH** |

### MEDIUM Priority (needed by 2-4 endpoint categories)

| # | Component | What It Does | GHL Endpoints That Need It | Priority |
|---|-----------|-------------|---------------------------|----------|
| 8 | **FunnelChart** | Horizontal funnel/waterfall showing conversion stages with drop-off | Reporting (pipeline reports, funnel reports), Campaigns (sent→delivered→opened→clicked) | **MEDIUM** |
| 9 | **CalendarView** | Monthly/weekly/daily calendar with event blocks and time slots | Calendar (events, free slots, blocked slots), Appointments (scheduling views) | **MEDIUM** |
| 10 | **ChatThread** | Conversation message thread with bubbles, timestamps, direction (in/out), multi-type (SMS, email, call) | Conversations (get_conversation messages), Contact detail (conversation tab) | **MEDIUM** |
| 11 | **MediaGallery** | Grid of image/video thumbnails with lightbox, file info overlay | Media (file listing), Products (medias), Social Media (post media), Blog (images) | **MEDIUM** |
| 12 | **StarRating** | Visual star display (1-5) with average + count, and optional distribution bar | Reputation (reviews, review stats), Products (product reviews) | **MEDIUM** |
| 13 | **AudioPlayer** | Inline audio player with play/pause, seek, duration display | Conversations (call recordings), Phone (voicemails), Templates (voicemail templates) | **MEDIUM** |
| 14 | **SparklineChart** | Tiny inline chart for embedding in MetricCard or table cells — shows trend direction | Reporting (dashboard stats), any metric that has historical data | **MEDIUM** |
| 15 | **FlowDiagram** | Simple node→arrow→node flow visualization for sequential/conditional logic | Triggers (condition→action flow), Phone (IVR menu options), Funnels (page flow) | **MEDIUM** |
| 16 | **TreeView** | Hierarchical expandable tree for folders/parent-child structures | Media (file/folder browser), Custom Fields V2 (folders), Course categories | **MEDIUM** |

### LOW Priority (needed by 1-2 endpoint categories)

| # | Component | What It Does | GHL Endpoints That Need It | Priority |
|---|-----------|-------------|---------------------------|----------|
| 17 | **EmailPreview** | Rendered HTML email preview in a safe iframe/container with header info (from, to, subject) | Conversations (email messages), Email templates preview | **LOW** |
| 18 | **ContentPreview** | Rich HTML/text content preview (sanitized) for blog posts, course content | Blog (post content), Courses (lesson content) | **LOW** |
| 19 | **ChecklistView** | Task/checklist with checkbox, title, due date, assignee — for to-do style lists | Contacts (tasks), Location (tasks), Snapshots (override checklist) | **LOW** |
| 20 | **StockIndicator** | Visual stock level indicator (green/yellow/red) with quantity display | Products (inventory levels) | **LOW** |
| 21 | **DuplicateCompare** | Side-by-side comparison of two records highlighting differences | Contacts (duplicate detection) | **LOW** |
| 22 | **TranscriptView** | Time-stamped conversation transcript with speaker labels | Conversations (call transcriptions) | **LOW** |

---

## Part 3: Updated Full Component Catalog

### Layout Components (5 existing)
| Component | Description |
|-----------|-------------|
| `PageHeader` | Page title, breadcrumbs, primary actions |
| `Card` | Content container with optional header/footer |
| `StatsGrid` | Grid layout for multiple metric cards |
| `SplitLayout` | Two-panel layout (master/detail, sidebar) |
| `Section` | Titled section with collapsible content |

### Data Display Components (12 existing + 10 new = 22)
| Component | Description | Status |
|-----------|-------------|--------|
| `DataTable` | Sortable, paginated table with column config | Existing |
| `KanbanBoard` | Drag-and-drop columns (pipelines, stages) | Existing |
| `MetricCard` | Single KPI with value, label, trend indicator | Existing |
| `StatusBadge` | Colored pill showing entity status | Existing |
| `Timeline` | Vertical timeline of events/activities | Existing |
| `ProgressBar` | Horizontal progress indicator | Existing |
| `InfoBlock` | Key message/notice display | Existing |
| `TagList` | **NEW** — Colored tag pills for arrays of tags | **New** |
| `CardGrid` | **NEW** — Image+title+desc grid for browsable catalogs | **New** |
| `AvatarGroup` | **NEW** — Stacked circular avatar icons for users/followers | **New** |
| `CurrencyDisplay` | **NEW** — Formatted monetary value with currency code | **New** |
| `StarRating` | **NEW** — Star display (1-5) with average, count, distribution | **New** |
| `AudioPlayer` | **NEW** — Inline audio player with controls | **New** |
| `StockIndicator` | **NEW** — Stock level visual (quantity + color coding) | **New** |
| `TreeView` | **NEW** — Hierarchical expandable folder/tree structure | **New** |
| `MediaGallery` | **NEW** — Thumbnail grid with lightbox for files/images | **New** |
| `ChecklistView` | **NEW** — Task/to-do checklist with status, due dates | **New** |

### Chart Components (0 existing + 5 new = 5)
| Component | Description | Status |
|-----------|-------------|--------|
| `BarChart` | **NEW** — Vertical/horizontal bar chart for category comparison | **New** |
| `LineChart` | **NEW** — Time-series line chart for trends | **New** |
| `PieChart` | **NEW** — Proportional breakdown (pie or donut) | **New** |
| `FunnelChart` | **NEW** — Horizontal funnel showing stage-by-stage drop-off | **New** |
| `SparklineChart` | **NEW** — Tiny inline chart for embedding in cards/tables | **New** |

### Detail View Components (3 existing + 4 new = 7)
| Component | Description | Status |
|-----------|-------------|--------|
| `DetailHeader` | Entity header with name, status, avatar, primary actions | Existing |
| `KeyValueList` | Label-value pairs for entity details | Existing |
| `LineItemsTable` | Table with quantity, price, subtotals for invoices/orders | Existing |
| `ChatThread` | **NEW** — Conversation message bubbles with timestamps and direction | **New** |
| `EmailPreview` | **NEW** — Rendered HTML email in safe container with header info | **New** |
| `ContentPreview` | **NEW** — Rich HTML/text content preview (sanitized) | **New** |
| `TranscriptView` | **NEW** — Time-stamped transcript with speaker labels | **New** |

### Interactive Components (5 existing + 1 new = 6)
| Component | Description | Status |
|-----------|-------------|--------|
| `SearchBar` | Search input with debounce and submit | Existing |
| `FilterChips` | Toggleable filter pills for status/type/etc. | Existing |
| `TabGroup` | Tab navigation for sectioned views | Existing |
| `ActionButton` | Primary/secondary/danger action buttons | Existing |
| `ActionBar` | Grouped action buttons (toolbar) | Existing |
| `DuplicateCompare` | **NEW** — Side-by-side record comparison with diff highlights | **New** |

### Visualization Components (0 existing + 3 new = 3)
| Component | Description | Status |
|-----------|-------------|--------|
| `CalendarView` | **NEW** — Month/week/day calendar with event blocks | **New** |
| `FlowDiagram` | **NEW** — Node→arrow→node sequential/conditional flow | **New** |

---

## Part 4: Summary Stats

| Metric | Value |
|--------|-------|
| **Total tool files analyzed** | 38 |
| **Total individual tools (endpoints)** | ~365 |
| **Tools fully covered by current 20 components** | ~220 (60%) |
| **Tools partially covered** | ~105 (29%) |
| **Tools NOT covered (need new components)** | ~40 (11%) |
| **Existing components** | 20 |
| **New components needed** | 22 |
| **Updated total component count** | 42 |
| **Biggest gap area** | Reporting (12 tools, zero chart coverage) |
| **Most-needed new component** | BarChart (used by 9+ tool categories) |
| **Second most-needed** | CurrencyDisplay (used by 6+ tool categories) |

### Coverage Heat Map by Category

| Category | Tools | Fully Covered | Partially | Not Covered |
|----------|-------|--------------|-----------|-------------|
| Affiliates | 17 | 13 | 4 | 0 |
| Associations | 10 | 9 | 1 | 0 |
| Blog | 7 | 5 | 2 | 0 |
| Businesses | 5 | 4 | 1 | 0 |
| **Calendar** | **38** | **28** | **7** | **3** |
| Campaigns | 12 | 10 | 2 | 0 |
| Companies | 5 | 5 | 0 | 0 |
| **Contacts** | **31** | **22** | **6** | **3** |
| **Conversations** | **20** | **11** | **5** | **4** |
| Courses | 30 | 22 | 6 | 2 |
| Custom Fields V2 | 8 | 7 | 1 | 0 |
| Email ISV | 1 | 0 | 1 | 0 |
| Email Tools | 5 | 5 | 0 | 0 |
| Forms | 3 | 2 | 1 | 0 |
| Funnels | 8 | 6 | 2 | 0 |
| Invoices | 20 | 17 | 3 | 0 |
| Links | 5 | 5 | 0 | 0 |
| Location | 27 | 25 | 2 | 0 |
| **Media** | **3** | **1** | **0** | **2** |
| OAuth | 10 | 10 | 0 | 0 |
| Objects | 9 | 9 | 0 | 0 |
| Opportunities | 10 | 8 | 1 | 1 |
| **Payments** | **22** | **17** | **4** | **1** |
| Phone | 20 | 14 | 4 | 2 |
| **Products** | **10** | **4** | **4** | **2** |
| **Reporting** | **12** | **1** | **1** | **10** |
| Reputation | 14 | 9 | 5 | 0 |
| SaaS | 6 | 6 | 0 | 0 |
| Smart Lists | 8 | 7 | 1 | 0 |
| Snapshots | 6 | 5 | 1 | 0 |
| Social Media | 16 | 11 | 5 | 0 |
| Store | 17 | 14 | 3 | 0 |
| Surveys | 2 | 1 | 1 | 0 |
| Templates | 16 | 16 | 0 | 0 |
| Triggers | 11 | 8 | 3 | 0 |
| Users | 6 | 6 | 0 | 0 |
| Webhooks | 9 | 9 | 0 | 0 |
| Workflows | 1 | 1 | 0 | 0 |

### Priority Build Order (what to build first for max coverage)

1. **BarChart + LineChart + PieChart** → unlocks all 12 Reporting tools + improves Campaigns, Affiliates, Reputation
2. **CurrencyDisplay** → improves Payments, Invoices, Products, Affiliates, Opportunities, Store
3. **TagList** → improves Contacts, Companies, Social Media, Blog, Location
4. **CardGrid** → improves Products, Courses, Media, Blog
5. **ChatThread** → unlocks Conversations properly
6. **CalendarView** → unlocks Calendar events/scheduling properly
7. **AvatarGroup** → improves Contacts, Opportunities, Social Media
8. **FunnelChart** → completes Reporting + Campaigns
9. **MediaGallery + TreeView** → unlocks Media library properly
10. **StarRating** → improves Reputation management
