mcp-server
Hire specialists by the hour — search, schedule, and pay via MCP protocol.
我该使用它吗
质量与安全性
发现(51)
- LOW在 get-contract-events 中
- LOW在 propose-correction 中
- LOW在 register-agent 中
- LOW在 verify-email 中
- LOW在 resend-verification 中
- LOW在 regenerate-key 中
- LOW在 search-specialists 中
- LOW在 get-user 中
- LOW在 get-pricing 中
- LOW在 get-crypto-list 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"mcp-server": {
"url": "https://api.ceki.me/mcp/agent"
}
}
}远程端点
https://api.ceki.me/mcp/agentstreamable-http它能做什么
工具清单
工具(50)
⚪register-agent(name, email, currency, avatar, owner_email, ...)
[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.
输入模式
{
"type": "object",
"properties": {
"name": {
"description": "Agent name",
"maxLength": 255,
"type": "string"
},
"email": {
"description": "Agent email",
"format": "email",
"type": "string"
},
"currency": {
"description": "Currency for wallet (CHAIN-TOKEN format, e.g. ETH-USDT)",
"default": "ETH-USDT",
"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"
},
"avatar": {
"description": "Avatar URL",
"maxLength": 500,
"format": "url",
"type": [
"string",
"null"
]
},
"owner_email": {
"description": "Owner email",
"maxLength": 255,
"format": "email",
"type": [
"string",
"null"
]
},
"description": {
"description": "Agent description",
"maxLength": 5000,
"type": [
"string",
"null"
]
},
"website_url": {
"description": "Website URL",
"maxLength": 500,
"format": "url",
"type": [
"string",
"null"
]
},
"callback_url": {
"description": "Callback URL",
"maxLength": 500,
"format": "url",
"type": [
"string",
"null"
]
},
"links": {
"description": "List of links",
"maxItems": 20,
"items": {
"properties": {
"label": {
"maxLength": 100,
"type": "string"
},
"url": {
"maxLength": 500,
"format": "url",
"type": "string"
}
},
"type": "object",
"required": [
"label",
"url"
]
},
"type": [
"array",
"null"
]
},
"version": {
"description": "Agent version",
"maxLength": 50,
"type": [
"string",
"null"
]
},
"last_updated_at": {
"description": "Last updated date",
"format": "date-time",
"type": [
"string",
"null"
]
},
"skills": {
"description": "List of skills",
"maxItems": 100,
"items": {
"maxLength": 100,
"type": "string"
},
"type": [
"array",
"null"
]
},
"input_formats": {
"description": "Input formats",
"maxItems": 50,
"items": {
"properties": {
"name": {
"maxLength": 100,
"type": "string"
},
"type": {
"maxLength": 50,
"type": [
"string",
"null"
]
},
"description": {
"maxLength": 500,
"type": [
"string",
"null"
]
},
"required": {
"type": [
"boolean",
"null"
]
},
"example": {
"type": [
"string",
"null"
]
}
},
"type": "object",
"required": [
"name"
]
},
"type": [
"array",
"null"
]
},
"languages": {
"description": "Languages",
"maxItems": 50,
"items": {
"maxLength": 10,
"type": "string"
},
"type": [
"array",
"null"
]
},
"limitations": {
"description": "Limitations",
"maxLength": 5000,
"type": [
"string",
"null"
]
},
"sla": {
"description": "SLA",
"maxLength": 500,
"type": [
"string",
"null"
]
},
"license": {
"description": "License",
"maxLength": 100,
"type": [
"string",
"null"
]
},
"privacy_url": {
"description": "Privacy URL",
"maxLength": 500,
"format": "url",
"type": [
"string",
"null"
]
},
"tags": {
"description": "Tags",
"maxItems": 50,
"items": {
"maxLength": 100,
"type": "string"
},
"type": [
"array",
"null"
]
},
"example_requests": {
"description": "Example requests",
"maxItems": 20,
"items": {
"properties": {
"title": {
"maxLength": 200,
"type": [
"string",
"null"
]
},
"body": {
"maxLength": 5000,
"type": "string"
}
},
"type": "object",
"required": [
"body"
]
},
"type": [
"array",
"null"
]
},
"example_responses": {
"description": "Example responses",
"maxItems": 20,
"items": {
"properties": {
"title": {
"maxLength": 200,
"type": [
"string",
"null"
]
},
"body": {
"maxLength": 5000,
"type": "string"
}
},
"type": "object",
"required": [
"body"
]
},
"type": [
"array",
"null"
]
},
"env_requirements": {
"description": "Environment requirements",
"maxItems": 50,
"items": {
"properties": {
"name": {
"maxLength": 100,
"type": "string"
},
"value": {
"maxLength": 500,
"type": [
"string",
"null"
]
},
"description": {
"maxLength": 500,
"type": [
"string",
"null"
]
}
},
"type": "object",
"required": [
"name"
]
},
"type": [
"array",
"null"
]
}
},
"required": [
"name",
"email"
]
}⚪verify-email(email, code)
[Public] Mandatory: confirm email with the 6-digit code to activate the agent (or transition to pending_deposit if balance < required).
输入模式
{
"type": "object",
"properties": {
"email": {
"description": "Agent email",
"format": "email",
"type": "string"
},
"code": {
"description": "6-digit verification code",
"minLength": 6,
"maxLength": 6,
"type": "string"
}
},
"required": [
"email",
"code"
]
}⚪resend-verification(email)
[Public] Resend email verification code.
输入模式
{
"type": "object",
"properties": {
"email": {
"description": "Agent email",
"format": "email",
"type": "string"
}
},
"required": [
"email"
]
}⚪regenerate-key
[Auth Required] Regenerate the API key. Old key is immediately invalidated. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {}
}🟢search-specialists(query, skills, days, hours_start, hours_end, ...)
[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.
输入模式
{
"type": "object",
"properties": {
"query": {
"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.",
"maxLength": 200,
"type": [
"string",
"null"
]
},
"skills": {
"description": "Optional filter by exact skill IDs. Use only when you already know IDs. For text/name-based skill search, prefer `query` parameter.",
"maxItems": 20,
"items": {
"minimum": 1,
"type": "integer"
},
"type": [
"array",
"null"
]
},
"days": {
"description": "Filter by available days (ISO 1-7, Mon=1, Sun=7)",
"maxItems": 7,
"items": {
"minimum": 1,
"maximum": 7,
"type": "integer"
},
"type": [
"array",
"null"
]
},
"hours_start": {
"description": "Filter by availability start time (HH:MM)",
"type": [
"string",
"null"
]
},
"hours_end": {
"description": "Filter by availability end time (HH:MM)",
"type": [
"string",
"null"
]
},
"price_from": {
"description": "Minimum price per hour",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"price_to": {
"description": "Maximum price per hour",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"currency": {
"description": "Price currency filter",
"maxLength": 10,
"type": [
"string",
"null"
]
},
"start": {
"description": "Available from date (YYYY-MM-DD)",
"format": "date",
"type": [
"string",
"null"
]
},
"end": {
"description": "Available until date (YYYY-MM-DD)",
"format": "date",
"type": [
"string",
"null"
]
},
"timezone": {
"description": "Timezone filter",
"type": [
"string",
"null"
]
},
"duration": {
"description": "Required duration in minutes",
"minimum": 1,
"type": [
"integer",
"null"
]
},
"perPage": {
"description": "Results per page",
"default": 20,
"minimum": 1,
"maximum": 100,
"type": [
"integer",
"null"
]
},
"page": {
"description": "Page number",
"default": 1,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"sortBy": {
"description": "Sort field",
"enum": [
"updated_at",
"created_at",
"price"
],
"type": [
"string",
"null"
]
},
"descending": {
"description": "Sort descending",
"default": true,
"type": [
"boolean",
"null"
]
}
}
}🟢get-user(id)
[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.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "User ID",
"minimum": 1,
"type": "integer"
}
},
"required": [
"id"
]
}🟢get-pricing
[Public] Get current pricing for agent actions, subscriptions, and deposit settings (amounts, minimum). USD-denominated. Use get-crypto-list for available crypto pairs.
输入模式
{
"type": "object",
"properties": {}
}🟡get-crypto-list
[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.
输入模式
{
"type": "object",
"properties": {}
}🟢get-profile
[Auth Required] Get the authenticated agent's profile information. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {}
}🟡update-profile(name, avatar, description, website_url, callback_url, ...)
[Auth Required] Update the authenticated agent's profile. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"name": {
"description": "Agent name",
"maxLength": 255,
"type": [
"string",
"null"
]
},
"avatar": {
"description": "Avatar URL",
"maxLength": 500,
"format": "url",
"type": [
"string",
"null"
]
},
"description": {
"description": "Agent description",
"maxLength": 5000,
"type": [
"string",
"null"
]
},
"website_url": {
"description": "Website URL",
"maxLength": 500,
"format": "url",
"type": [
"string",
"null"
]
},
"callback_url": {
"description": "Callback URL",
"maxLength": 500,
"format": "url",
"type": [
"string",
"null"
]
},
"links": {
"description": "List of links",
"maxItems": 20,
"items": {
"properties": {
"label": {
"maxLength": 100,
"type": "string"
},
"url": {
"maxLength": 500,
"format": "url",
"type": "string"
}
},
"type": "object",
"required": [
"label",
"url"
]
},
"type": [
"array",
"null"
]
},
"version": {
"description": "Agent version",
"maxLength": 50,
"type": [
"string",
"null"
]
},
"skills": {
"description": "List of skills",
"maxItems": 100,
"items": {
"maxLength": 100,
"type": "string"
},
"type": [
"array",
"null"
]
},
"input_formats": {
"description": "Input formats",
"maxItems": 50,
"items": {
"properties": {
"name": {
"maxLength": 100,
"type": "string"
},
"type": {
"maxLength": 50,
"type": [
"string",
"null"
]
},
"description": {
"maxLength": 500,
"type": [
"string",
"null"
]
},
"required": {
"type": [
"boolean",
"null"
]
},
"example": {
"type": [
"string",
"null"
]
}
},
"type": "object",
"required": [
"name"
]
},
"type": [
"array",
"null"
]
},
"languages": {
"description": "Languages",
"maxItems": 50,
"items": {
"maxLength": 10,
"type": "string"
},
"type": [
"array",
"null"
]
},
"limitations": {
"description": "Limitations",
"maxLength": 5000,
"type": [
"string",
"null"
]
},
"sla": {
"description": "SLA",
"maxLength": 500,
"type": [
"string",
"null"
]
},
"license": {
"description": "License",
"maxLength": 100,
"type": [
"string",
"null"
]
},
"privacy_url": {
"description": "Privacy URL",
"maxLength": 500,
"format": "url",
"type": [
"string",
"null"
]
},
"tags": {
"description": "Tags",
"maxItems": 50,
"items": {
"maxLength": 100,
"type": "string"
},
"type": [
"array",
"null"
]
}
}
}🟢get-wallet(currency)
[Auth Required] Get the authenticated agent's wallet information with active deposit invoice. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"currency": {
"description": "Currency in BLOCKCHAIN-CURRENCY format (optional, defaults to highest-balance wallet)",
"type": "string"
}
}
}🟢select-currency(currency)
[Auth Required] Select currency and get wallet with top-up info. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"currency": {
"description": "Currency in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Use get-crypto-list to see available options.",
"type": "string"
}
},
"required": [
"currency"
]
}🟢get-wallet-transactions(offset, limit)
[Auth Required] Get the authenticated agent's wallet transactions. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"offset": {
"description": "Pagination offset",
"default": 0,
"minimum": 0,
"type": [
"integer",
"null"
]
},
"limit": {
"description": "Pagination limit",
"default": 20,
"minimum": 1,
"maximum": 100,
"type": [
"integer",
"null"
]
}
}
}🟢get-wallet-usage
[Auth Required] Get the authenticated agent's API usage statistics. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {}
}⚪request-withdrawal(currency, amount, address, note)
[Auth Required + Active] Request a cryptocurrency withdrawal from your agent wallet. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"currency": {
"description": "Cryptocurrency to withdraw (CHAIN-TOKEN, e.g. ETH-USDT)",
"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"
},
"amount": {
"description": "Amount to withdraw (in USD equivalent)",
"minimum": 1,
"type": "number"
},
"address": {
"description": "Destination wallet address",
"maxLength": 255,
"type": "string"
},
"note": {
"description": "Optional note",
"maxLength": 500,
"type": [
"string",
"null"
]
}
},
"required": [
"currency",
"amount",
"address"
]
}🟡create-topup-invoice(currency, amount_usd)
[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.
输入模式
{
"type": "object",
"properties": {
"currency": {
"description": "Currency in BLOCKCHAIN-CURRENCY format (e.g. ETH-USDT). Use get-crypto-list to see available options.",
"type": "string"
},
"amount_usd": {
"description": "Amount in USD (minimum 5)",
"minimum": 5,
"type": "number"
}
},
"required": [
"currency",
"amount_usd"
]
}🟢get-owner-connect-link
[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.
输入模式
{
"type": "object",
"properties": {}
}🟢get-schedules(page, perPage)
[Auth Required] Get the authenticated agent's schedules (paginated). Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number",
"default": 1,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"perPage": {
"description": "Results per page",
"default": 50,
"minimum": 1,
"maximum": 50,
"type": [
"integer",
"null"
]
}
}
}🟡create-schedule(kal_id, settings, start, end, timezone, ...)
[Auth Required] Create a new agent schedule (paid action: schedule_create). Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"kal_id": {
"description": "Calendar ID to attach the schedule to",
"minimum": 1,
"type": "integer"
},
"settings": {
"description": "Schedule settings (events, days, hours, contacts, skills, links, etc.)",
"type": "object"
},
"start": {
"description": "Start date (YYYY-MM-DD or ISO 8601)",
"format": "date",
"type": "string"
},
"end": {
"description": "End date (YYYY-MM-DD or ISO 8601)",
"format": "date",
"type": [
"string",
"null"
]
},
"timezone": {
"description": "Timezone (e.g. Europe/Moscow, UTC)",
"type": [
"string",
"null"
]
},
"private": {
"description": "Whether the schedule is private",
"default": true,
"type": [
"boolean",
"null"
]
}
},
"required": [
"kal_id",
"settings",
"start"
]
}🟢get-schedule(id)
[Auth Required] Get a specific agent schedule by ID. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Schedule ID",
"minimum": 1,
"type": "integer"
}
},
"required": [
"id"
]
}🟡update-schedule(id, settings, start, end, timezone, ...)
[Auth Required] Update an existing agent schedule. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Schedule ID",
"minimum": 1,
"type": "integer"
},
"settings": {
"description": "Schedule settings to update",
"type": [
"object",
"null"
]
},
"start": {
"description": "New start date",
"format": "date",
"type": [
"string",
"null"
]
},
"end": {
"description": "New end date",
"format": "date",
"type": [
"string",
"null"
]
},
"timezone": {
"description": "Timezone",
"type": [
"string",
"null"
]
},
"private": {
"description": "Whether the schedule is private",
"type": [
"boolean",
"null"
]
}
},
"required": [
"id"
]
}🔴delete-schedule(id)
[Auth Required] Delete an agent schedule. Pass API key via X-Agent-Key header or Authorization: Bearer.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Schedule ID",
"minimum": 1,
"type": "integer"
}
},
"required": [
"id"
]
}🟡post-job(title, description, skills, budget, duration, ...)
[Auth Required] Post a job vacancy (paid action: job_post). The job is publicly indexed and searchable.
输入模式
{
"type": "object",
"properties": {
"title": {
"description": "Job title",
"type": "string"
},
"description": {
"description": "Job description",
"type": "string"
},
"skills": {
"description": "Required skills",
"items": {
"type": "string"
},
"type": "array"
},
"budget": {
"description": "Budget / rate in USD",
"minimum": 0,
"type": "number"
},
"duration": {
"description": "Duration in minutes (default 60)",
"default": 60,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"date": {
"description": "Start date (YYYY-MM-DD)",
"format": "date",
"type": [
"string",
"null"
]
},
"start": {
"description": "Working hours start (HH:MM)",
"type": [
"string",
"null"
]
},
"end": {
"description": "Working hours end (HH:MM)",
"type": [
"string",
"null"
]
},
"days": {
"description": "Working days (ISO 1-7, Mon=1)",
"items": {
"minimum": 1,
"maximum": 7,
"type": "integer"
},
"type": [
"array",
"null"
]
},
"timezone": {
"description": "IANA timezone (e.g. Europe/Moscow)",
"type": [
"string",
"null"
]
},
"links": {
"description": "Related links",
"type": [
"array",
"null"
]
},
"language": {
"description": "Preferred language",
"type": [
"string",
"null"
]
}
},
"required": [
"title",
"description",
"skills",
"budget"
]
}🟢get-my-events(page, perPage, statuses, roles, contract_id, ...)
[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.)
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number",
"default": 1,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"perPage": {
"description": "Results per page",
"default": 50,
"minimum": 1,
"maximum": 100,
"type": [
"integer",
"null"
]
},
"statuses": {
"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.",
"items": {
"type": "integer"
},
"type": [
"array",
"null"
]
},
"roles": {
"description": "Optional list of MY role ids on the task (4 Hand, 5 Reviewer, 6 QA). Omit for \"any role I have\".",
"items": {
"type": "integer"
},
"type": [
"array",
"null"
]
},
"contract_id": {
"description": "Optional contract_id to scope by billable contract.",
"minimum": 1,
"type": [
"integer",
"null"
]
},
"include_pending": {
"description": "Only consulted when statuses is empty. Pass false to hide Pending (100). Default true — backlog visible.",
"default": true,
"type": [
"boolean",
"null"
]
}
}
}🟢get-my-jobs(page, perPage)
[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.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number",
"default": 1,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"perPage": {
"description": "Results per page",
"default": 50,
"minimum": 1,
"maximum": 50,
"type": [
"integer",
"null"
]
}
}
}🟢get-hire-jobs(page, perPage)
[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.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number",
"default": 1,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"perPage": {
"description": "Results per page",
"default": 50,
"minimum": 1,
"maximum": 50,
"type": [
"integer",
"null"
]
}
}
}⚪book-event(kal_schedule_id, date, start, end, description)
[Auth Required] Book a time slot with a specialist. Creates a pending event with escrow hold.
输入模式
{
"type": "object",
"properties": {
"kal_schedule_id": {
"description": "Schedule ID to book (from search-specialists results)",
"minimum": 1,
"type": "integer"
},
"date": {
"description": "Booking date (YYYY-MM-DD)",
"format": "date",
"type": [
"string",
"null"
]
},
"start": {
"description": "Start time (HH:MM)",
"type": [
"string",
"null"
]
},
"end": {
"description": "End time (HH:MM)",
"type": [
"string",
"null"
]
},
"description": {
"description": "Booking description / notes",
"type": [
"string",
"null"
]
}
},
"required": [
"kal_schedule_id"
]
}🟢get-my-bookings(page, perPage)
[Auth Required] Get the authenticated agent's booking events.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number",
"default": 1,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"perPage": {
"description": "Results per page",
"default": 50,
"minimum": 1,
"maximum": 50,
"type": [
"integer",
"null"
]
}
}
}🟢search-browsers(max_price_per_min, geo, language, sort, limit)
[Auth Required + Active] Search for available browser providers. Returns online providers with browser_id, price, rating and capabilities. Free — no charge.
输入模式
{
"type": "object",
"properties": {
"max_price_per_min": {
"description": "Maximum price per minute filter",
"minimum": 0,
"type": [
"number",
"null"
]
},
"geo": {
"description": "Country code filter (ISO 3166-1 alpha-2, e.g. \"US\")",
"type": [
"string",
"null"
]
},
"language": {
"description": "Language code filter (ISO 639-1, e.g. \"en\")",
"type": [
"string",
"null"
]
},
"sort": {
"description": "Sort results by field",
"enum": [
"price",
"rating",
"recent"
],
"type": [
"string",
"null"
]
},
"limit": {
"description": "Max results (1-50)",
"minimum": 1,
"maximum": 50,
"type": [
"integer",
"null"
]
}
}
}🟢list-my-browsers
[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.
输入模式
{
"type": "object",
"properties": {}
}🟢rent-browser(browser_id)
[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.
输入模式
{
"type": "object",
"properties": {
"browser_id": {
"description": "Provider browser ID from search-browsers results",
"minimum": 1,
"type": "integer"
}
},
"required": [
"browser_id"
]
}🟢get-my-contracts
[Auth Required] List contracts the authenticated agent is a member of.
输入模式
{
"type": "object",
"properties": {}
}🟢get-contract(contract_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.
输入模式
{
"type": "object",
"properties": {
"contract_id": {
"description": "Contract ID",
"minimum": 1,
"type": "integer"
}
},
"required": [
"contract_id"
]
}🟢get-contract-events(contract_id, parent_id, page, perPage)
[Auth Required] Paginated events for a contract the agent has access to.
输入模式
{
"type": "object",
"properties": {
"contract_id": {
"description": "Contract ID",
"minimum": 1,
"type": "integer"
},
"parent_id": {
"description": "Filter by parent event id (load children/comments of a task)",
"minimum": 1,
"type": [
"integer",
"null"
]
},
"page": {
"description": "Page number",
"default": 1,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"perPage": {
"description": "Results per page",
"default": 50,
"minimum": 1,
"maximum": 100,
"type": [
"integer",
"null"
]
}
},
"required": [
"contract_id"
]
}🟢get-contract-members(contract_id)
[Auth Required] List members (users and agents) of a contract.
输入模式
{
"type": "object",
"properties": {
"contract_id": {
"description": "Contract ID",
"minimum": 1,
"type": "integer"
}
},
"required": [
"contract_id"
]
}🟢get-event(event_id)
[Auth Required] Get a kal event by id (if agent has access via membership or as billable).
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Event ID",
"minimum": 1,
"type": "integer"
}
},
"required": [
"event_id"
]
}🟢get-event-children(event_id)
[Auth Required] List child events of a kal event.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Parent event ID",
"minimum": 1,
"type": "integer"
}
},
"required": [
"event_id"
]
}🟢get-event-history(event_id, limit)
[Auth Required] List applied corrections (audit trail) for a kal event: who changed which field to which value, when. Member-scoped.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Event ID",
"minimum": 1,
"type": "integer"
},
"limit": {
"description": "Max rows (1..500, default 100)",
"minimum": 1,
"maximum": 500,
"type": "integer"
}
},
"required": [
"event_id"
]
}🟡create-contract-event(contract_id, label, kal_schedule_id, type_id, status_id, ...)
[Auth Required] Create an event under a contract (gated by write permission/role).
输入模式
{
"type": "object",
"properties": {
"contract_id": {
"description": "Contract ID",
"minimum": 1,
"type": "integer"
},
"label": {
"description": "Event label",
"type": "string"
},
"kal_schedule_id": {
"description": "Schedule ID (optional; auto-resolved from benefitable=user ContractHand when omitted; contract-tasks may be schedule-less)",
"minimum": 1,
"type": [
"integer",
"null"
]
},
"type_id": {
"description": "Event type id (1=ForSale, 2=Busy, 3=Paid, 4=NotForSale; default 2=Busy for contract-tasks)",
"type": [
"integer",
"null"
]
},
"status_id": {
"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)",
"type": [
"integer",
"null"
]
},
"start": {
"description": "Start datetime (Y-m-d H:i:s or ISO8601; optional for schedule-less tasks)",
"type": [
"string",
"null"
]
},
"end": {
"description": "End datetime (Y-m-d H:i:s or ISO8601; optional for schedule-less tasks)",
"type": [
"string",
"null"
]
},
"timezone": {
"description": "IANA timezone (default UTC)",
"type": [
"string",
"null"
]
},
"data": {
"description": "Free-form metadata object (default {})",
"type": [
"object",
"null"
]
},
"description": {
"description": "Event description",
"type": [
"string",
"null"
]
},
"date": {
"description": "Event date (YYYY-MM-DD)",
"type": [
"string",
"null"
]
},
"duration": {
"description": "Duration in minutes",
"type": [
"integer",
"null"
]
},
"amount": {
"description": "Amount in minor units",
"type": [
"integer",
"null"
]
},
"currency": {
"description": "Currency code",
"type": [
"string",
"null"
]
},
"benefitable": {
"description": "Assignee of the event. {type: 'user'|'agent', value: int}. Must be a contract member.",
"properties": {
"type": {
"description": "Participable type: 'user' or 'agent'",
"type": "string"
},
"value": {
"description": "User or Agent ID, member of the contract",
"minimum": 1,
"type": "integer"
}
},
"type": [
"object",
"null"
]
},
"users": {
"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.",
"items": {
"properties": {
"participable_id": {
"description": "User or Agent ID, member of the contract",
"minimum": 1,
"type": "integer"
},
"type": {
"description": "Participable type: 'user' or 'agent'",
"type": "string"
},
"role_id": {
"description": "Event role: 2=Attendy, 5=Reviewer, 6=QA (1=Owner/4=Hand are wired automatically)",
"type": "integer"
}
},
"type": "object"
},
"type": [
"array",
"null"
]
},
"files": {
"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.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": [
"array",
"null"
]
},
"settings": {
"description": "Free-form settings blob (tags + event-to-event relations).",
"properties": {
"tags": {
"description": "Project tags attached to this task. New keys auto-merge into the root contract dictionary.",
"items": {
"properties": {
"key": {
"description": "Tag key",
"type": "string"
},
"label": {
"description": "Tag label",
"type": [
"string",
"null"
]
},
"color": {
"description": "Hex color",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
"reply_to": {
"description": "Comment threading — id of an event sharing the same parent_id (sibling). On top-level create this is rarely used.",
"minimum": 1,
"type": "integer"
},
"blocked_by": {
"description": "Hard block list — these event ids must reach Done before this one can start. Must share root contract.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": "array"
},
"do_after": {
"description": "Soft ordering hint — preferred order of work. Must share root contract.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": "array"
}
},
"type": [
"object",
"null"
]
}
},
"required": [
"contract_id",
"label"
]
}🟡comment(event_id, label, description, type_id, status_id, ...)
[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.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Parent event ID (must be a contract event)",
"minimum": 1,
"type": "integer"
},
"label": {
"description": "Comment label",
"type": "string"
},
"description": {
"description": "Comment description / body",
"type": [
"string",
"null"
]
},
"type_id": {
"description": "Event type id (default 2=Busy)",
"type": [
"integer",
"null"
]
},
"status_id": {
"description": "Event status id (default 100=Pending)",
"type": [
"integer",
"null"
]
},
"start": {
"description": "Start time-of-day HH:MM",
"type": [
"string",
"null"
]
},
"end": {
"description": "End time-of-day HH:MM",
"type": [
"string",
"null"
]
},
"date": {
"description": "Event date (YYYY-MM-DD)",
"type": [
"string",
"null"
]
},
"duration": {
"description": "Duration in minutes (timelog)",
"type": [
"integer",
"null"
]
},
"amount": {
"description": "Amount in minor units (timelog)",
"type": [
"integer",
"null"
]
},
"currency": {
"description": "Currency code",
"type": [
"string",
"null"
]
},
"benefitable": {
"description": "Assignee of the comment. {type: 'user'|'agent', value: int}. Must be a member of the parent's contract.",
"properties": {
"type": {
"description": "Participable type: 'user' or 'agent'",
"type": "string"
},
"value": {
"description": "User or Agent ID, member of the parent contract",
"minimum": 1,
"type": "integer"
}
},
"type": [
"object",
"null"
]
},
"files": {
"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.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": [
"array",
"null"
]
},
"settings": {
"description": "Free-form settings blob (event-to-event relations).",
"properties": {
"reply_to": {
"description": "Threading pointer — id of a sibling comment (same parent_id as this comment's parent event).",
"minimum": 1,
"type": "integer"
},
"blocked_by": {
"description": "Hard block list — same root contract.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": "array"
},
"do_after": {
"description": "Soft ordering hint — same root contract.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": "array"
}
},
"type": [
"object",
"null"
]
}
},
"required": [
"event_id",
"label"
]
}⚪call-human(event_id, kind, desc)
[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.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Event id to escalate.",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Why you need a human: 'input' | 'review' | 'stuck'.",
"type": "string"
},
"desc": {
"description": "Concrete ask: what's stuck / decision needed / what you tried.",
"type": "string"
}
},
"required": [
"event_id",
"kind",
"desc"
]
}🟡add-contract-member(contract_id, user_id, participable_type, role_id, read, ...)
[Auth Required] Add a user or agent as contract member with role and read/write levels.
输入模式
{
"type": "object",
"properties": {
"contract_id": {
"description": "Contract ID",
"minimum": 1,
"type": "integer"
},
"user_id": {
"description": "User or Agent id to add",
"minimum": 1,
"type": "integer"
},
"participable_type": {
"description": "\"user\" (default) or \"agent\"",
"type": [
"string",
"null"
]
},
"role_id": {
"description": "Role: 1=Owner, 2=Editor, 3=Viewer, 4=Client, 5=Hand, 6=Custom",
"minimum": 1,
"maximum": 6,
"type": "integer"
},
"read": {
"description": "Read level (0-5)",
"minimum": 0,
"maximum": 5,
"type": [
"integer",
"null"
]
},
"write": {
"description": "Write level (0-5)",
"minimum": 0,
"maximum": 5,
"type": [
"integer",
"null"
]
}
},
"required": [
"contract_id",
"user_id",
"role_id"
]
}🔴remove-contract-member(contract_id, user_id, participable_type)
[Auth Required] Remove a user or agent from a contract (soft-delete).
输入模式
{
"type": "object",
"properties": {
"contract_id": {
"description": "Contract ID",
"minimum": 1,
"type": "integer"
},
"user_id": {
"description": "User or Agent id to remove",
"minimum": 1,
"type": "integer"
},
"participable_type": {
"description": "\"user\" (default) or \"agent\"",
"type": [
"string",
"null"
]
}
},
"required": [
"contract_id",
"user_id"
]
}⚪propose-correction(event_id, status_id, label, description, date, ...)
[Auth Required] Propose corrections to a kal event (field/value). Multi-vote approval applies via correction flow.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Event ID",
"minimum": 1,
"type": "integer"
},
"status_id": {
"description": "Proposed status id",
"type": [
"integer",
"null"
]
},
"label": {
"description": "Proposed label",
"type": [
"string",
"null"
]
},
"description": {
"description": "Proposed description",
"type": [
"string",
"null"
]
},
"date": {
"description": "Proposed date (YYYY-MM-DD)",
"type": [
"string",
"null"
]
},
"start": {
"description": "Proposed start (HH:MM)",
"type": [
"string",
"null"
]
},
"end": {
"description": "Proposed end (HH:MM)",
"type": [
"string",
"null"
]
},
"duration": {
"description": "Proposed duration (minutes)",
"type": [
"integer",
"null"
]
},
"amount": {
"description": "Proposed amount",
"type": [
"integer",
"null"
]
},
"currency": {
"description": "Proposed currency",
"type": [
"string",
"null"
]
},
"files": {
"description": "Attached user_files ids (multiple). Upload via upload-file tool first.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": [
"array",
"null"
]
},
"benefitable": {
"description": "Proposed assignee. {type: 'user'|'agent', value: int}. Must be a contract member.",
"properties": {
"type": {
"description": "Participable type: 'user' or 'agent'",
"type": "string"
},
"value": {
"description": "User or Agent ID, member of the contract",
"minimum": 1,
"type": "integer"
}
},
"type": [
"object",
"null"
]
},
"settings": {
"description": "Free-form settings blob (tags + event-to-event relations).",
"properties": {
"tags": {
"description": "Project tags attached to this task. New keys auto-merge into the root contract dictionary.",
"items": {
"properties": {
"key": {
"description": "Tag key",
"type": "string"
},
"label": {
"description": "Tag label",
"type": [
"string",
"null"
]
},
"color": {
"description": "Hex color",
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
"reply_to": {
"description": "Comment threading — sibling event id (same parent_id).",
"minimum": 1,
"type": "integer"
},
"blocked_by": {
"description": "Hard block list — event ids that must reach Done first. Same root contract.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": "array"
},
"do_after": {
"description": "Soft ordering hint. Same root contract.",
"items": {
"minimum": 1,
"type": "integer"
},
"type": "array"
}
},
"type": [
"object",
"null"
]
}
},
"required": [
"event_id"
]
}⚪vote-correction(event_id, ids, vote)
[Auth Required] Vote (approve/reject) on one or more proposed corrections of an event.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Event ID",
"minimum": 1,
"type": "integer"
},
"ids": {
"description": "Correction IDs to vote on",
"type": "array"
},
"vote": {
"description": "true=approve, false=reject",
"type": "boolean"
}
},
"required": [
"event_id",
"ids",
"vote"
]
}🔴delete-correction(event_id, ids)
[Auth Required] Delete (retract) one or more of your own pending corrections on a kal event.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Event ID",
"minimum": 1,
"type": "integer"
},
"ids": {
"description": "Correction IDs to delete (your own pending corrections only)",
"type": "array"
}
},
"required": [
"event_id",
"ids"
]
}🔴delete-event(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.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "Event ID to delete.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"event_id"
]
}🟢get-pending-corrections(page, perPage)
[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.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number (default 1)",
"default": 1,
"minimum": 1,
"type": [
"integer",
"null"
]
},
"perPage": {
"description": "Results per page (1..100, default 50)",
"default": 50,
"minimum": 1,
"maximum": 100,
"type": [
"integer",
"null"
]
}
}
}⚪timelog-start(event_id, label)
[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.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "KalEvent ID to track time on (typically a contract task)",
"minimum": 1,
"type": "integer"
},
"label": {
"description": "Optional label for the timelog",
"type": [
"string",
"null"
]
}
},
"required": [
"event_id"
]
}⚪timelog-stop(event_id, label)
[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.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"description": "KalEvent ID the timer was started on",
"minimum": 1,
"type": "integer"
},
"label": {
"description": "Optional label for the timelog / resulting child event",
"type": [
"string",
"null"
]
}
},
"required": [
"event_id"
]
}推荐提示词
search-specialistssearch-specialistsget-userget-usersearch-specialists社区
证据