Hybrid human + AI expertise for faster, trusted answers and decisions via MCP Server.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Pearl API key for authenticated tool access.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user explicitly asks to speak with a real human expert, needs personalized advice in a complex or sensitive domain, or says something like 'Can I talk to a real expert?'. Supports phone callback — pass phoneNumber and contactPreference='phone' if the user wants a call.
The user's question
Optional session ID for continuing a conversation
Optional conversation history. This ensures experts see the complete context
Customer's phone number for expert callback in E.164 format (e.g., +15551234567). Only pass when the user explicitly provides it.
Customer's preferred contact method. Set to 'phone' when the user wants a phone callback.
When true, the API returns a hardcoded mock expert success response instead of routing to a real expert. Useful for testing downstream behavior.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Use this when the user explicitly asks to speak with a real human expert, needs personalized advice in a complex or sensitive domain, or says something like 'Can I talk to a real expert?'. Supports phone callback — pass phoneNumber and contactPreference='phone' if the user wants a call.
| Argument | Type | Description |
|---|---|---|
| question* | string | The user's question |
| sessionId | string | Optional session ID for continuing a conversation |
| chatHistory | array | Optional conversation history. This ensures experts see the complete context |
| phoneNumber | string | Customer's phone number for expert callback in E.164 format (e.g., +15551234567). Only pass when the user explicitly provides it. |
| contactPreference | string | Customer's preferred contact method. Set to 'phone' when the user wants a phone callback. |
| enableMockResponse | boolean | When true, the API returns a hardcoded mock expert success response instead of routing to a real expert. Useful for testing downstream behavior. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "The user's question"
},
"sessionId": {
"type": "string",
"description": "Optional session ID for continuing a conversation"
},
"chatHistory": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"content"
],
"properties": {
"role": {
"enum": [
"user",
"assistant"
],
"type": "string"
},
"content": {
"type": "string"
}
}
},
"description": "Optional conversation history. This ensures experts see the complete context"
},
"phoneNumber": {
"type": "string",
"description": "Customer's phone number for expert callback in E.164 format (e.g., +15551234567). Only pass when the user explicitly provides it."
},
"contactPreference": {
"enum": [
"chat",
"phone"
],
"type": "string",
"description": "Customer's preferred contact method. Set to 'phone' when the user wants a phone callback."
},
"enableMockResponse": {
"type": "boolean",
"description": "When true, the API returns a hardcoded mock expert success response instead of routing to a real expert. Useful for testing downstream behavior."
}
}
}Use this when the user wants a rapid AI-generated answer, draft, or alternative perspective on a low-risk or exploratory topic that does not require human validation. Do not use for medical, legal, financial, or safety-critical questions — use askExpert or askPearlExpert instead.
| Argument | Type | Description |
|---|---|---|
| question* | string | The user's question |
| sessionId | string | Optional session ID for continuing a conversation |
| chatHistory | array | Optional conversation history. This ensures experts see the complete context |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "The user's question"
},
"sessionId": {
"type": "string",
"description": "Optional session ID for continuing a conversation"
},
"chatHistory": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"content"
],
"properties": {
"role": {
"enum": [
"user",
"assistant"
],
"type": "string"
},
"content": {
"type": "string"
}
}
},
"description": "Optional conversation history. This ensures experts see the complete context"
}
}
}Use this when the problem is complex, ambiguous, high-stakes, or multidisciplinary and would benefit from AI intake followed by escalation to a human expert. Do not use for simple fact queries (use askPearlAi) or when the user explicitly requests a human directly (use askExpert). Supports phone callback — pass phoneNumber and contactPreference='phone' if the user wants a call.
| Argument | Type | Description |
|---|---|---|
| question* | string | The user's question |
| sessionId | string | Optional session ID for continuing a conversation |
| chatHistory | array | Optional conversation history. This ensures experts see the complete context |
| phoneNumber | string | Customer's phone number for expert callback in E.164 format (e.g., +15551234567). Only pass when the user explicitly provides it. |
| contactPreference | string | Customer's preferred contact method. Set to 'phone' when the user wants a phone callback. |
| enableMockResponse | boolean | When true, the API returns a hardcoded mock expert success response instead of routing to a real expert. Useful for testing downstream behavior. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "The user's question"
},
"sessionId": {
"type": "string",
"description": "Optional session ID for continuing a conversation"
},
"chatHistory": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"content"
],
"properties": {
"role": {
"enum": [
"user",
"assistant"
],
"type": "string"
},
"content": {
"type": "string"
}
}
},
"description": "Optional conversation history. This ensures experts see the complete context"
},
"phoneNumber": {
"type": "string",
"description": "Customer's phone number for expert callback in E.164 format (e.g., +15551234567). Only pass when the user explicitly provides it."
},
"contactPreference": {
"enum": [
"chat",
"phone"
],
"type": "string",
"description": "Customer's preferred contact method. Set to 'phone' when the user wants a phone callback."
},
"enableMockResponse": {
"type": "boolean",
"description": "When true, the API returns a hardcoded mock expert success response instead of routing to a real expert. Useful for testing downstream behavior."
}
}
}Retrieve the full message history for a session. Includes all messages (after any formatting done during processing). Use to resume discussions.
| Argument | Type | Description |
|---|---|---|
| sessionId* | string | The session ID of the conversation |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId"
],
"properties": {
"sessionId": {
"type": "string",
"description": "The session ID of the conversation"
}
}
}Use this when polling the current status of a verification request previously submitted via send_answer_for_verification. Returns the verification state (not started, in progress, or completed) and the expert's verdict once the review is complete.
| Argument | Type | Description |
|---|---|---|
| sessionId* | string | The session identifier of the chat whose verification state should be retrieved. Must match the sessionId previously returned by send_answer_for_verification. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId"
],
"properties": {
"sessionId": {
"type": "string",
"description": "The session identifier of the chat whose verification state should be retrieved. Must match the sessionId previously returned by send_answer_for_verification."
}
}
}Use this tool only when the user explicitly requests to start verification, fact-checking, or expert validation of an AI-generated answer. This tool must be used exclusively to initiate the verification process. Do not call it to check status, retrieve results, or for any follow-up actions. A human Pearl expert will review the answer and determine its correctness. Only one verification is allowed per chat session — this tool must not be invoked more than once. Invoking this tool renders an interactive UI component that displays live verification status and the final expert verdict.
| Argument | Type | Description |
|---|---|---|
| conversation* | array | Full conversation between the user and the AI assistant to be reviewed by a human expert. Must contain at least one assistant message — the AI-generated answer that will be assessed. |
| questionCategory* | string | The category that best describes the question being verified. - "Car" for automotive/vehicle topics - "Veterinary" for pet or animal health - "Health" for human medical topics - "Tech" for technology/software - "Law" for legal questions - "Other" for anything that does not fit the above |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"conversation",
"questionCategory"
],
"properties": {
"conversation": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"content"
],
"properties": {
"role": {
"enum": [
"system",
"user",
"assistant"
],
"type": "string",
"description": "The role of the participant in the conversation (e.g. \"user\" or \"assistant\")."
},
"content": {
"type": "string",
"description": "The message content sent by the participant."
}
}
},
"description": "Full conversation between the user and the AI assistant to be reviewed by a human expert. Must contain at least one assistant message — the AI-generated answer that will be assessed."
},
"questionCategory": {
"enum": [
"Car",
"Veterinary",
"Health",
"Tech",
"Law",
"Other"
],
"type": "string",
"description": "The category that best describes the question being verified.\n- \"Car\" for automotive/vehicle topics\n- \"Veterinary\" for pet or animal health\n- \"Health\" for human medical topics\n- \"Tech\" for technology/software\n- \"Law\" for legal questions\n- \"Other\" for anything that does not fit the above"
}
}
}Use this when a professional needs to validate the correctness, safety, or trustworthiness of a specific AI-generated answer, or when the user asks to have an answer double-checked by a real expert.
| Argument | Type | Description |
|---|---|---|
| answer* | string | The AI-generated answer that requires human verification |
| sessionId | string | Existing session ID to continue; generated if omitted |
| chatHistory | array | Optional prior messages for context (ordered, oldest first) |
| enableMockResponse | boolean | When true, the API returns a hardcoded mock expert success response instead of routing to a real expert. Useful for testing downstream behavior. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"answer"
],
"properties": {
"answer": {
"type": "string",
"minLength": 1,
"description": "The AI-generated answer that requires human verification"
},
"sessionId": {
"type": "string",
"description": "Existing session ID to continue; generated if omitted"
},
"chatHistory": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"content"
],
"properties": {
"role": {
"enum": [
"user",
"assistant"
],
"type": "string",
"description": "Message role"
},
"content": {
"type": "string",
"description": "Message content"
}
}
},
"description": "Optional prior messages for context (ordered, oldest first)"
},
"enableMockResponse": {
"type": "boolean",
"description": "When true, the API returns a hardcoded mock expert success response instead of routing to a real expert. Useful for testing downstream behavior."
}
}
}