Model Context Protocol Server Hub

Production-grade MCP servers connecting AI agents to Pest Pro Rid All's full operational stack โ€” field ops, payments, and CRM.

๐ŸŸข briostack-mcp ยท Live ๐Ÿ’ณ cardpointe-mcp ๐Ÿ“‹ agency-mcp (GHL) MCP 2025-03-26
Servers & Applications
Production-grade MCP servers and orchestration layers covering JOM operations.
๐Ÿ—‚๏ธ

BrioStack Operations

Field ops ยท Scheduling ยท Billing ยท AR
Full BrioStack pest-control platform. Customers, appointments, invoices, daily ops snapshot, employee roster, branches, leads, and raw API pass-through.
Production 32 tools
๐Ÿ”’ Endpoint provided upon access approval โ€” Request access โ†’
๐Ÿ’ณ

CardPointe Payments

Authorize ยท Capture ยท ACH ยท Stored Profiles
CardConnect/CardPointe payment processing. Credit card auth/capture/void/refund, ACH via BlueChex, stored profile tokenization, deposit reporting.
Production 15 tools
๐Ÿ”’ Endpoint provided upon access approval โ€” Request access โ†’
๐Ÿ“‹

Agency / GHL Operations

CRM ยท Pipelines ยท AI Bots ยท Marketing
GoHighLevel CRM operations. Contacts, conversations, calendars, pipelines, AI conversation bots, voice agents, knowledge bases, blogs, social media, and Stripe.
Production 154 tools
๐Ÿ”’ Endpoint provided upon access approval โ€” Request access โ†’
๐ŸŒ

Open-Signal Meta Gateway

Meta Graph ยท Webhooks ยท Manifests
White-label webhook manager and manifest manager for Meta platforms (WhatsApp, Messenger, Facebook, Instagram). Handles verification challenges and payload routing.
Production 1 tool
๐Ÿ”’ Endpoint provided upon access approval โ€” Request access โ†’
๐Ÿ’ฌ

Open-Signal Messaging Connector

WhatsApp ยท GHL ยท Multi-Tenant
Multi-tenant communication connector interfacing with GHL and WhatsApp Business APIs. Sends messages, search contacts, lists conversations, and logs histories.
Production 5 tools
๐Ÿ”’ Endpoint provided upon access approval โ€” Request access โ†’
๐Ÿค–

jomAI Agent App

Orchestrator ยท Bolt CLI ยท Webhooks
Primary client-facing orchestration engine running inside Slack. Resolves AI drafts, manages operator interactive controls, and coordinates gateways. Ready for white-label client replication.
Production Orchestrator
๐Ÿ”’ Endpoint provided upon access approval โ€” Request access โ†’

๐Ÿ” Get Access

These are private production servers. Endpoint URLs and API keys are not public. Choose a track below to request access โ€” approved connections receive a personalized quick-start with your endpoint URL, API key, and config blocks pre-filled.

๐Ÿข

GHL Sub-Account

Already a client or GHL sub-account under the JOM agency? Access is provisioned automatically when your sub-account is created. If you're a current client and haven't received credentials, contact us to trigger key generation.

Get Sub-Account Access โ†’
๐Ÿ› ๏ธ

External Developer

Building a third-party integration or custom AI agent that connects to these servers? Submit a request with your use case and organization. Manual review typically takes 1โ€“2 business days.

Request Developer Access โ†’

Quick Connect
Copy the config block for your AI client. Endpoint URLs and API keys are provided upon access approval โ€” request access here. Replace <YOUR_ENDPOINT> and <MCP_API_KEY> with the values from your approval email; never commit them to a repo.

Add to ~/Library/Application Support/Claude/claude_desktop_config.json

// ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "briostack-mcp": {
      "type": "streamable-http",
      "url":  "<YOUR_BRIOSTACK_ENDPOINT>",
      "headers": { "Authorization": "Bearer <MCP_API_KEY>" }
    },
    "cardpointe-mcp": {
      "type": "streamable-http",
      "url":  "<YOUR_CARDPOINTE_ENDPOINT>",
      "headers": { "Authorization": "Bearer <MCP_API_KEY>" }
    },
    "agency-mcp": {
      "type": "streamable-http",
      "url":  "<YOUR_AGENCY_ENDPOINT>",
      "headers": { "Authorization": "Bearer <MCP_API_KEY>" }
    }
  }
}

Claude.ai web uses OAuth 2.0 PKCE โ€” no JSON config needed. Each server has a built-in sign-in page served at its endpoint. Your endpoint URL is provided in the access approval email.

BrioStack Operations

Field ops ยท Scheduling ยท Billing

Endpoint provided upon access approval

CardPointe Payments

Auth ยท Capture ยท ACH ยท Profiles

Endpoint provided upon access approval

Agency / GHL Operations

CRM ยท AI Bots ยท Marketing

Endpoint provided upon access approval

1

Get access

Submit a request at request-access.html. You'll receive your endpoint URL and MCP API key via email after approval (1โ€“2 business days for external requests).

2

Open Claude.ai โ†’ Settings โ†’ Connectors

In your Claude.ai account, navigate to Settings โ†’ Connectors and click Add custom connector.

3

Enter the endpoint URL

Type a name (e.g., BrioStack Operations) and paste the server endpoint URL from your approval email. Click Connect.

4

Complete the OAuth sign-in

Claude.ai redirects you to the server's sign-in page. Enter your MCP API key and click Authorize Access. You'll be redirected back to Claude.ai automatically.

5

Repeat for each server

Each server (BrioStack, CardPointe, Agency/GHL) is added as a separate connector. All three use the same API key.

๐Ÿ’ก How it works: Each server implements OAuth 2.0 PKCE at /authorize and /token. Claude.ai auto-discovers the auth endpoints via /.well-known/oauth-authorization-server. Your API key is never stored by Claude.ai โ€” the OAuth flow converts it to a session token on the fly.

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

{
  "mcpServers": {
    "briostack-mcp": {
      "url":     "<YOUR_BRIOSTACK_ENDPOINT>",
      "headers": { "Authorization": "Bearer <MCP_API_KEY>" }
    },
    "cardpointe-mcp": {
      "url":     "<YOUR_CARDPOINTE_ENDPOINT>",
      "headers": { "Authorization": "Bearer <MCP_API_KEY>" }
    },
    "agency-mcp": {
      "url":     "<YOUR_AGENCY_ENDPOINT>",
      "headers": { "Authorization": "Bearer <MCP_API_KEY>" }
    }
  }
}

Add to ~/.config/zed/settings.json

{
  "context_servers": {
    "briostack-mcp": {
      "transport": "http",
      "url":       "<YOUR_BRIOSTACK_ENDPOINT>",
      "headers":   { "Authorization": "Bearer <MCP_API_KEY>" }
    },
    "cardpointe-mcp": {
      "transport": "http",
      "url":       "<YOUR_CARDPOINTE_ENDPOINT>",
      "headers":   { "Authorization": "Bearer <MCP_API_KEY>" }
    },
    "agency-mcp": {
      "transport": "http",
      "url":       "<YOUR_AGENCY_ENDPOINT>",
      "headers":   { "Authorization": "Bearer <MCP_API_KEY>" }
    }
  }
}

Standard MCP 2025-03-26 streamable-http connection parameters.

{
  "transport":    "streamable-http",
  "url":          "<YOUR_BRIOSTACK_ENDPOINT>",
  "method":       "POST",
  "content_type": "application/json",
  "accept":       "text/event-stream, application/json",
  "auth":         "bearer",
  "header":       "Authorization: Bearer <MCP_API_KEY>",
  "note":         "Store the token in the client secret manager. Do not commit it."
}

Full local config for all three servers via stdio. Requires Python 3.11+, mcp, google-cloud-secret-manager, google-auth, and GCP credentials.

// claude_desktop_config.json โ€” all three servers, local stdio
{
  "mcpServers": {
    "briostack-mcp": {
      "command": "python3",
      "args": ["/Users/moemeyer/briostack-mcp/server.py"]
    },
    "cardpointe-mcp": {
      "command": "python3",
      "args": ["/Users/moemeyer/cardpointe-mcp/server.py"]
    },
    "agency-mcp": {
      "command": "python3",
      "args": ["/Users/moemeyer/agency-mcp/server.py"]
    }
  }
}

Tool Reference
201 documented tools across all three servers (32 BrioStack ยท 15 CardPointe ยท 154 Agency/GHL). Catalog updated Q2 2026 with Social Planner, Blog, Invoicing, Payments, Custom Objects, Voice AI v2, Conversation AI v3, and Agent Studio APIs. Use MCP tools/list for the authoritative live list.
๐Ÿ—‚๏ธ  BrioStack Operations  32 tools โ–ถ
ToolCategoryDescription
search_customerscustomersSearch by name, phone, email, or address
get_customer_detailscustomersFull customer record by Briostack ID
get_customer_full_profilecustomersAggregate profile: account + services + appointments + invoices
get_customer_servicescustomersActive service plans for a customer
list_customer_contact_methodscustomersPhone, email, contact preferences on file
list_appointmentsappointmentsList with filters: date range, status, branch, tech
get_appointmentappointmentsSingle appointment by ID
service_appointmentappointmentsCreate a new service appointment
reschedule_appointmentappointmentsReschedule to a new date/time
open_appointmentappointmentsSet status to open/active
close_appointmentappointmentsMark as completed/closed
update_appointment_statusappointmentsUpdate appointment status field
get_invoicesbillingInvoices with balance and line-item detail
get_service_invoicesbillingInvoices linked to a service plan
get_invoice_schedulesbillingRecurring invoice schedule
get_ar_snapshotbillingAR total outstanding, aging buckets
get_billing_intelligence_referencebillingBilling field meanings and computation rules
get_daily_ops_snapshotoperationsToday's summary: appointments, revenue, open tasks
list_servicesoperationsAll service types offered
list_service_categoriesoperationsService category taxonomy
list_employeesoperationsEmployee roster with roles and branches
list_branchesoperationsBranch/office locations
list_leadsoperationsOpen leads pipeline
list_communicationsoperationsCommunication log (calls, texts, notes)
brio_raw_getraw-apiPass-through GET to any BrioStack REST endpoint
brio_raw_postraw-apiPass-through POST (creates records)
brio_raw_patchraw-apiPass-through PATCH (partial updates โ€” verified on /appointments)
brio_raw_putraw-apiPass-through PUT (full replace)
brio_raw_deleteraw-apiPass-through DELETE
brio_raw_optionsraw-apiDiscover supported methods on any endpoint
brio_get_openapi_specraw-apiFetch the full BrioStack OpenAPI specification
brio_rate_statusraw-apiCurrent API rate limit usage (20 req / 60 s)
๐Ÿ’ณ  CardPointe Payments  15 tools โ–ถ
ToolCategoryDescription
cardpointe_authorizetransactionsAuthorize a charge (hold funds, don't capture)
cardpointe_capturetransactionsCapture a previously authorized transaction
cardpointe_voidtransactionsVoid an authorized or unsettled transaction
cardpointe_refundtransactionsRefund a settled transaction (partial or full)
cardpointe_inquiretransactionsLook up a transaction by retref
cardpointe_inquire_by_ordertransactionsLook up by order ID
cardpointe_offline_paymenttransactionsRecord an offline/manual payment
cardpointe_ach_paymentachACH bank debit via BlueChex (MID BCX101329844815)
cardpointe_create_profileprofilesSave card/bank to stored profile (tokenize)
cardpointe_get_profileprofilesRetrieve stored profile by profile ID
cardpointe_delete_profileprofilesRemove a stored payment profile
cardpointe_search_profile_by_party_idprofilesFind profiles by partyId (= Briostack customerId)
cardpointe_account_statusadminMerchant account status and configuration
cardpointe_get_depositadminDeposit/funding report for a date range
cardpointe_settle_statusadminSettlement batch status
๐Ÿ“‹  Agency / GHL Operations  154 tools โ–ถ
ToolCategoryDescription
search_agency_contactscontactsSearch GHL contacts by name, phone, email, or tag
get_contactcontactsFetch full contact record by GHL contact ID
create_contactcontactsCreate a new GHL contact
update_contactcontactsUpdate contact fields and custom properties
delete_contactcontactsDelete a contact record permanently
bulk_update_contactscontactsUpdate multiple contacts in a single call
add_contact_tagcontactsAdd one or more tags to a contact
remove_contact_tagcontactsRemove one or more tags from a contact
add_contact_to_workflowcontactsEnroll a contact into a GHL workflow
remove_contact_from_workflowcontactsRemove a contact from a workflow
get_contact_appointmentscontactsList all calendar appointments linked to a contact
list_contact_notescontactsList all notes for a contact
create_contact_notecontactsAdd a note to a contact
update_contact_notecontactsEdit an existing contact note
delete_contact_notecontactsDelete a contact note
pin_contact_notecontactsPin a note to the top of a contact record
get_conversationconversationsFetch a conversation thread by ID
get_conversation_messagesconversationsList messages in a conversation
list_conversationsconversationsList all conversations with filters
create_conversationconversationsCreate a new conversation thread for a contact
update_conversationconversationsUpdate conversation status, assignment, or label
send_messageconversationsSend SMS, email, or in-app message
send_email_messageconversationsSend a formatted email through GHL
send_whatsapp_messageconversationsSend a WhatsApp message via GHL
list_calendarscalendarsList all GHL calendars
get_calendarcalendarsGet a single calendar by ID
create_calendarcalendarsCreate a new GHL calendar
update_calendarcalendarsUpdate calendar settings and availability rules
delete_calendarcalendarsDelete a calendar
list_calendar_eventscalendarsEvents with date/calendar filters
get_calendar_eventcalendarsGet a single calendar event
create_calendar_eventcalendarsCreate an appointment in GHL calendar
update_calendar_eventcalendarsUpdate an existing calendar event (reschedule, reassign)
delete_calendar_eventcalendarsDelete a calendar event
get_available_slotscalendarsGet available booking time slots for a calendar
create_block_slotcalendarsBlock time on a calendar to prevent bookings
delete_block_slotcalendarsRemove a blocked time slot
get_pipelinespipelinesList all sales/operations pipelines
get_pipeline_stagespipelinesList stages for a specific pipeline
list_opportunitiespipelinesPipeline opportunities with stage filters
get_opportunitypipelinesGet a single opportunity by ID
create_opportunitypipelinesCreate a pipeline opportunity
update_opportunitypipelinesUpdate opportunity details
update_opportunity_statuspipelinesMove opportunity to won/lost/open
delete_opportunitypipelinesDelete a pipeline opportunity
add_opportunity_followerpipelinesAdd a team member as follower to an opportunity
list_workflowsautomationList all automation workflows
get_workflowautomationGet workflow details, triggers, and steps by ID
trigger_workflowautomationEnroll a contact into a workflow by workflow ID
get_locationadminGHL location (sub-account) details
update_locationadminUpdate sub-account settings and preferences
get_custom_fieldsadminList all custom fields in the location
create_custom_fieldadminCreate a new custom field
update_custom_fieldadminUpdate a custom field definition
delete_custom_fieldadminDelete a custom field
list_custom_valuesadminList all custom values (location-level variables)
create_custom_valueadminCreate a custom value variable
update_custom_valueadminUpdate a custom value
delete_custom_valueadminDelete a custom value
list_usersadminAll users in the location
get_useradminGet a user by ID
create_useradminCreate a new user in the location
update_useradminUpdate user profile and permissions
delete_useradminRemove a user from the location
list_tagsadminAll contact tags
create_tagadminCreate a new contact tag
list_tasksadminTasks assigned in GHL
create_taskadminCreate a new task
update_taskadminUpdate task details, due date, or assignment
complete_taskadminMark a task as completed
delete_taskadminDelete a task
get_email_dns_healthadminCheck SPF, DKIM, DMARC for sending domain
repair_ses_dnsadminAuto-repair SES DNS records
search_agency_locationsadminSearch GHL sub-accounts/locations
list_campaignsmarketingAll campaigns
list_formsmarketingAll lead capture forms
get_form_submissionsmarketingGet submissions for a specific form
list_funnelsmarketingAll funnels and pages
list_funnel_pagesmarketingPages within a funnel
list_surveysmarketingAll surveys
get_survey_submissionsmarketingGet submissions for a specific survey
list_social_media_postssocialList scheduled and published social posts
get_social_planner_postsocialGet a single social planner post by ID
create_social_media_postsocialSchedule a social media post
update_social_media_postsocialEdit a scheduled social media post
delete_social_media_postsocialDelete a scheduled social media post
list_social_planner_accountssocialList connected social accounts and OAuth status
get_social_planner_statssocialPost analytics and engagement statistics
list_knowledge_basesaiList all AI knowledge bases
create_knowledge_baseaiCreate an AI knowledge base
get_knowledge_baseaiGet knowledge base details by ID
update_knowledge_baseaiUpdate knowledge base settings and name
delete_knowledge_baseaiDelete a knowledge base
create_knowledge_base_faqaiAdd an FAQ entry to a knowledge base
query_knowledge_baseaiQuery a knowledge base for answers
crawl_knowledge_base_urlaiIngest URL content into a knowledge base
list_conversation_ai_botsaiList all Conversation AI bots
create_conversation_ai_botaiCreate a GHL AI conversation bot
get_conversation_ai_botaiGet Conversation AI bot config and prompt by ID
update_conversation_ai_botaiUpdate bot settings, prompt, and KB links
delete_conversation_ai_botaiDelete a Conversation AI bot
list_voice_agentsaiList all Voice AI agents
create_voice_agentaiCreate a GHL Voice AI agent
get_voice_agentaiGet Voice AI agent config and voice settings by ID
update_voice_agentaiUpdate voice agent persona, script, calendar booking, and language
delete_voice_agentaiDelete a Voice AI agent
list_voice_call_logsaiVoice agent call history
get_voice_call_transcriptaiGet full transcript and AI summary for a Voice AI call
list_ai_agentsaiList all Agent Studio AI agents
create_ai_agentaiCreate an Agent Studio agent with tools, KB, and routing
get_ai_agentaiGet Agent Studio agent config and MCP tool connections
list_blog_postscontentList all blog posts (filter by status, date, author)
get_blog_postcontentGet a single blog post by ID
create_blog_postcontentCreate a blog post in GHL
update_blog_postcontentUpdate an existing blog post content, SEO, or status
delete_blog_postcontentDelete a blog post
list_blog_categoriescontentList blog categories
list_blog_authorscontentList blog authors/contributors
list_productscommerceProducts/services in the GHL store
get_productcommerceGet a single product by ID
create_productcommerceCreate a new product
update_productcommerceUpdate product details, description, and images
delete_productcommerceDelete a product
list_pricescommerceList price variants for a product
create_pricecommerceCreate a price variant (one-time or recurring) for a product
list_invoicescommerceGHL invoices with status filters
get_invoicecommerceGet invoice details, line items, and payment status
create_invoicecommerceCreate a new one-time or recurring invoice
update_invoicecommerceUpdate invoice line items, due date, or notes
send_invoicecommerceSend invoice to contact via email
void_invoicecommerceVoid an invoice
create_invoice_templatecommerceCreate a recurring invoice template for workflow automation
list_orderscommerceList ecommerce orders with status and date filters
get_ordercommerceGet order details including line items and fulfillment
list_subscriptionscommerceList active and cancelled subscriptions
get_subscriptioncommerceGet subscription details and billing history
cancel_subscriptioncommerceCancel a contact's active subscription
list_couponscommerceList discount coupons
create_couponcommerceCreate a percentage or fixed-amount discount coupon
list_payment_transactionscommercePayment transactions
process_stripe_refundcommerceProcess a Stripe refund through GHL
access_pestpro_stripe_accountcommerceAccess the Pest Pro linked Stripe account for payouts and reporting
list_reviewsreviewsList Google and Facebook reviews for the location
reply_to_reviewreviewsPost a public reply to a Google or Facebook review
send_review_requestreviewsSend a review request to a contact via SMS or email
list_custom_object_schemascustom-objectsList all custom object definitions in the location
create_custom_object_recordcustom-objectsCreate a new record for a custom object type
update_custom_object_recordcustom-objectsUpdate fields on a custom object record
delete_custom_object_recordcustom-objectsDelete a custom object record
list_custom_object_recordscustom-objectsQuery and list records for a custom object type
list_documentsdocumentsList documents and contracts
get_documentdocumentsGet document details and e-signature status
create_documentdocumentsCreate a document or contract from a template
send_document_for_signaturedocumentsSend a document for e-signature to a contact
๐ŸŒ  Open-Signal Meta Gateway  1 tool โ–ถ
ToolCategoryDescription
get_meta_webhook_infowebhooksSecurely retrieves the Meta webhook integration manifest from GCP Secret Manager including endpoints and GCP component metadata.
๐Ÿ’ฌ  Open-Signal Messaging Connector  5 tools โ–ถ
ToolCategoryDescription
send_whatsapp_messagemessagesSend a WhatsApp message to a contact through GHL.
get_whatsapp_conversationsconversationsRetrieve recent WhatsApp conversations from GHL.
get_whatsapp_messagesmessagesRetrieve WhatsApp messages from a specific contact or conversation.
search_whatsapp_contactscontactsSearch for contacts who have WhatsApp conversations.
get_whatsapp_account_statusadminCheck WhatsApp Business account status and integration health.

jomAI Agent & Open-Signal Flow
Authoritative sequence of operations and topology for the JOM interactive approval ecosystem.

๐Ÿ”„ White-Label Replication Ready

The jomAI Agent App and Open-Signal Gateway are built as decoupled, provider-agnostic engines. This architecture allows deploying the interactive "notify-and-approve" communications flow for any client or channel (SMS, Messenger, Telegram, WhatsApp) with minimal modification.

graph TD %% Inbound Channels subgraph Inbound Channels PW["Owner Personal WA
+19545526244"] -->|Baileys Recv| OGW["Local OpenClaw Gateway
Port 18899 on Mac"] BW["Business WA
+19542474087"] -->|Meta Webhook| MAPI["Meta Cloud API"] BW -->|GHL Forward| GHL["GoHighLevel CRM"] end %% Webhook Routing OGW -->|whatsapp_queue.py POST| CR_OC["Cloud Run Webhook
/webhook/openclaw-whatsapp"] MAPI -->|POST| CR_META["Cloud Run Webhook
/webhook/whatsapp"] GHL -->|POST| CR_GHL["Cloud Run Webhook
/webhook/ghl-whatsapp"] %% GCP Cloud Run Server subgraph jomAI Agent App (jom-slack-bot) CR_OC --> PP["process_inbound_whatsapp"] CR_META --> PP CR_GHL --> PP PP -->|1. Generate Draft| CL["Anthropic API
claude-sonnet-4-6"] PP -->|2. Write Status 'pending'| NDB[("Neon Database
whatsapp_approvals")] PP -->|3. Post Block Kit Card| SLK["Slack Channel
#jom-inbound-reception"] end %% Slack Workspace subgraph Slack Workspace SLK -->|Rich Card with Buttons| OP["Operator Actions"] OP -->|Approve & Send| ACT_APP["Approve Action
approve_whatsapp"] OP -->|Edit Draft| ACT_EDT["Edit Action
edit_whatsapp"] OP -->|Dismiss| ACT_DIS["Dismiss Action
dismiss_whatsapp"] end %% Action Callback Routing ACT_APP -->|POST /slack/events| CR_EV["Cloud Run Action Listener"] ACT_EDT -->|Open Modal & Submit| CR_EV ACT_DIS -->|Strip Buttons & Update Card| CR_EV %% Delivery Channels subgraph Outbound Delivery CR_EV -->|If Business WA| MBW["Meta WhatsApp API
Direct send_text"] CR_EV -->|If Personal WA| DB_APP["Update DB status = 'approved'"] %% Local Watcher Daemon LD["Local Daemon watcher
whatsapp_approved_daemon.py"] -->|Poll DB status = 'approved'| NDB LD -->|Run openclaw CLI| CLI["openclaw message send"] CLI -->|Deliver Message| PW LD -->|Update DB status = 'sent'| NDB LD -->|Post Confirmation Thread| SLK end

Sequence of Operations

1

Inbound Webhook Capture

Inbound messages from Meta APIs, GHL, or local OpenClaw gateways forward payloads to jomAI Agent App's Cloud Run webhooks.

2

Response Drafting & Queueing

The agent generates a draft response using the Anthropic API, writes the session record to Neon DB (status: pending), and posts an interactive card to Slack.

3

Operator Action

Operators review the card in Slack and can either Approve & Send, Edit Draft (via a Slack Modal), or Dismiss the draft response.

4

Outbound Routing

Approved drafts are sent directly to the Open-Signal Gateway (using GHL/Meta APIs for business numbers, or queueing in the database for the local watcher daemon to deliver via the openclaw CLI for personal accounts).


Developer Guide
Everything you need to integrate, deploy, or extend these servers.

Protocol

MCP 2025-03-26

Streamable-HTTP & stdio transports

Runtime

Python 3.12

mcp SDK 1.27+, FastMCP wrapper

Hosting

Google Cloud Run

us-east-2, linux/amd64, 0.25 vCPU / 0.5 GB

Image

ECR Private

us-central1-docker.pkg.dev/ghlpest-controlv2/openclaw-mcp-repo/briostack-mcp

Credentials

GCP Secret Manager

Region us-east-2 ยท Prefix pestpro/integrations/

Auth (API)

None (network-gated)

IP allowlist required for external access

Deploy Your Own Instance

1

Prerequisites

Python 3.11+, Docker (or Colima), Google Cloud SDK (gcloud), access to GCP project ghlpest-controlv2. Colima users: colima start โ€” no Docker Desktop needed.

2

Clone & install

cd ~/briostack-mcp/hosted && pip install -r requirements.txt โ€” installs mcp>=1.27, google-cloud-secret-manager, google-auth, uvicorn, requests.

3

Secret Manager

Store credentials at pestpro/integrations/briostack in GCP Secret Manager (us-central1) with keys api_key, base_url, instance. The server loads these at runtime via service account โ€” no env vars needed in production.

4

Build & push (amd64 required)

docker build --platform linux/amd64 -t us-central1-docker.pkg.dev/ghlpest-controlv2/openclaw-mcp-repo/briostack-mcp:latest .
Then: docker push us-central1-docker.pkg.dev/ghlpest-controlv2/openclaw-mcp-repo/briostack-mcp:latest. The --platform linux/amd64 flag ensures compatibility across all Cloud Run environments.

5

IAM permissions

Assign Secret Manager Secret Accessor role (roles/secretmanager.secretAccessor) to the Google Cloud Run runtime service account so it can retrieve the integration credentials.

6

Create Cloud Run service

Deploy to Cloud Run on port 8001. Enable HTTP/1 or HTTP/2 transport with startup CPU allocation. Auto-deploy can be configured using Google Cloud Build triggers linked to your GitHub repo.

7

Verify

curl -H "Accept: text/event-stream" https://<cloudrun-url>/sse โ†’ expect the event stream or a SSE connection. That response confirms the server is healthy and accepting remote MCP connections.


Hosting This Page at mcp.jom.services
Steps to publish this hub at your custom subdomain via DNSimple + GitHub Pages.
1

Push to GitHub Pages

Create repo moemeyer/jom-mcp-hub. Push all files from ~/jom-mcp-hub/. In repo Settings โ†’ Pages โ†’ Source: main branch, / (root). GitHub serves it at moemeyer.github.io/jom-mcp-hub.

2

Add CNAME file

Create a file named CNAME in the repo root containing exactly: mcp.jom.services

3

Add DNS record in DNSimple

Log in to dnsimple.com โ†’ jom.services โ†’ DNS โ†’ Add Record:
Type: CNAME ยท Name: mcp ยท Content: moemeyer.github.io ยท TTL: 3600

4

Enable HTTPS in GitHub

Back in GitHub Pages settings โ†’ set Custom domain to mcp.jom.services โ†’ tick Enforce HTTPS. GitHub provisions a Let's Encrypt cert automatically (may take 10โ€“30 min).

5

Optional: health monitor

DNSimple has a Health Check feature (DNS โ†’ Health Checks). Point it at https://<your-apprunner-url>/ with TCP check every 60s to get uptime alerts for the live MCP server.


Machine-Readable Endpoints
Structured data for automated discovery, custom connectors, and agent frameworks.
URLFormatPurpose
https://mcp.jom.services/.well-known/mcp.jsonJSONStandard well-known MCP discovery endpoint. Server IDs, transports, auth requirements.
https://mcp.jom.services/mcp-catalog.jsonJSONFull server catalog. All tools with names, categories, descriptions. Publisher metadata.
https://mcp.jom.services/request-access.htmlHTMLAccess request page. Submit here to receive endpoint URLs and API key via email.
BrioStack MCP endpointMCP/SSE๐Ÿ”’ Provided upon access approval. Streamable-http, requires bearer auth.
CardPointe MCP endpointMCP/SSE๐Ÿ”’ Provided upon access approval. Streamable-http, requires bearer auth.
Agency / GHL MCP endpointMCP/SSE๐Ÿ”’ Provided upon access approval. Streamable-http, requires bearer auth.