Skip to main content
The Char SaaS MCP exposes these tools at https://app.meetchar.ai/mcp.

Profile

get_profile

Returns the authenticated user’s profile and organization memberships. Input: None Output:
{
  "id": "user_01ABC...",
  "email": "[email protected]",
  "name": "Jane Doe",
  "organizations": [
    {
      "id": "org_01ABC...",
      "name": "Acme Corp",
      "slug": "acme-corp",
      "role": "admin"
    }
  ]
}

Organizations

list_organizations

Returns all organizations the authenticated user belongs to. Input: None Output:
{
  "organizations": [
    {
      "id": "org_01ABC...",
      "name": "Acme Corp",
      "slug": "acme-corp",
      "role": "admin"
    }
  ],
  "count": 1
}

get_organization

Returns details of an organization by ID or slug. Input:
ParameterTypeRequiredDescription
idstringNoOrganization ID (e.g., org_01ABC...)
slugstringNoOrganization slug
Provide either id or slug, not both. Output:
{
  "id": "org_01ABC...",
  "name": "Acme Corp",
  "slug": "acme-corp",
  "role": "admin"
}

list_members

Returns all members of the current organization. Requires organization context. Input: None Output:
{
  "members": [
    {
      "user_id": "user_01ABC...",
      "email": "[email protected]",
      "name": "Jane Doe",
      "role": "admin",
      "joined_at": "2024-01-15T10:30:00Z"
    }
  ],
  "count": 1
}

Identity

manage_idp_config

Gets, updates, or clears the identity provider configuration for SSO. Requires organization context and admin role. Input:
ParameterTypeRequiredDescription
action"get" | "update" | "clear"YesAction to perform
idp_type"okta" | "azure" | "auth0" | "google" | "custom_oidc"NoIdentity provider type (for update)
idp_client_idstringNoOIDC client ID (for update)
idp_domainstringNoProvider domain (for update)
idp_issuerstringNoFull issuer URL (for update, required for custom_oidc)
allowed_domainsstring[]NoAllowed origins for agent embedding (for update)
Output:
{
  "idp_type": "okta",
  "idp_client_id": "0oa1234...",
  "idp_domain": "acme.okta.com",
  "idp_issuer": null,
  "allowed_domains": ["https://app.example.com"]
}

test_idp_connection

Tests connectivity to an identity provider by fetching its OIDC discovery document. Input:
ParameterTypeRequiredDescription
idp_type"okta" | "azure" | "auth0" | "google" | "custom_oidc"YesIdentity provider type
idp_domainstringNoProvider domain (required for okta, azure, auth0)
idp_issuerstringNoFull issuer URL (required for custom_oidc)
Output:
{
  "success": true,
  "issuer": "https://acme.okta.com",
  "jwks_uri": "https://acme.okta.com/oauth2/v1/keys"
}
On failure:
{
  "success": false,
  "error": "Failed to fetch discovery document"
}

Plans

list_plans

Returns all available plan tiers. Input: None Output:
{
  "plans": [
    {
      "id": "plan_free",
      "name": "Free",
      "description": "For individuals and small teams",
      "features": {...},
      "limits": {...},
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    }
  ],
  "count": 3
}

get_plan_info

Returns the current organization’s plan, features, and usage. Requires organization context. Input:
ParameterTypeRequiredDescription
include"basic" | "features" | "usage" | "all"NoWhat to include (default: "all")
Output (with include: "all"):
{
  "plan": {
    "id": "plan_pro",
    "name": "Pro",
    "description": "For growing teams"
  },
  "features": {
    "sso": true,
    "custom_domains": false
  },
  "limits": {
    "seats": 10,
    "end_users": 1000
  },
  "usage": {
    "seats_used": 3,
    "end_users_used": 150
  }
}

check_feature

Checks if a specific feature is accessible for the current organization. Input:
ParameterTypeRequiredDescription
feature"sso" | "scim" | "audit_logs" | "custom_domains" | "end_users" | "seats"YesFeature to check
current_usagenumberNoCurrent usage count (for limited features)
Output:
{
  "feature": "sso",
  "allowed": true,
  "reason": null
}
On denial:
{
  "feature": "custom_domains",
  "allowed": false,
  "reason": "Requires Pro plan or higher"
}

Subscriptions

get_subscription

Returns the current organization’s subscription information. Input:
ParameterTypeRequiredDescription
detail"active_check" | "status" | "full"NoLevel of detail (default: "status")
Output (with detail: "status"):
{
  "has_subscription": true,
  "is_active": true,
  "status": "active",
  "plan_id": "plan_pro",
  "current_period_end": "2024-02-15T00:00:00Z",
  "cancel_at": null
}

get_billing_url

Returns a checkout or customer portal URL. Input:
ParameterTypeRequiredDescription
type"checkout" | "portal"YesURL type
product_idstringNoPolar product ID (required for checkout)
Output:
{
  "url_type": "portal",
  "url": "https://polar.sh/..."
}

sync_subscription

Forces a sync of subscription data from Polar. Input: None Output:
{
  "synced": 1,
  "deleted": 0
}

Hub

hub_list_tools

Lists browser tools available from connected WebMCP tabs. Input:
ParameterTypeRequiredDescription
searchstringNoFilter tools by name or description
source_idstringNoFilter to tools from a specific source/tab
include_sourcesbooleanNoInclude source metadata for each tool (default: false)
Output:
{
  "count": 2,
  "tools": [
    {
      "name": "submit_form",
      "description": "Submit the contact form",
      "inputSchema": {...}
    }
  ]
}

hub_list_sources

Lists active browser tabs/sources that have registered tools. Input: None Output:
{
  "count": 1,
  "sources": [
    {
      "sourceId": "src_01ABC...",
      "tabId": "tab_123",
      "origin": "https://app.example.com",
      "title": "My App",
      "url": "https://app.example.com/dashboard",
      "toolCount": 3,
      "connectedAt": "2024-01-15T10:30:00Z",
      "lastSeenAt": "2024-01-15T10:35:00Z"
    }
  ]
}

hub_call_tool

Executes a browser tool by name. Input:
ParameterTypeRequiredDescription
tool_namestringYesName of the tool to call
argsobjectNoArguments to pass to the tool
source_idstringNoSpecific source/tab ID (required if multiple sources have the same tool)
Output: Varies by tool. Returns the tool’s response content.

Utility

echo

Echoes back a message. Useful for testing the MCP connection. Input:
ParameterTypeRequiredDescription
messagestringYesMessage to echo (1-1000 characters)
Output:
{
  "message": "Echo: Hello, world!"
}

verify_api_access

Verifies the current session has valid API access. Input: None Output:
{
  "status": "ok",
  "message": "Session verified with organization context",
  "authenticated": true,
  "user_email": "[email protected]",
  "organization_id": "org_01ABC...",
  "organization_name": "Acme Corp",
  "role": "admin",
  "token_expires_at": "2024-01-15T11:30:00Z",
  "token_expiring_soon": false,
  "has_refresh_token": true
}

See also