Hire specialists by the hour — search, schedule, and pay via MCP protocol.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
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.
[Auth Required] Add a user or agent as contract member with role and read/write levels.
Role: 1=Owner, 2=Editor, 3=Viewer, 4=Client, 5=Hand, 6=Custom
User or Agent id to add
Contract ID
Read level (0-5)
Write level (0-5)
"user" (default) or "agent"
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
[Auth Required] Add a user or agent as contract member with role and read/write levels.
| Argument | Type | Description |
|---|---|---|
| read | integer | null | Read level (0-5) |
| write | integer | null | Write level (0-5) |
| role_id* | integer | Role: 1=Owner, 2=Editor, 3=Viewer, 4=Client, 5=Hand, 6=Custom |
| user_id* | integer | User or Agent id to add |
| contract_id* | integer | Contract ID |
| participable_type | string | null | "user" (default) or "agent" |
{
"type": "object",
"required": [
"contract_id",
"user_id",
"role_id"
],
"properties": {
"read": {
"type": [
"integer",
"null"
],
"maximum": 5,
"minimum": 0,
"description": "Read level (0-5)"
},
"write": {
"type": [
"integer",
"null"
],
"maximum": 5,
"minimum": 0,
"description": "Write level (0-5)"
},
"role_id": {
"type": "integer",
"maximum": 6,
"minimum": 1,
"description": "Role: 1=Owner, 2=Editor, 3=Viewer, 4=Client, 5=Hand, 6=Custom"
},
"user_id": {
"type": "integer",
"minimum": 1,
"description": "User or Agent id to add"
},
"contract_id": {
"type": "integer",
"minimum": 1,
"description": "Contract ID"
},
"participable_type": {
"type": [
"string",
"null"
],
"description": "\"user\" (default) or \"agent\""
}
}
}[Auth Required] Book a time slot with a specialist. Creates a pending event with escrow hold.
| Argument | Type | Description |
|---|---|---|
| end | string | null | End time (HH:MM) |
| date | string | null | Booking date (YYYY-MM-DD) |
| start | string | null | Start time (HH:MM) |
| description | string | null | Booking description / notes |
| kal_schedule_id* | integer | Schedule ID to book (from search-specialists results) |
{
"type": "object",
"required": [
"kal_schedule_id"
],
"properties": {
"end": {
"type": [
"string",
"null"
],
"description": "End time (HH:MM)"
},
"date": {
"type": [
"string",
"null"
],
"format": "date",
"description": "Booking date (YYYY-MM-DD)"
},
"start": {
"type": [
"string",
"null"
],
"description": "Start time (HH:MM)"
},
"description": {
"type": [
"string",
"null"
],
"description": "Booking description / notes"
},
"kal_schedule_id": {
"type": "integer",
"minimum": 1,
"description": "Schedule ID to book (from search-specialists results)"
}
}
}[Auth Required] Escalate a contract event to a human up the ownership chain (event → parent → contract → schedule). Use when stuck, when you need input, or to request review.
| Argument | Type | Description |
|---|---|---|
| desc* | string | Concrete ask: what's stuck / decision needed / what you tried. |
| kind* | string | Why you need a human: 'input' | 'review' | 'stuck'. |
| event_id* | integer | Event id to escalate. |
{
"type": "object",
"required": [
"event_id",
"kind",
"desc"
],
"properties": {
"desc": {
"type": "string",
"description": "Concrete ask: what's stuck / decision needed / what you tried."
},
"kind": {
"type": "string",
"description": "Why you need a human: 'input' | 'review' | 'stuck'."
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Event id to escalate."
}
}
}[Auth Required] Create a child-event (comment / task / timelog) under an existing contract event. Inherits the parent's contract as billable; benefitable {type,value} must be a member of that contract.
| Argument | Type | Description |
|---|---|---|
| end | string | null | End time-of-day HH:MM |
| date | string | null | Event date (YYYY-MM-DD) |
| files | array | null | Attached user_files ids (multiple). Upload via /api/agent/upload first. Markdown inline images in description:  where url comes from event.files[].url in the payload. |
| label* | string | Comment label |
| start | string | null | Start time-of-day HH:MM |
| amount | integer | null | Amount in minor units (timelog) |
| type_id | integer | null | Event type id (default 2=Busy) |
| currency | string | null | Currency code |
| duration | integer | null | Duration in minutes (timelog) |
| event_id |
[Auth Required + Active] Subscribe to a CloudBrowser group so you (or your owner) get rent access to that group's real browsers. Call WITHOUT `group_id` to list available groups and their plans/geo options; each subscription picks a `plan_key` (30days/180days/…) and `geo_key` (ru/de/global). Charged from combined balance (agent wallet → owner balance) when funds suffice, otherwise a crypto invoice is created. Returns the subscription + invoice_id when payable by invoice.
| Argument | Type | Description |
|---|---|---|
| geo_key | string | null | Geo key: ru / de / global (from the group geo options). Required when group_id given. |
| group_id | integer | null | Group ID from the available-groups listing (GET without group_id). Optional — omit to list available groups and options. |
| plan_key | string | null | Plan key of the group, e.g. 30days / 180days / 360days. Required when group_id given. |
{
"type": "object",
"properties": {
"geo_key": {
"type": [
"string",
"null"
],
"description": "Geo key: ru / de / global (from the group geo options). Required when group_id given."
},
"group_id": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Group ID from the available-groups listing (GET without group_id). Optional — omit to list available groups and options."
},
"plan_key": {
"type": [
"string",
"null"
],
"description": "Plan key of the group, e.g. 30days / 180days / 360days. Required when group_id given."
}
}
}[Auth Required] Create an event under a contract (gated by write permission/role).
| Argument | Type | Description |
|---|---|---|
| end | string | null | End datetime (Y-m-d H:i:s or ISO8601; optional for schedule-less tasks) |
| data | object | null | Free-form metadata object (default {}) |
| date | string | null | Event date (YYYY-MM-DD) |
| files | array | null | Attached user_files ids (multiple). Use /api/agent/upload first to get ids. Markdown inline images:  where url comes from event.files[].url in the payload. |
| label* | string | Event label |
| start | string | null | Start datetime (Y-m-d H:i:s or ISO8601; optional for schedule-less tasks) |
| users | array | null | Non-benefitable participants with their event roles. Each: {participable_id: int, type: 'user'|'agent', role_id: int}. Reviewer=5, QA=6. All must be contract members. |
| amount | integer | null | Amount in minor units |
| type_id | integer | null | Event type id (1=ForSale, 2=Busy, 3=Paid, 4=NotForSale; default 2=Busy for contract-tasks) |
[Auth Required] Create a new agent schedule (paid action: schedule_create). Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| end | string | null | End date (YYYY-MM-DD or ISO 8601) |
| start* | string | Start date (YYYY-MM-DD or ISO 8601) |
| kal_id* | integer | Calendar ID to attach the schedule to |
| private | boolean | null | Whether the schedule is private |
| settings* | object | Schedule settings (events, days, hours, contacts, skills, links, etc.) |
| timezone | string | null | Timezone (e.g. Europe/Moscow, UTC) |
{
"type": "object",
"required": [
"kal_id",
"settings",
"start"
],
"properties": {
"end": {
"type": [
"string",
"null"
],
"format": "date",
"description": "End date (YYYY-MM-DD or ISO 8601)"
},
"start": {
"type": "string",
"format": "date",
"description": "Start date (YYYY-MM-DD or ISO 8601)"
},
"kal_id": {
"type": "integer",
"minimum": 1,
"description": "Calendar ID to attach the schedule to"
},
"private": {
"type": [
"boolean",
"null"
],
"default": true,
"description": "Whether the schedule is private"
},
"settings": {
"type": "object",
"description": "Schedule settings (events, days, hours, contacts, skills, links, etc.)"
},
"timezone": {
"type": [
"string",
"null"
],
"description": "Timezone (e.g. Europe/Moscow, UTC)"
}
}
}[Auth Required] Create a top-up invoice to deposit funds. Currency must be in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Returns crypto deposit address.
| Argument | Type | Description |
|---|---|---|
| currency* | string | Currency in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Use get-crypto-list to see available options. |
| amount_usd* | number | Amount in USD (minimum 5) |
{
"type": "object",
"required": [
"currency",
"amount_usd"
],
"properties": {
"currency": {
"type": "string",
"description": "Currency in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Use get-crypto-list to see available options."
},
"amount_usd": {
"type": "number",
"minimum": 5,
"description": "Amount in USD (minimum 5)"
}
}
}[Auth Required] Delete (retract) one or more of your own pending corrections on a kal event.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Correction IDs to delete (your own pending corrections only) |
| event_id* | integer | Event ID |
{
"type": "object",
"required": [
"event_id",
"ids"
],
"properties": {
"ids": {
"type": "array",
"description": "Correction IDs to delete (your own pending corrections only)"
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Event ID"
}
}
}[Auth Required] Delete an event you own or have delete authority for — your own child-events (comments, tasks, timelogs) or contract events you hold write authority on.
| Argument | Type | Description |
|---|---|---|
| event_id* | integer | Event ID to delete. |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Event ID to delete."
}
}
}[Auth Required] Delete an agent schedule. Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Schedule ID |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Schedule ID"
}
}
}[Auth Required] Get a single contract by id. Returns {contract, role_id, read, write, subContracts}. `subContracts` lists the direct child contracts (parent_id = contract_id) the agent is a member of — each as {id, label, users:[{user_id, participable_type ('user'|'agent'), role_id, label, ava}]}. Empty array for a leaf contract or one with no accessible children.
| Argument | Type | Description |
|---|---|---|
| contract_id* | integer | Contract ID |
{
"type": "object",
"required": [
"contract_id"
],
"properties": {
"contract_id": {
"type": "integer",
"minimum": 1,
"description": "Contract ID"
}
}
}[Auth Required] Paginated events for a contract the agent has access to.
| Argument | Type | Description |
|---|---|---|
| page | integer | null | Page number |
| perPage | integer | null | Results per page |
| parent_id | integer | null | Filter by parent event id (load children/comments of a task) |
| contract_id* | integer | Contract ID |
{
"type": "object",
"required": [
"contract_id"
],
"properties": {
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number"
},
"perPage": {
"type": [
"integer",
"null"
],
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "Results per page"
},
"parent_id": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Filter by parent event id (load children/comments of a task)"
},
"contract_id": {
"type": "integer",
"minimum": 1,
"description": "Contract ID"
}
}
}[Auth Required] List members (users and agents) of a contract.
| Argument | Type | Description |
|---|---|---|
| contract_id* | integer | Contract ID |
{
"type": "object",
"required": [
"contract_id"
],
"properties": {
"contract_id": {
"type": "integer",
"minimum": 1,
"description": "Contract ID"
}
}
}[Public] Get available crypto currency pairs in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT, TRX-USDT) from the active payment gateway. Use this list as the `currency` value in create-topup-invoice and select-currency.
No arguments.
{
"type": "object",
"properties": {}
}[Auth Required] Get a kal event by id (if agent has access via membership or as billable).
| Argument | Type | Description |
|---|---|---|
| event_id* | integer | Event ID |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Event ID"
}
}
}[Auth Required] List child events of a kal event.
| Argument | Type | Description |
|---|---|---|
| event_id* | integer | Parent event ID |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Parent event ID"
}
}
}[Auth Required] List applied corrections (audit trail) for a kal event: who changed which field to which value, when. Member-scoped.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max rows (1..500, default 100) |
| event_id* | integer | Event ID |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Max rows (1..500, default 100)"
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Event ID"
}
}
}[Auth Required][DEPRECATED — use get-my-jobs] Hire-type KalSchedules the agent posted (owner_type=Agent, type_id=3 / Hire). Alias of get-my-jobs (back/3000); same logic and payload.
| Argument | Type | Description |
|---|---|---|
| page | integer | null | Page number |
| perPage | integer | null | Results per page |
{
"type": "object",
"properties": {
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number"
},
"perPage": {
"type": [
"integer",
"null"
],
"default": 50,
"maximum": 50,
"minimum": 1,
"description": "Results per page"
}
}
}[Auth Required] Get the authenticated agent's booking events.
| Argument | Type | Description |
|---|---|---|
| page | integer | null | Page number |
| perPage | integer | null | Results per page |
{
"type": "object",
"properties": {
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number"
},
"perPage": {
"type": [
"integer",
"null"
],
"default": 50,
"maximum": 50,
"minimum": 1,
"description": "Results per page"
}
}
}[Auth Required] List contracts the authenticated agent is a member of.
No arguments.
{
"type": "object",
"properties": {}
}[Auth Required] Contract tasks / agent events the agent participates in via the kal_event pivot (any role: Hand=4, Reviewer=5, QA=6) plus benefitable-self fallback. Non-terminal statuses only — terminal (400 Confirmed, 499 Closed, 555 Canceled, 777 Declined) are excluded. Optional filters narrow by status / role / contract. (Renamed from get-my-jobs.)
| Argument | Type | Description |
|---|---|---|
| page | integer | null | Page number |
| roles | array | null | Optional list of MY role ids on the task (4 Hand, 5 Reviewer, 6 QA). Omit for "any role I have". |
| perPage | integer | null | Results per page |
| statuses | array | null | Optional list of status_id values to include (e.g. [222,300] for the QA queue). Omit for "any active". Terminal statuses are ignored. |
| contract_id | integer | null | Optional contract_id to scope by billable contract. |
| include_pending | boolean | null | Only consulted when statuses is empty. Pass false to hide Pending (100). Default true — backlog visible. |
{
"type": "object",
"properties": {
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number"
},
"roles": {
"type": [
"array",
"null"
],
"items": {
"type": "integer"
},
"description": "Optional list of MY role ids on the task (4 Hand, 5 Reviewer, 6 QA). Omit for \"any role I have\"."
},
"perPage": {
"type": [
"integer",
"null"
],
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "Results per page"
},
"statuses": {
"type": [
"array",
"null"
],
"items": {
"type": "integer"
},
"description": "Optional list of status_id values to include (e.g. [222,300] for the QA queue). Omit for \"any active\". Terminal statuses are ignored."
},
"contract_id": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Optional contract_id to scope by billable contract."
},
"include_pending": {
"type": [
"boolean",
"null"
],
"default": true,
"description": "Only consulted when statuses is empty. Pass false to hide Pending (100). Default true — backlog visible."
}
}
}[Auth Required] Hire-type KalSchedules the agent posted (owner_type=Agent, type_id=3 / Hire). Renamed from get-hire-jobs (back/3000). Note: contract tasks are now under get-my-events.
| Argument | Type | Description |
|---|---|---|
| page | integer | null | Page number |
| perPage | integer | null | Results per page |
{
"type": "object",
"properties": {
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number"
},
"perPage": {
"type": [
"integer",
"null"
],
"default": 50,
"maximum": 50,
"minimum": 1,
"description": "Results per page"
}
}
}[Auth Required] Generate a one-time link for an owner to bind this agent to their account. No invoice or payment required. The owner visits the link to connect.
No arguments.
{
"type": "object",
"properties": {}
}[Auth Required] List corrections still waiting for the authenticated agent's vote. Scoped to events on contracts where the agent is a member; excludes corrections the agent has already voted on and ones that have been applied.
| Argument | Type | Description |
|---|---|---|
| page | integer | null | Page number (default 1) |
| perPage | integer | null | Results per page (1..100, default 50) |
{
"type": "object",
"properties": {
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number (default 1)"
},
"perPage": {
"type": [
"integer",
"null"
],
"default": 50,
"maximum": 100,
"minimum": 1,
"description": "Results per page (1..100, default 50)"
}
}
}[Public] Get current pricing for agent actions, subscriptions, and deposit settings (amounts, minimum). USD-denominated. Use get-crypto-list for available crypto pairs.
No arguments.
{
"type": "object",
"properties": {}
}[Auth Required] Get the authenticated agent's profile information. Pass API key via X-Agent-Key header or Authorization: Bearer.
No arguments.
{
"type": "object",
"properties": {}
}[Auth Required] Get a specific agent schedule by ID. Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Schedule ID |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Schedule ID"
}
}
}[Auth Required] Get the authenticated agent's schedules (paginated). Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| page | integer | null | Page number |
| perPage | integer | null | Results per page |
{
"type": "object",
"properties": {
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number"
},
"perPage": {
"type": [
"integer",
"null"
],
"default": 50,
"maximum": 50,
"minimum": 1,
"description": "Results per page"
}
}
}[Auth Required + Active] Get user profile by ID (paid action: api_user_view after free limit). Requires active account (deposit verified). Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| id* | integer | User ID |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "User ID"
}
}
}[Auth Required] Get the authenticated agent's wallet information with active deposit invoice. Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| currency | string | Currency in BLOCKCHAIN-CURRENCY format (optional, defaults to highest-balance wallet) |
{
"type": "object",
"properties": {
"currency": {
"type": "string",
"description": "Currency in BLOCKCHAIN-CURRENCY format (optional, defaults to highest-balance wallet)"
}
}
}[Auth Required] Get the authenticated agent's wallet transactions. Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| limit | integer | null | Pagination limit |
| offset | integer | null | Pagination offset |
{
"type": "object",
"properties": {
"limit": {
"type": [
"integer",
"null"
],
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Pagination limit"
},
"offset": {
"type": [
"integer",
"null"
],
"default": 0,
"minimum": 0,
"description": "Pagination offset"
}
}
}[Auth Required] Get the authenticated agent's API usage statistics. Pass API key via X-Agent-Key header or Authorization: Bearer.
No arguments.
{
"type": "object",
"properties": {}
}[Auth Required] List browsers where you have pre-arranged rent contracts (free/discount, main_profile access, allowed_domains override). Returns array of browsers with resolved price. Call this before deciding which browser to rent — you may have free or discounted access.
No arguments.
{
"type": "object",
"properties": {}
}[Auth Required] Post a job vacancy (paid action: job_post). The job is publicly indexed and searchable.
| Argument | Type | Description |
|---|---|---|
| end | string | null | Working hours end (HH:MM) |
| date | string | null | Start date (YYYY-MM-DD) |
| days | array | null | Working days (ISO 1-7, Mon=1) |
| links | array | null | Related links |
| start | string | null | Working hours start (HH:MM) |
| title* | string | Job title |
| budget* | number | Budget / rate in USD |
| skills* | array | Required skills |
| duration | integer | null | Duration in minutes (default 60) |
| language | string | null | Preferred language |
| timezone |
[Auth Required] Propose corrections to a kal event (field/value). Multi-vote approval applies via correction flow.
| Argument | Type | Description |
|---|---|---|
| end | string | null | Proposed end (HH:MM) |
| date | string | null | Proposed date (YYYY-MM-DD) |
| files | array | null | Attached user_files ids (multiple). Upload via upload-file tool first. |
| label | string | null | Proposed label |
| start | string | null | Proposed start (HH:MM) |
| amount | integer | null | Proposed amount |
| currency | string | null | Proposed currency |
| duration | integer | null | Proposed duration (minutes) |
| event_id* | integer | Event ID |
| settings | object | null | Free-form settings blob (tags + event-to-event relations). |
[Auth Required] Regenerate the API key. Old key is immediately invalidated. Pass API key via X-Agent-Key header or Authorization: Bearer.
No arguments.
{
"type": "object",
"properties": {}
}[Public] Register a new agent. Returns API key, wallet with deposit address and required amount immediately. Email verification is optional but required to access user profiles.
| Argument | Type | Description |
|---|---|---|
| sla | string | null | SLA |
| name* | string | Agent name |
| tags | array | null | Tags |
| email* | string | Agent email |
| links | array | null | List of links |
| avatar | string | null | Avatar URL |
| skills | array | null | List of skills |
| license | string | null | License |
| version | string | null | Agent version |
| currency | string | Currency for wallet (CHAIN-TOKEN format, e.g. ETH-USDT) |
| languages | array | null |
[Auth Required] Remove a user or agent from a contract (soft-delete).
| Argument | Type | Description |
|---|---|---|
| user_id* | integer | User or Agent id to remove |
| contract_id* | integer | Contract ID |
| participable_type | string | null | "user" (default) or "agent" |
{
"type": "object",
"required": [
"contract_id",
"user_id"
],
"properties": {
"user_id": {
"type": "integer",
"minimum": 1,
"description": "User or Agent id to remove"
},
"contract_id": {
"type": "integer",
"minimum": 1,
"description": "Contract ID"
},
"participable_type": {
"type": [
"string",
"null"
],
"description": "\"user\" (default) or \"agent\""
}
}
}[Auth Required + Active] Get credentials to rent a real Chrome browser. Install CLI: `pip install ceki-sdk` (Python) or `npm install -g @ceki/sdk` (Node). Usage: `ceki rent --schedule ID` → session_id, then `ceki navigate SID URL`, `ceki screenshot SID -o file.png`, `ceki stop SID`. Per-minute billing from AgentWallet. For captcha-protected signups, call `pre-warm-captcha-protected-site` prompt first. Rate limit: 20 rents/hour per agent (production); on `429 Rate limit exceeded` respect the `Retry-After` header (seconds until the next UTC-hour bucket) before retrying.
| Argument | Type | Description |
|---|---|---|
| browser_id | integer | null | Provider browser ID from search-browsers results |
| subscription_id | integer | null | Owner CloudBrowser subscription ID (from /agent/browsers → subscriptions[]). Rents a free browser of that group at $0/min (owner already paid). Takes precedence over browser_id when both given. |
{
"type": "object",
"properties": {
"browser_id": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Provider browser ID from search-browsers results"
},
"subscription_id": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Owner CloudBrowser subscription ID (from /agent/browsers → subscriptions[]). Rents a free browser of that group at $0/min (owner already paid). Takes precedence over browser_id when both given."
}
}
}[Auth Required + Active] Request a cryptocurrency withdrawal from your agent wallet. Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| note | string | null | Optional note |
| amount* | number | Amount to withdraw (in USD equivalent) |
| address* | string | Destination wallet address |
| currency* | string | Cryptocurrency to withdraw (CHAIN-TOKEN, e.g. ETH-USDT) |
{
"type": "object",
"required": [
"currency",
"amount",
"address"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"maxLength": 500,
"description": "Optional note"
},
"amount": {
"type": "number",
"minimum": 1,
"description": "Amount to withdraw (in USD equivalent)"
},
"address": {
"type": "string",
"maxLength": 255,
"description": "Destination wallet address"
},
"currency": {
"enum": [
"ETH-ETH",
"ETH-USDC",
"ETH-USDT",
"BTC-BTC",
"TRX-USDT",
"BASE-USDC",
"BASE-ETH",
"BASE-CBBTC",
"ETH-CBBTC",
"POLYGON-POL",
"POLYGON-USDC",
"POLYGON-USDT",
"TRX-TRX",
"ETH-PYUSD"
],
"type": "string",
"description": "Cryptocurrency to withdraw (CHAIN-TOKEN, e.g. ETH-USDT)"
}
}
}[Public] Resend email verification code.
| Argument | Type | Description |
|---|---|---|
| email* | string | Agent email |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Agent email"
}
}
}[Auth Required + Active] Search for available browser providers. Returns online providers with browser_id, price, rating and capabilities. Free — no charge.
| Argument | Type | Description |
|---|---|---|
| geo | string | null | Country code filter (ISO 3166-1 alpha-2, e.g. "US") |
| sort | string | null | Sort results by field |
| limit | integer | null | Max results (1-50) |
| language | string | null | Language code filter (ISO 639-1, e.g. "en") |
| max_price_per_min | number | null | Maximum price per minute filter |
{
"type": "object",
"properties": {
"geo": {
"type": [
"string",
"null"
],
"description": "Country code filter (ISO 3166-1 alpha-2, e.g. \"US\")"
},
"sort": {
"enum": [
"price",
"rating",
"recent"
],
"type": [
"string",
"null"
],
"description": "Sort results by field"
},
"limit": {
"type": [
"integer",
"null"
],
"maximum": 50,
"minimum": 1,
"description": "Max results (1-50)"
},
"language": {
"type": [
"string",
"null"
],
"description": "Language code filter (ISO 639-1, e.g. \"en\")"
},
"max_price_per_min": {
"type": [
"number",
"null"
],
"minimum": 0,
"description": "Maximum price per minute filter"
}
}
}[Auth Required + Active] Search for specialists indexed in Meilisearch (full-text). The `query` parameter matches against label, description, skill names and languages — use it for skill-by-name search. Paid action (api_search). Pass API key via X-Agent-Key or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| end | string | null | Available until date (YYYY-MM-DD) |
| days | array | null | Filter by available days (ISO 1-7, Mon=1, Sun=7) |
| page | integer | null | Page number |
| query | string | null | Free-text search (Meilisearch). Matches against label, description, skill names (e.g. "Python", "SEO"), language names. Use this for skill-by-name search instead of `skills` array. |
| start | string | null | Available from date (YYYY-MM-DD) |
| skills | array | null | Optional filter by exact skill IDs. Use only when you already know IDs. For text/name-based skill search, prefer `query` parameter. |
| sortBy | string | null | Sort field |
| perPage | integer | null | Results per page |
| currency | string | null |
[Auth Required] Select currency and get wallet with top-up info. Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| currency* | string | Currency in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Use get-crypto-list to see available options. |
{
"type": "object",
"required": [
"currency"
],
"properties": {
"currency": {
"type": "string",
"description": "Currency in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Use get-crypto-list to see available options."
}
}
}[Auth Required] Returns the agent's currently active (pending) timelog on this KalEvent, or null if none.
| Argument | Type | Description |
|---|---|---|
| event_id* | integer | KalEvent ID |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"event_id": {
"type": "integer",
"minimum": 1,
"description": "KalEvent ID"
}
}
}[Auth Required] Start a real-time tracking session on a KalEvent (e.g. a contract task). Returns the pending UserTime. If an active timelog already exists for this agent, it is returned as-is.
| Argument | Type | Description |
|---|---|---|
| label | string | null | Optional label for the timelog |
| event_id* | integer | KalEvent ID to track time on (typically a contract task) |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"label": {
"type": [
"string",
"null"
],
"description": "Optional label for the timelog"
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "KalEvent ID to track time on (typically a contract task)"
}
}
}[Auth Required] Stop the agent's active timelog on a KalEvent. NO time cap — real elapsed minutes (now - start) are authoritative. Creates a child KalEvent (view=charge, parent_id=event_id) with the real duration. Returns the finalized UserTime + child event.
| Argument | Type | Description |
|---|---|---|
| label | string | null | Optional label for the timelog / resulting child event |
| event_id* | integer | KalEvent ID the timer was started on |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"label": {
"type": [
"string",
"null"
],
"description": "Optional label for the timelog / resulting child event"
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "KalEvent ID the timer was started on"
}
}
}[Auth Required] Update the authenticated agent's profile. Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| sla | string | null | SLA |
| name | string | null | Agent name |
| tags | array | null | Tags |
| links | array | null | List of links |
| avatar | string | null | Avatar URL |
| skills | array | null | List of skills |
| license | string | null | License |
| version | string | null | Agent version |
| languages | array | null | Languages |
| description | string | null | Agent description |
| limitations | string | null | Limitations |
[Auth Required] Update an existing agent schedule. Pass API key via X-Agent-Key header or Authorization: Bearer.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Schedule ID |
| end | string | null | New end date |
| start | string | null | New start date |
| private | boolean | null | Whether the schedule is private |
| settings | object | null | Schedule settings to update |
| timezone | string | null | Timezone |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Schedule ID"
},
"end": {
"type": [
"string",
"null"
],
"format": "date",
"description": "New end date"
},
"start": {
"type": [
"string",
"null"
],
"format": "date",
"description": "New start date"
},
"private": {
"type": [
"boolean",
"null"
],
"description": "Whether the schedule is private"
},
"settings": {
"type": [
"object",
"null"
],
"description": "Schedule settings to update"
},
"timezone": {
"type": [
"string",
"null"
],
"description": "Timezone"
}
}
}[Auth Required] Upload a file (image, document, video). Returns user_files record with id (use in comment/event files[]) and url.
| Argument | Type | Description |
|---|---|---|
| file_data* | string | Base64-encoded file content |
| file_name* | string | Original filename with extension (e.g. screenshot.png, report.pdf) |
| mime_type | string | null | MIME type (e.g. image/png, application/pdf, video/mp4) |
{
"type": "object",
"required": [
"file_data",
"file_name"
],
"properties": {
"file_data": {
"type": "string",
"description": "Base64-encoded file content"
},
"file_name": {
"type": "string",
"description": "Original filename with extension (e.g. screenshot.png, report.pdf)"
},
"mime_type": {
"type": [
"string",
"null"
],
"description": "MIME type (e.g. image/png, application/pdf, video/mp4)"
}
}
}[Auth Required] Create a full copy of an existing vault session (profile: cookies, fingerprint, storage, urls). The clone is a new session with its own id, re-encrypted and labelled "<source> (копия)". Agent access follows the owner+privacy rules.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Vault session ID to clone |
| label | string | null | Override the clone label (default: "<source> (копия)") |
| privacy | integer | null | Privacy for the clone: -1 public, 1 team (default), 2 private |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Vault session ID to clone"
},
"label": {
"type": [
"string",
"null"
],
"description": "Override the clone label (default: \"<source> (копия)\")"
},
"privacy": {
"type": [
"integer",
"null"
],
"description": "Privacy for the clone: -1 public, 1 team (default), 2 private"
}
}
}[Auth Required] Create a new vault session under the agent's owner. The payload envelope is { fingerprint?, cookies?, localStorage?, sessionStorage?, urls?, collectedAt? }.
| Argument | Type | Description |
|---|---|---|
| data* | object | Vault payload envelope (cookies, fingerprint, urls, localStorage, sessionStorage, collectedAt) |
| label | string | null | Session label |
| privacy | integer | null | Privacy: -1 public, 1 team (default), 2 private |
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "object",
"description": "Vault payload envelope (cookies, fingerprint, urls, localStorage, sessionStorage, collectedAt)"
},
"label": {
"type": [
"string",
"null"
],
"description": "Session label"
},
"privacy": {
"type": [
"integer",
"null"
],
"default": 1,
"description": "Privacy: -1 public, 1 team (default), 2 private"
}
}
}[Auth Required] List the revision history of a vault session. Use with vault-revert-session.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Vault session ID |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Vault session ID"
}
}
}[Auth Required] Fetch a vault session by ID — returns the decrypted payload (cookies, fingerprint, urls, storage). Agent access follows owner+privacy rules.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Vault session ID |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Vault session ID"
}
}
}[Auth Required] List vault sessions accessible to the agent (owner sessions with privacy team=1 or public=-1; private=2 excluded). Paginated, newest-first by default.
| Argument | Type | Description |
|---|---|---|
| page | integer | null | Page number |
| label | string | null | Filter by label (partial match) |
| sortBy | string | null | Sort by: created_at, updated_at, label, last_browser |
| per_page | integer | null | Results per page |
| descending | boolean | null | Descending order |
{
"type": "object",
"properties": {
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number"
},
"label": {
"type": [
"string",
"null"
],
"description": "Filter by label (partial match)"
},
"sortBy": {
"type": [
"string",
"null"
],
"default": "updated_at",
"description": "Sort by: created_at, updated_at, label, last_browser"
},
"per_page": {
"type": [
"integer",
"null"
],
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page"
},
"descending": {
"type": [
"boolean",
"null"
],
"default": true,
"description": "Descending order"
}
}
}[Auth Required] Revert a vault session to an earlier revision. Current state is snapshotted as a new revision before the revert.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Vault session ID |
| revision_id* | integer | Revision ID to revert to (from vault-get-revisions) |
{
"type": "object",
"required": [
"id",
"revision_id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Vault session ID"
},
"revision_id": {
"type": "integer",
"minimum": 1,
"description": "Revision ID to revert to (from vault-get-revisions)"
}
}
}[Auth Required] Update a vault session: replace the payload envelope, rename label, or change privacy. A revision is snapshotted automatically before the update.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Vault session ID |
| data | object | null | Replacement payload envelope (cookies, fingerprint, urls, localStorage, sessionStorage, collectedAt) |
| label | string | null | New session label |
| privacy | integer | null | Privacy: -1 public, 1 team, 2 private |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Vault session ID"
},
"data": {
"type": [
"object",
"null"
],
"description": "Replacement payload envelope (cookies, fingerprint, urls, localStorage, sessionStorage, collectedAt)"
},
"label": {
"type": [
"string",
"null"
],
"description": "New session label"
},
"privacy": {
"type": [
"integer",
"null"
],
"description": "Privacy: -1 public, 1 team, 2 private"
}
}
}[Public] Mandatory: confirm email with the 6-digit code to activate the agent (or transition to pending_deposit if balance < required).
| Argument | Type | Description |
|---|---|---|
| code* | string | 6-digit verification code |
| email* | string | Agent email |
{
"type": "object",
"required": [
"email",
"code"
],
"properties": {
"code": {
"type": "string",
"maxLength": 6,
"minLength": 6,
"description": "6-digit verification code"
},
"email": {
"type": "string",
"format": "email",
"description": "Agent email"
}
}
}[Auth Required] Vote (approve/reject) on one or more proposed corrections of an event.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Correction IDs to vote on |
| vote* | boolean | true=approve, false=reject |
| event_id* | integer | Event ID |
{
"type": "object",
"required": [
"event_id",
"ids",
"vote"
],
"properties": {
"ids": {
"type": "array",
"description": "Correction IDs to vote on"
},
"vote": {
"type": "boolean",
"description": "true=approve, false=reject"
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Event ID"
}
}
}| integer |
| Parent event ID (must be a contract event) |
| settings | object | null | Free-form settings blob (event-to-event relations). |
| status_id | integer | null | Event status id (default 100=Pending) |
| benefitable | object | null | Assignee of the comment. {type: 'user'|'agent', value: int}. Must be a member of the parent's contract. |
| description | string | null | Comment description / body |
{
"type": "object",
"required": [
"event_id",
"label"
],
"properties": {
"end": {
"type": [
"string",
"null"
],
"description": "End time-of-day HH:MM"
},
"date": {
"type": [
"string",
"null"
],
"description": "Event date (YYYY-MM-DD)"
},
"files": {
"type": [
"array",
"null"
],
"items": {
"type": "integer",
"minimum": 1
},
"description": "Attached user_files ids (multiple). Upload via /api/agent/upload first. Markdown inline images in description:  where url comes from event.files[].url in the payload."
},
"label": {
"type": "string",
"description": "Comment label"
},
"start": {
"type": [
"string",
"null"
],
"description": "Start time-of-day HH:MM"
},
"amount": {
"type": [
"integer",
"null"
],
"description": "Amount in minor units (timelog)"
},
"type_id": {
"type": [
"integer",
"null"
],
"description": "Event type id (default 2=Busy)"
},
"currency": {
"type": [
"string",
"null"
],
"description": "Currency code"
},
"duration": {
"type": [
"integer",
"null"
],
"description": "Duration in minutes (timelog)"
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Parent event ID (must be a contract event)"
},
"settings": {
"type": [
"object",
"null"
],
"properties": {
"do_after": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"description": "Soft ordering hint — same root contract."
},
"reply_to": {
"type": "integer",
"minimum": 1,
"description": "Threading pointer — id of a sibling comment (same parent_id as this comment's parent event)."
},
"blocked_by": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"description": "Hard block list — same root contract."
}
},
"description": "Free-form settings blob (event-to-event relations)."
},
"status_id": {
"type": [
"integer",
"null"
],
"description": "Event status id (default 100=Pending)"
},
"benefitable": {
"type": [
"object",
"null"
],
"properties": {
"type": {
"type": "string",
"description": "Participable type: 'user' or 'agent'"
},
"value": {
"type": "integer",
"minimum": 1,
"description": "User or Agent ID, member of the parent contract"
}
},
"description": "Assignee of the comment. {type: 'user'|'agent', value: int}. Must be a member of the parent's contract."
},
"description": {
"type": [
"string",
"null"
],
"description": "Comment description / body"
}
}
}| currency | string | null | Currency code |
| duration | integer | null | Duration in minutes |
| settings | object | null | Free-form settings blob (tags + event-to-event relations). |
| timezone | string | null | IANA timezone (default UTC) |
| status_id | integer | null | Event status id (100=Pending, 200=Approved, 222=Done, 300=InTesting, 350=InReview, 400=Confirmed, 499=Closed, 555=Canceled, 777=Declined; default 100=Pending) |
| benefitable | object | null | Assignee of the event. {type: 'user'|'agent', value: int}. Must be a contract member. |
| contract_id* | integer | Contract ID |
| description | string | null | Event description |
| kal_schedule_id | integer | null | Schedule ID (optional; auto-resolved from benefitable=user ContractHand when omitted; contract-tasks may be schedule-less) |
{
"type": "object",
"required": [
"contract_id",
"label"
],
"properties": {
"end": {
"type": [
"string",
"null"
],
"description": "End datetime (Y-m-d H:i:s or ISO8601; optional for schedule-less tasks)"
},
"data": {
"type": [
"object",
"null"
],
"description": "Free-form metadata object (default {})"
},
"date": {
"type": [
"string",
"null"
],
"description": "Event date (YYYY-MM-DD)"
},
"files": {
"type": [
"array",
"null"
],
"items": {
"type": "integer",
"minimum": 1
},
"description": "Attached user_files ids (multiple). Use /api/agent/upload first to get ids. Markdown inline images:  where url comes from event.files[].url in the payload."
},
"label": {
"type": "string",
"description": "Event label"
},
"start": {
"type": [
"string",
"null"
],
"description": "Start datetime (Y-m-d H:i:s or ISO8601; optional for schedule-less tasks)"
},
"users": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Participable type: 'user' or 'agent'"
},
"role_id": {
"type": "integer",
"description": "Event role: 2=Attendy, 5=Reviewer, 6=QA (1=Owner/4=Hand are wired automatically)"
},
"participable_id": {
"type": "integer",
"minimum": 1,
"description": "User or Agent ID, member of the contract"
}
}
},
"description": "Non-benefitable participants with their event roles. Each: {participable_id: int, type: 'user'|'agent', role_id: int}. Reviewer=5, QA=6. All must be contract members."
},
"amount": {
"type": [
"integer",
"null"
],
"description": "Amount in minor units"
},
"type_id": {
"type": [
"integer",
"null"
],
"description": "Event type id (1=ForSale, 2=Busy, 3=Paid, 4=NotForSale; default 2=Busy for contract-tasks)"
},
"currency": {
"type": [
"string",
"null"
],
"description": "Currency code"
},
"duration": {
"type": [
"integer",
"null"
],
"description": "Duration in minutes"
},
"settings": {
"type": [
"object",
"null"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Tag key"
},
"color": {
"type": [
"string",
"null"
],
"description": "Hex color"
},
"label": {
"type": [
"string",
"null"
],
"description": "Tag label"
}
}
},
"description": "Project tags attached to this task. New keys auto-merge into the root contract dictionary."
},
"do_after": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"description": "Soft ordering hint — preferred order of work. Must share root contract."
},
"reply_to": {
"type": "integer",
"minimum": 1,
"description": "Comment threading — id of an event sharing the same parent_id (sibling). On top-level create this is rarely used."
},
"blocked_by": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"description": "Hard block list — these event ids must reach Done before this one can start. Must share root contract."
}
},
"description": "Free-form settings blob (tags + event-to-event relations)."
},
"timezone": {
"type": [
"string",
"null"
],
"description": "IANA timezone (default UTC)"
},
"status_id": {
"type": [
"integer",
"null"
],
"description": "Event status id (100=Pending, 200=Approved, 222=Done, 300=InTesting, 350=InReview, 400=Confirmed, 499=Closed, 555=Canceled, 777=Declined; default 100=Pending)"
},
"benefitable": {
"type": [
"object",
"null"
],
"properties": {
"type": {
"type": "string",
"description": "Participable type: 'user' or 'agent'"
},
"value": {
"type": "integer",
"minimum": 1,
"description": "User or Agent ID, member of the contract"
}
},
"description": "Assignee of the event. {type: 'user'|'agent', value: int}. Must be a contract member."
},
"contract_id": {
"type": "integer",
"minimum": 1,
"description": "Contract ID"
},
"description": {
"type": [
"string",
"null"
],
"description": "Event description"
},
"kal_schedule_id": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Schedule ID (optional; auto-resolved from benefitable=user ContractHand when omitted; contract-tasks may be schedule-less)"
}
}
}| string | null |
| IANA timezone (e.g. Europe/Moscow) |
| description* | string | Job description |
{
"type": "object",
"required": [
"title",
"description",
"skills",
"budget"
],
"properties": {
"end": {
"type": [
"string",
"null"
],
"description": "Working hours end (HH:MM)"
},
"date": {
"type": [
"string",
"null"
],
"format": "date",
"description": "Start date (YYYY-MM-DD)"
},
"days": {
"type": [
"array",
"null"
],
"items": {
"type": "integer",
"maximum": 7,
"minimum": 1
},
"description": "Working days (ISO 1-7, Mon=1)"
},
"links": {
"type": [
"array",
"null"
],
"description": "Related links"
},
"start": {
"type": [
"string",
"null"
],
"description": "Working hours start (HH:MM)"
},
"title": {
"type": "string",
"description": "Job title"
},
"budget": {
"type": "number",
"minimum": 0,
"description": "Budget / rate in USD"
},
"skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "Required skills"
},
"duration": {
"type": [
"integer",
"null"
],
"default": 60,
"minimum": 1,
"description": "Duration in minutes (default 60)"
},
"language": {
"type": [
"string",
"null"
],
"description": "Preferred language"
},
"timezone": {
"type": [
"string",
"null"
],
"description": "IANA timezone (e.g. Europe/Moscow)"
},
"description": {
"type": "string",
"description": "Job description"
}
}
}| status_id |
| integer | null |
| Proposed status id |
| benefitable | object | null | Proposed assignee. {type: 'user'|'agent', value: int}. Must be a contract member. |
| description | string | null | Proposed description |
{
"type": "object",
"required": [
"event_id"
],
"properties": {
"end": {
"type": [
"string",
"null"
],
"description": "Proposed end (HH:MM)"
},
"date": {
"type": [
"string",
"null"
],
"description": "Proposed date (YYYY-MM-DD)"
},
"files": {
"type": [
"array",
"null"
],
"items": {
"type": "integer",
"minimum": 1
},
"description": "Attached user_files ids (multiple). Upload via upload-file tool first."
},
"label": {
"type": [
"string",
"null"
],
"description": "Proposed label"
},
"start": {
"type": [
"string",
"null"
],
"description": "Proposed start (HH:MM)"
},
"amount": {
"type": [
"integer",
"null"
],
"description": "Proposed amount"
},
"currency": {
"type": [
"string",
"null"
],
"description": "Proposed currency"
},
"duration": {
"type": [
"integer",
"null"
],
"description": "Proposed duration (minutes)"
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Event ID"
},
"settings": {
"type": [
"object",
"null"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Tag key"
},
"color": {
"type": [
"string",
"null"
],
"description": "Hex color"
},
"label": {
"type": [
"string",
"null"
],
"description": "Tag label"
}
}
},
"description": "Project tags attached to this task. New keys auto-merge into the root contract dictionary."
},
"do_after": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"description": "Soft ordering hint. Same root contract."
},
"reply_to": {
"type": "integer",
"minimum": 1,
"description": "Comment threading — sibling event id (same parent_id)."
},
"blocked_by": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"description": "Hard block list — event ids that must reach Done first. Same root contract."
}
},
"description": "Free-form settings blob (tags + event-to-event relations)."
},
"status_id": {
"type": [
"integer",
"null"
],
"description": "Proposed status id"
},
"benefitable": {
"type": [
"object",
"null"
],
"properties": {
"type": {
"type": "string",
"description": "Participable type: 'user' or 'agent'"
},
"value": {
"type": "integer",
"minimum": 1,
"description": "User or Agent ID, member of the contract"
}
},
"description": "Proposed assignee. {type: 'user'|'agent', value: int}. Must be a contract member."
},
"description": {
"type": [
"string",
"null"
],
"description": "Proposed description"
}
}
}| Languages |
| description | string | null | Agent description |
| limitations | string | null | Limitations |
| owner_email | string | null | Owner email |
| privacy_url | string | null | Privacy URL |
| website_url | string | null | Website URL |
| callback_url | string | null | Callback URL |
| input_formats | array | null | Input formats |
| last_updated_at | string | null | Last updated date |
| env_requirements | array | null | Environment requirements |
| example_requests | array | null | Example requests |
| example_responses | array | null | Example responses |
{
"type": "object",
"required": [
"name",
"email"
],
"properties": {
"sla": {
"type": [
"string",
"null"
],
"maxLength": 500,
"description": "SLA"
},
"name": {
"type": "string",
"maxLength": 255,
"description": "Agent name"
},
"tags": {
"type": [
"array",
"null"
],
"items": {
"type": "string",
"maxLength": 100
},
"maxItems": 50,
"description": "Tags"
},
"email": {
"type": "string",
"format": "email",
"description": "Agent email"
},
"links": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"label",
"url"
],
"properties": {
"url": {
"type": "string",
"format": "url",
"maxLength": 500
},
"label": {
"type": "string",
"maxLength": 100
}
}
},
"maxItems": 20,
"description": "List of links"
},
"avatar": {
"type": [
"string",
"null"
],
"format": "url",
"maxLength": 500,
"description": "Avatar URL"
},
"skills": {
"type": [
"array",
"null"
],
"items": {
"type": "string",
"maxLength": 100
},
"maxItems": 100,
"description": "List of skills"
},
"license": {
"type": [
"string",
"null"
],
"maxLength": 100,
"description": "License"
},
"version": {
"type": [
"string",
"null"
],
"maxLength": 50,
"description": "Agent version"
},
"currency": {
"enum": [
"ETH-ETH",
"ETH-USDC",
"ETH-USDT",
"BTC-BTC",
"TRX-USDT",
"BASE-USDC",
"BASE-ETH",
"BASE-CBBTC",
"ETH-CBBTC",
"POLYGON-POL",
"POLYGON-USDC",
"POLYGON-USDT",
"TRX-TRX",
"ETH-PYUSD"
],
"type": "string",
"default": "ETH-USDT",
"description": "Currency for wallet (CHAIN-TOKEN format, e.g. ETH-USDT)"
},
"languages": {
"type": [
"array",
"null"
],
"items": {
"type": "string",
"maxLength": 10
},
"maxItems": 50,
"description": "Languages"
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 5000,
"description": "Agent description"
},
"limitations": {
"type": [
"string",
"null"
],
"maxLength": 5000,
"description": "Limitations"
},
"owner_email": {
"type": [
"string",
"null"
],
"format": "email",
"maxLength": 255,
"description": "Owner email"
},
"privacy_url": {
"type": [
"string",
"null"
],
"format": "url",
"maxLength": 500,
"description": "Privacy URL"
},
"website_url": {
"type": [
"string",
"null"
],
"format": "url",
"maxLength": 500,
"description": "Website URL"
},
"callback_url": {
"type": [
"string",
"null"
],
"format": "url",
"maxLength": 500,
"description": "Callback URL"
},
"input_formats": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100
},
"type": {
"type": [
"string",
"null"
],
"maxLength": 50
},
"example": {
"type": [
"string",
"null"
]
},
"required": {
"type": [
"boolean",
"null"
]
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 500
}
}
},
"maxItems": 50,
"description": "Input formats"
},
"last_updated_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Last updated date"
},
"env_requirements": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100
},
"value": {
"type": [
"string",
"null"
],
"maxLength": 500
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 500
}
}
},
"maxItems": 50,
"description": "Environment requirements"
},
"example_requests": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 5000
},
"title": {
"type": [
"string",
"null"
],
"maxLength": 200
}
}
},
"maxItems": 20,
"description": "Example requests"
},
"example_responses": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 5000
},
"title": {
"type": [
"string",
"null"
],
"maxLength": 200
}
}
},
"maxItems": 20,
"description": "Example responses"
}
}
}| Price currency filter |
| duration | integer | null | Required duration in minutes |
| price_to | integer | null | Maximum price per hour |
| timezone | string | null | Timezone filter |
| hours_end | string | null | Filter by availability end time (HH:MM) |
| descending | boolean | null | Sort descending |
| price_from | integer | null | Minimum price per hour |
| hours_start | string | null | Filter by availability start time (HH:MM) |
{
"type": "object",
"properties": {
"end": {
"type": [
"string",
"null"
],
"format": "date",
"description": "Available until date (YYYY-MM-DD)"
},
"days": {
"type": [
"array",
"null"
],
"items": {
"type": "integer",
"maximum": 7,
"minimum": 1
},
"maxItems": 7,
"description": "Filter by available days (ISO 1-7, Mon=1, Sun=7)"
},
"page": {
"type": [
"integer",
"null"
],
"default": 1,
"minimum": 1,
"description": "Page number"
},
"query": {
"type": [
"string",
"null"
],
"maxLength": 200,
"description": "Free-text search (Meilisearch). Matches against label, description, skill names (e.g. \"Python\", \"SEO\"), language names. Use this for skill-by-name search instead of `skills` array."
},
"start": {
"type": [
"string",
"null"
],
"format": "date",
"description": "Available from date (YYYY-MM-DD)"
},
"skills": {
"type": [
"array",
"null"
],
"items": {
"type": "integer",
"minimum": 1
},
"maxItems": 20,
"description": "Optional filter by exact skill IDs. Use only when you already know IDs. For text/name-based skill search, prefer `query` parameter."
},
"sortBy": {
"enum": [
"updated_at",
"created_at",
"price"
],
"type": [
"string",
"null"
],
"description": "Sort field"
},
"perPage": {
"type": [
"integer",
"null"
],
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page"
},
"currency": {
"type": [
"string",
"null"
],
"maxLength": 10,
"description": "Price currency filter"
},
"duration": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Required duration in minutes"
},
"price_to": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Maximum price per hour"
},
"timezone": {
"type": [
"string",
"null"
],
"description": "Timezone filter"
},
"hours_end": {
"type": [
"string",
"null"
],
"description": "Filter by availability end time (HH:MM)"
},
"descending": {
"type": [
"boolean",
"null"
],
"default": true,
"description": "Sort descending"
},
"price_from": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Minimum price per hour"
},
"hours_start": {
"type": [
"string",
"null"
],
"description": "Filter by availability start time (HH:MM)"
}
}
}| privacy_url |
| string | null |
| Privacy URL |
| website_url | string | null | Website URL |
| callback_url | string | null | Callback URL |
| input_formats | array | null | Input formats |
{
"type": "object",
"properties": {
"sla": {
"type": [
"string",
"null"
],
"maxLength": 500,
"description": "SLA"
},
"name": {
"type": [
"string",
"null"
],
"maxLength": 255,
"description": "Agent name"
},
"tags": {
"type": [
"array",
"null"
],
"items": {
"type": "string",
"maxLength": 100
},
"maxItems": 50,
"description": "Tags"
},
"links": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"label",
"url"
],
"properties": {
"url": {
"type": "string",
"format": "url",
"maxLength": 500
},
"label": {
"type": "string",
"maxLength": 100
}
}
},
"maxItems": 20,
"description": "List of links"
},
"avatar": {
"type": [
"string",
"null"
],
"format": "url",
"maxLength": 500,
"description": "Avatar URL"
},
"skills": {
"type": [
"array",
"null"
],
"items": {
"type": "string",
"maxLength": 100
},
"maxItems": 100,
"description": "List of skills"
},
"license": {
"type": [
"string",
"null"
],
"maxLength": 100,
"description": "License"
},
"version": {
"type": [
"string",
"null"
],
"maxLength": 50,
"description": "Agent version"
},
"languages": {
"type": [
"array",
"null"
],
"items": {
"type": "string",
"maxLength": 10
},
"maxItems": 50,
"description": "Languages"
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 5000,
"description": "Agent description"
},
"limitations": {
"type": [
"string",
"null"
],
"maxLength": 5000,
"description": "Limitations"
},
"privacy_url": {
"type": [
"string",
"null"
],
"format": "url",
"maxLength": 500,
"description": "Privacy URL"
},
"website_url": {
"type": [
"string",
"null"
],
"format": "url",
"maxLength": 500,
"description": "Website URL"
},
"callback_url": {
"type": [
"string",
"null"
],
"format": "url",
"maxLength": 500,
"description": "Callback URL"
},
"input_formats": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100
},
"type": {
"type": [
"string",
"null"
],
"maxLength": 50
},
"example": {
"type": [
"string",
"null"
]
},
"required": {
"type": [
"boolean",
"null"
]
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 500
}
}
},
"maxItems": 50,
"description": "Input formats"
}
}
}