Documentation Index
Fetch the complete documentation index at: https://docs.usechar.com/llms.txt
Use this file to discover all available pages before exploring further.
The Char SaaS MCP exposes these tools at https://app.usechar.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:
| Parameter | Type | Required | Description |
|---|
id | string | No | Organization ID (e.g., org_01ABC...) |
slug | string | No | Organization 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:
| Parameter | Type | Required | Description |
|---|
action | "get" | "update" | "clear" | Yes | Action to perform |
idp_type | "okta" | "azure" | "auth0" | "google" | "custom_oidc" | No | Identity provider type (for update) |
idp_client_id | string | No | OIDC client ID (for update) |
idp_domain | string | No | Provider domain (for update) |
idp_issuer | string | No | Full issuer URL (for update, required for custom_oidc) |
allowed_domains | string[] | No | Allowed 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:
| Parameter | Type | Required | Description |
|---|
idp_type | "okta" | "azure" | "auth0" | "google" | "custom_oidc" | Yes | Identity provider type |
idp_domain | string | No | Provider domain (required for okta, azure, auth0) |
idp_issuer | string | No | Full 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"
}
Governance
manage_governance_provider
Gets, updates, or clears the organization governance provider configuration used for policy decisions. Requires organization context and admin role.
Input:
| Parameter | Type | Required | Description |
|---|
action | "get" | "update" | "clear" | Yes | Action to perform |
provider_key | "langguard" | "byo" | No | Provider key (for update) |
interceptor_url | string (URL) | No | HTTPS interceptor endpoint (for update) |
interceptor_name | string | No | Interceptor identifier (for update) |
api_key | string | No | Optional API key to set/rotate (for update) |
is_enabled | boolean | No | Enable/disable policy checks (for update) |
For update, omitted fields are merged with the current saved configuration.
Output:
{
"action": "update",
"effective_status": "active",
"reason": "Provider is enabled and policy checks are active.",
"config": {
"provider_key": "langguard",
"interceptor_url": "https://api.langguard.ai/interceptor",
"interceptor_name": "policy-langguard.ai",
"api_key_last4": "abcd",
"has_api_key": true,
"is_enabled": true,
"last_test_status": "success",
"last_test_message": "All policies passed.",
"last_test_at": "2026-02-06T12:34:56.000Z",
"created_at": "2026-02-06T12:30:00.000Z",
"updated_at": "2026-02-06T12:34:56.000Z"
}
}
test_governance_provider
Tests governance provider connectivity and interceptor response contract. Requires organization context and admin role.
Input:
| Parameter | Type | Required | Description |
|---|
provider_key | "langguard" | "byo" | No | Provider key override for this test |
interceptor_url | string (URL) | No | HTTPS interceptor endpoint override |
interceptor_name | string | No | Interceptor identifier override |
api_key | string | No | API key override for this test |
When omitted, values are taken from the currently saved governance configuration.
Output:
{
"provider_key": "langguard",
"interceptor_url": "https://api.langguard.ai/interceptor",
"interceptor_name": "policy-langguard.ai",
"status": "notify",
"message": "1 policy warning detected. Review recommended.",
"violations": [
{
"policy_id": "POLICY_DATA_CLASSIFICATION",
"status": "notify",
"details": "Trace is missing required data classification metadata"
}
],
"latency_ms": 1320
}
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:
| Parameter | Type | Required | Description |
|---|
include | "basic" | "features" | "usage" | "all" | No | What 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:
| Parameter | Type | Required | Description |
|---|
feature | "sso" | "scim" | "audit_logs" | "custom_domains" | "end_users" | "seats" | Yes | Feature to check |
current_usage | number | No | Current 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:
| Parameter | Type | Required | Description |
|---|
detail | "active_check" | "status" | "full" | No | Level 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:
| Parameter | Type | Required | Description |
|---|
type | "checkout" | "portal" | Yes | URL type |
product_id | string | No | Polar 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
Lists browser tools available from connected WebMCP tabs.
Input:
| Parameter | Type | Required | Description |
|---|
search | string | No | Filter tools by name or description |
source_id | string | No | Filter to tools from a specific source/tab |
include_sources | boolean | No | Include 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"
}
]
}
Executes a browser tool by name.
Input:
| Parameter | Type | Required | Description |
|---|
tool_name | string | Yes | Name of the tool to call |
args | object | No | Arguments to pass to the tool |
source_id | string | No | Specific 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:
| Parameter | Type | Required | Description |
|---|
message | string | Yes | Message 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