Remote IT from a person. Agents read the price, open a task, and pay by card or USDC.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer token. Required for booking, checkout, cancel, and crypto submit. Read-only tools answer without it.
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.
Reserve a previously selected time only when customer_confirmed is true and the session is waiting for that confirmation. Requires the agent bearer token. Does not mark the visit paid. Calling this with customer_confirmed false is rejected.
True only after the customer explicitly agrees to the price and time.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Reserve a previously selected time only when customer_confirmed is true and the session is waiting for that confirmation. Requires the agent bearer token. Does not mark the visit paid. Calling this with customer_confirmed false is rejected.
| Argument | Type | Description |
|---|---|---|
| name | string | null | |
| string | null | ||
| session_id* | string | |
| idempotency_key | string | null | |
| customer_confirmed* | boolean | True only after the customer explicitly agrees to the price and time. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id",
"customer_confirmed"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"default": null
},
"email": {
"type": [
"string",
"null"
],
"default": null
},
"session_id": {
"type": "string"
},
"idempotency_key": {
"type": [
"string",
"null"
],
"default": null
},
"customer_confirmed": {
"type": "boolean",
"description": "True only after the customer explicitly agrees to the price and time."
}
}
}Cancel an unpaid reservation. Paid visits are not cancelled here. Requires the agent bearer token.
| Argument | Type | Description |
|---|---|---|
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
}Add the customer's next message. If they name one of the offered times, the price is shown and nothing is reserved until they confirm.
| Argument | Type | Description |
|---|---|---|
| message* | string | |
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id",
"message"
],
"properties": {
"message": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
}Return the Stripe checkout URL for a reserved unpaid visit. Requires the agent bearer token. Never marks the invoice paid.
| Argument | Type | Description |
|---|---|---|
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
}Open the support ticket for this diagnosis and store the technician summary. Requires the agent bearer token. Does not book a time.
| Argument | Type | Description |
|---|---|---|
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
}Payment and reservation status from the database. Paid is true only after Stripe has recorded payment.
| Argument | Type | Description |
|---|---|---|
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
}How an agent pays USDC for a human request. Lists MetaMask, Coinbase Wallet, Trust Wallet, Phantom, and Rainbow, plus the receiving address on Base, Ethereum, and Solana. Read-only. AI agents pay crypto for human requests.
No arguments.
{
"type": "object",
"properties": {}
}List Honesty Support categories, session lengths, and the rule that a human is booked only after the customer confirms. AI agents pay crypto for human requests. Read-only. Call this first.
No arguments.
{
"type": "object",
"properties": {}
}Authoritative one-time remote IT price. Do not invent a price. Read-only.
| Argument | Type | Description |
|---|---|---|
| minutes | integer | null | 30, 60, 90, or 120. Other values snap to the nearest allowed length. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"minutes": {
"type": [
"integer",
"null"
],
"format": "int32",
"default": null,
"description": "30, 60, 90, or 120. Other values snap to the nearest allowed length."
}
}
}Read the structured triage and ticket id for a session the caller already has.
| Argument | Type | Description |
|---|---|---|
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
}Open technician times in UTC. Times already reserved are omitted. Read-only.
No arguments.
{
"type": "object",
"properties": {}
}Same as request_human_help. Prepares the technician summary and offers times.
| Argument | Type | Description |
|---|---|---|
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
}Open an urgent ticket and return the phone number. Does not claim a technician was pinged and does not charge. Requires the agent bearer token.
| Argument | Type | Description |
|---|---|---|
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
}Customer asked for a person. Returns open times. Does not reserve one.
| Argument | Type | Description |
|---|---|---|
| session_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
}Submit one support task from the customer's words and email. Returns a task id and a crypto pay URL. AI agents pay crypto for human requests. Does not book a time, charge a card, or assign a technician.
| Argument | Type | Description |
|---|---|---|
| name | string | null | Customer name, when they have given it. |
| email* | string | Where a technician should follow up. |
| message* | string | The customer's description of the problem. |
| idempotency_key | string | null | Caller-supplied key so a retry returns the same task. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message",
"email"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"default": null,
"description": "Customer name, when they have given it."
},
"email": {
"type": "string",
"description": "Where a technician should follow up."
},
"message": {
"type": "string",
"description": "The customer's description of the problem."
},
"idempotency_key": {
"type": [
"string",
"null"
],
"default": null,
"description": "Caller-supplied key so a retry returns the same task."
}
}
}Same as triage_issue. Opens a diagnosis session and does not book or charge.
| Argument | Type | Description |
|---|---|---|
| name | string | null | Customer name, when they have given it. |
| string | null | Customer email, when they have given it. | |
| message* | string | The customer's own description of the problem. |
| idempotency_key | string | null | Caller-supplied key so a retry does not open a second diagnosis. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"default": null,
"description": "Customer name, when they have given it."
},
"email": {
"type": [
"string",
"null"
],
"default": null,
"description": "Customer email, when they have given it."
},
"message": {
"type": "string",
"description": "The customer's own description of the problem."
},
"idempotency_key": {
"type": [
"string",
"null"
],
"default": null,
"description": "Caller-supplied key so a retry does not open a second diagnosis."
}
}
}Confirm a USDC transfer that pays for a human task. The transaction must already be on Base, Ethereum, or Solana. Does not accept card data. AI agents pay crypto for human requests.
| Argument | Type | Description |
|---|---|---|
| chain* | string | base, ethereum, or solana. |
| wallet | string | metamask, coinbase, trust, phantom, or rainbow. |
| minutes | integer | null | |
| task_id* | string | |
| tx_hash* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task_id",
"chain",
"tx_hash"
],
"properties": {
"chain": {
"type": "string",
"description": "base, ethereum, or solana."
},
"wallet": {
"type": "string",
"default": "",
"description": "metamask, coinbase, trust, phantom, or rainbow."
},
"minutes": {
"type": [
"integer",
"null"
],
"format": "int32",
"default": null
},
"task_id": {
"type": "string"
},
"tx_hash": {
"type": "string"
}
}
}Start a diagnosis from the customer's words. Returns session_id and structured triage. Does not book or charge.
| Argument | Type | Description |
|---|---|---|
| name | string | null | Customer name, when they have given it. |
| string | null | Customer email, when they have given it. | |
| message* | string | The customer's own description of the problem. |
| idempotency_key | string | null | Caller-supplied key so a retry does not open a second diagnosis. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"default": null,
"description": "Customer name, when they have given it."
},
"email": {
"type": [
"string",
"null"
],
"default": null,
"description": "Customer email, when they have given it."
},
"message": {
"type": "string",
"description": "The customer's own description of the problem."
},
"idempotency_key": {
"type": [
"string",
"null"
],
"default": null,
"description": "Caller-supplied key so a retry does not open a second diagnosis."
}
}
}