Tools reference
Inputs, permissions, effects, retries, and examples for every Rinhelp tool.
MCP clients discover these tools automatically from https://mcp.rinhelp.com/mcp. The CLI uses the same names and input objects.
Use account.whoami first. The list below includes every tool available through Rinhelp’s MCP server and CLI.
Tool reference
The MCP server and CLI expose the same 23 tool names and input objects.
Retry and duplicate prevention
idempotency_key identifies one request. If a request may have timed out, retry it with the same key and the same input. For example, retry sources.start_crawl with idempotency_key: "help-site-1" to check the original request instead of adding the website twice. Use a new key for a different request.
account.whoami
Confirm which Rinhelp account, workspace, and role the client is using.
- Permission:
member - Effect: Shows your account, workspace, and role. It makes no changes.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
No inputs.
Input schema
{
"type": "object",
"additionalProperties": false,
"properties": {}
}
Example
{}
sources.list
List the websites you have added and their progress preparing pages for answers.
- Permission:
member - Effect: Reads the workspace website list.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
cursor continues a paginated list. limit is an integer from 1 to 100.
Input schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
}
}
Example
{
"limit": 20
}
sources.start_crawl
Add a public website so Rinhelp can use its pages in answers.
- Permission:
member - Effect: Returns a
run_idwhile Rinhelp reads and prepares the pages. Use that value withsources.showuntil the work finishes. - Retry: If the request may have timed out, retry with the same
urlandidempotency_key. Rinhelp returns the original request instead of adding the website twice.
Inputs
url is the public website URL. idempotency_key is a unique key for this request.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["url", "idempotency_key"],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
Example
{
"url": "https://example.com/help",
"idempotency_key": "example-help-2026-09-15"
}
sources.show
Check progress for a website you added and see the pages Rinhelp found.
- Permission:
member - Effect: Shows progress and the pages found.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
source_id is the run_id returned by sources.start_crawl.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["source_id"],
"properties": {
"source_id": {
"type": "string",
"minLength": 1
}
}
}
Example
{
"source_id": "run_01JEXAMPLE"
}
sources.show_page
Read the text Rinhelp can use from one page.
- Permission:
member - Effect: Shows one page and its saved text.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
page_id identifies the page from sources.show.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["page_id"],
"properties": {
"page_id": {
"type": "string",
"minLength": 1
}
}
}
Example
{
"page_id": "page_01JEXAMPLE"
}
widget.show
Read the current chat widget settings, publishable key, and installation snippet.
- Permission:
member - Effect: Reads widget configuration. The publishable key is safe to place in browser code.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
No inputs.
Input schema
{
"type": "object",
"additionalProperties": false,
"properties": {}
}
Example
{}
widget.update_config
Change one or more chat widget settings.
- Permission:
member - Effect: Saves the supplied settings and leaves omitted settings unchanged.
- Retry: Repeat it with the same input if needed. Rinhelp applies the same result without creating another one.
Inputs
primary_color accepts a color string. position is bottom-right or bottom-left. title and greeting are visitor-facing text.
Input schema
{
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"primary_color": {
"type": "string"
},
"position": {
"type": "string",
"enum": ["bottom-right", "bottom-left"]
},
"title": {
"type": "string"
},
"greeting": {
"type": "string"
}
}
}
Example
{
"title": "Need a hand?",
"greeting": "Ask us about setup or shipping.",
"position": "bottom-right"
}
widget.preview
Ask one test question against the help pages currently available to Rinhelp.
- Permission:
member - Effect: Returns one completed answer without creating a visitor conversation.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
message is 1 to 4,000 characters.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["message"],
"properties": {
"message": {
"type": "string",
"minLength": 1,
"maxLength": 4000
}
}
}
Example
{
"message": "How long does shipping take?"
}
email.show
Read the support address, forwarding destination, and email setup status.
- Permission:
member - Effect: Reads email settings. It does not change DNS or send mail.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
No inputs.
Input schema
{
"type": "object",
"additionalProperties": false,
"properties": {}
}
Example
{}
email.setup
Get a forwarding address for your support mailbox.
- Permission:
member - Effect: Creates or reuses the forwarding destination. Add the forwarding rule with your email provider.
- Retry: Repeat it with the same input if needed. Rinhelp applies the same result without creating another one.
Inputs
support_email is the customer-facing mailbox you want to forward from.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["support_email"],
"properties": {
"support_email": {
"type": "string",
"minLength": 1
}
}
}
Example
{
"support_email": "support@example.com"
}
email.verify
Send a test message to verify that forwarded support email reaches Rinhelp.
- Permission:
member - Effect: Starts a verification test. Check
email.showfor the resulting status. - Retry: If the request may have timed out, retry with the same
idempotency_key, then callemail.showto check the test status.
Inputs
idempotency_key is a unique key for this test. Reuse it if the same test needs a retry.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["idempotency_key"],
"properties": {
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
Example
{
"idempotency_key": "email-verify-example-1"
}
inbox.list
List customer conversations in your team inbox.
- Permission:
member - Effect: Shows waiting chats and chats your team has taken over by default.
control=closedreads closed conversations. - Retry: Call it again if needed. It reads data and makes no changes.
Inputs
cursor continues a paginated list. limit is an integer from 1 to 100. control may be closed.
Input schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"control": {
"type": "string",
"enum": ["closed"]
}
}
}
Example
{
"limit": 20
}
inbox.list_items
List all open inbox work, including conversations and pending Shopify refund requests.
- Permission:
member - Effect: Shows conversations and refund requests from the inbox.
control=closedreads closed work. - Retry: Call it again if needed. It reads data and makes no changes.
Inputs
cursor continues a paginated list. limit is an integer from 1 to 100. control may be closed.
Input schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"cursor": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"control": {
"type": "string",
"enum": ["closed"]
}
}
}
Example
{
"limit": 20
}
inbox.show
Read one conversation and its messages.
- Permission:
member - Effect: Shows the saved conversation and messages.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
conversation_id identifies the conversation from an inbox list.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["conversation_id"],
"properties": {
"conversation_id": {
"type": "string",
"minLength": 1
}
}
}
Example
{
"conversation_id": "conversation_01JEXAMPLE"
}
inbox.reply
Send a teammate reply in a visitor conversation.
- Permission:
member - Effect: Adds a teammate message. The first reply claims a waiting conversation for your team.
- Retry: If the request may have timed out, retry with the same conversation, message, and
idempotency_key. Rinhelp avoids posting the same reply twice.
Inputs
conversation_id identifies the conversation. message is 1 to 4,000 characters. idempotency_key is a unique key for this reply.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["conversation_id", "message", "idempotency_key"],
"properties": {
"conversation_id": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
Example
{
"conversation_id": "conversation_01JEXAMPLE",
"message": "I can help with that. Your order ships tomorrow.",
"idempotency_key": "reply-conversation-01"
}
inbox.end_live
Close a live conversation after your team has finished helping the visitor.
- Permission:
member - Effect: Closes the chat and moves it to the closed inbox list.
- Retry: Repeat it with the same input if needed. Rinhelp applies the same result without creating another one.
Inputs
conversation_id identifies the live conversation.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["conversation_id"],
"properties": {
"conversation_id": {
"type": "string",
"minLength": 1
}
}
}
Example
{
"conversation_id": "conversation_01JEXAMPLE"
}
team.show
List the people in the workspace and, for owners, pending invitations.
- Permission:
member - Effect: Reads workspace access. Everyone can see the team; owners can also see pending invitations.
- Retry: Call it again if needed. It reads data and makes no changes.
Inputs
No inputs.
Input schema
{
"type": "object",
"additionalProperties": false,
"properties": {}
}
Example
{}
team.invite
Invite a person to join the workspace as a member.
- Permission:
owner - Effect: Sends an email invitation. A pending invitation for the same email is reused.
- Retry: Repeat it with the same input if needed. Rinhelp applies the same result without creating another one.
Inputs
email is the invitee address. This tool always creates the member role.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["email"],
"properties": {
"email": {
"type": "string",
"minLength": 1
}
}
}
Example
{
"email": "teammate@example.com"
}
team.cancel_invite
Cancel a pending workspace invitation.
- Permission:
owner - Effect: Invalidates the pending invitation so it can no longer be accepted.
- Retry: Repeat it with the same input if needed. Rinhelp applies the same result without creating another one.
Inputs
invitation_id identifies a pending invitation from team.show.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["invitation_id"],
"properties": {
"invitation_id": {
"type": "string",
"minLength": 1
}
}
}
Example
{
"invitation_id": "invitation_01JEXAMPLE"
}
shopify.request_refund
Look up an order and create a refund request for teammate review.
- Permission:
member - Effect: Adds a pending refund request. It does not refund the order.
- Retry: This creates a pending refund request only. If it may have timed out, retry with the same order details and
idempotency_key, then wait for the request to appear before approving it.
Inputs
order_number and email identify the order. amount and reason are optional. idempotency_key identifies this refund request.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["order_number", "email", "idempotency_key"],
"properties": {
"order_number": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"minLength": 1
},
"amount": {
"type": "string",
"minLength": 1
},
"reason": {
"type": "string",
"minLength": 1
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
Example
{
"order_number": "1001",
"email": "customer@example.com",
"reason": "Wrong size",
"idempotency_key": "refund-order-1001-1"
}
shopify.lookup_order
Look up a Shopify order by its order number and email address.
- Permission:
member - Effect: Reads order status and tracking details. It does not change the order.
- Retry: If the request may have timed out, retry with the same order number, email, and
idempotency_key. This tool only reads Shopify.
Inputs
order_number and email identify the order. idempotency_key identifies this lookup.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["order_number", "email", "idempotency_key"],
"properties": {
"order_number": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"minLength": 1
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
Example
{
"order_number": "1001",
"email": "customer@example.com",
"idempotency_key": "lookup-order-1001-1"
}
inbox.approve_action
Approve a pending request and refund the order through Shopify.
- Permission:
member - Effect: Sends the refund to Shopify. Approving sends money back to the customer.
- Retry: If Shopify confirms a failure, retry with the same
action_idandidempotency_key. If the result is unconfirmed, check the refund status before retrying.
Inputs
action_id is the refund.id from inbox.list_items. idempotency_key identifies this approval.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["action_id", "idempotency_key"],
"properties": {
"action_id": {
"type": "string",
"minLength": 1
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
Example
{
"action_id": "refund_action_01JEXAMPLE",
"idempotency_key": "approve-refund-01"
}
inbox.reject_action
Reject a pending refund request without refunding the order.
- Permission:
member - Effect: Marks the request rejected and does not call Shopify to create a refund.
- Retry: If the request may have timed out, retry with the same
action_idandidempotency_key. This closes the request without sending a refund to Shopify.
Inputs
action_id is the refund.id from inbox.list_items. idempotency_key identifies this decision.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": ["action_id", "idempotency_key"],
"properties": {
"action_id": {
"type": "string",
"minLength": 1
},
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
Example
{
"action_id": "refund_action_01JEXAMPLE",
"idempotency_key": "reject-refund-01"
}