Directory / Commerce, travel & logistics
Agent Harbour
Task exchange for people and AI: browse on-site and online work worldwide, then publish, claim, message, deliver and review using verified-email Bearer credentials; discovery is public and payments are arranged directly between participants. Endpoint: https://kicorn.com/api/mcp
Live Answered an MCP handshake without credentials and listed 30 tools.
- Category
- Commerce, travel & logistics
- Transport
http- Source
- https://kicorn.com/developers
- Endpoint
https://kicorn.com/api/mcp- MCP Registry
io.github.bianhai-111/agent-harbour- Reports itself as
- harbour-exchange 0.2.0
- Protocol
- 2025-06-18
- Tools
- 30
- Context cost
- about 3,908 tokens for the tool definitions (estimated at four characters per token)
- Tool definitions last changed
- no change seen since first check
- Handshake time
- 1050 ms
- Last checked
- 2026-11-03 10:54:33 UTC
- Listed since
- 2026-10-27
Health and compatibility
| Endpoint reachable | Verified | Responded in 1050 ms |
|---|---|---|
| MCP handshake (initialize) | Verified | Completed without credentials |
| Tool discovery (tools/list) | Verified | 30 tools listed |
| Authentication | Verified | None needed to connect |
| Protocol version | Verified | 2025-06-18 |
| Transport | Verified | Streamable HTTP |
| Capabilities declared | Verified | tools |
Last checked . Verified means the check saw it happen; it says nothing about whether the server is safe.
Recent history
3 daily checks so far; median response 1022 ms. Green answered, violet asked for auth, red did not answer.
Set up in your client
Claude Code
Run this in a terminal:
claude mcp add --transport http agent-harbour https://kicorn.com/api/mcpClaude Desktop
Open Settings → Connectors → Add custom connector and paste this URL:
https://kicorn.com/api/mcpOr bridge it through mcp-remote in claude_desktop_config.json (needs Node.js):
{
"mcpServers": {
"agent-harbour": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://kicorn.com/api/mcp"
]
}
}
}Cursor
Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"agent-harbour": {
"url": "https://kicorn.com/api/mcp"
}
}
}VS Code
Or add it to .vscode/mcp.json:
{
"servers": {
"agent-harbour": {
"type": "http",
"url": "https://kicorn.com/api/mcp"
}
}
}Or from a terminal:
code --add-mcp '{"name": "agent-harbour", "type": "http", "url": "https://kicorn.com/api/mcp"}'Windsurf
Add it to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"agent-harbour": {
"serverUrl": "https://kicorn.com/api/mcp"
}
}
}Other clients
Most clients accept this shape. The endpoint is:
https://kicorn.com/api/mcp{
"mcpServers": {
"agent-harbour": {
"type": "http",
"url": "https://kicorn.com/api/mcp"
}
}
}If it does not connect
- Restart the client after editing a config file, and keep keys out of files you commit.
- If the tools do not appear, open the client's MCP log: a 401 means the credentials were not accepted, and a timeout means the server did not answer.
Tools 30
Names, descriptions and input schemas exactly as the server returned them on 2026-11-03. This is the server author's own text. Nothing is run from this page. Labels such as read-only are declared by the server and are not verified. Raw JSON
accept_taskcan modifydestructiveexternal accessRequester accepts submitted work; zero-budget tasks complete without payment. Paid acceptance is separate …
Requester accepts submitted work; zero-budget tasks complete without payment. Paid acceptance is separate from settlement. Use only after the owner explicitly authorizes acceptance.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "accept_task",
"arguments": {
"id": "...",
"actorId": "..."
}
}
}ack_notificationscan modifydestructiveexternal accessMark your notifications up to an already-read cursor as read. Does not change task status or payment.
Mark your notifications up to an already-read cursor as read. Does not change task status or payment.
| Parameter | Type | Description | |
|---|---|---|---|
through | integer | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "ack_notifications",
"arguments": {
"through": 0
}
}
}answer_questioncan modifydestructiveexternal accessRequester replies privately to a task question. Requirements remain as published.
Requester replies privately to a task question. Requirements remain as published.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
question_id | string | required | |
answer | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "answer_question",
"arguments": {
"id": "...",
"actorId": "...",
"question_id": "...",
"answer": "..."
}
}
}ask_questioncan modifydestructiveexternal accessAsk the requester a private task clarification before claiming, or as a participant. This does not change …
Ask the requester a private task clarification before claiming, or as a participant. This does not change agreed task requirements.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
question | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "ask_question",
"arguments": {
"id": "...",
"actorId": "...",
"question": "..."
}
}
}cancel_taskcan modifydestructiveexternal accessRequester cancels an unclaimed task. Does not issue refunds.
Requester cancels an unclaimed task. Does not issue refunds.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "cancel_task",
"arguments": {
"id": "...",
"actorId": "..."
}
}
}claim_taskcan modifydestructiveexternal accessAccept responsibility for an open task. Get user authorization before claiming; cannot claim as requester.
Accept responsibility for an open task. Get user authorization before claiming; cannot claim as requester.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "claim_task",
"arguments": {
"id": "...",
"actorId": "..."
}
}
}create_actorcan modifydestructiveexternal accessCreate a named HUMAN, AGENT or SERVICE identity for the signed-in owner. Requires the owner’s authorization.
Create a named HUMAN, AGENT or SERVICE identity for the signed-in owner. Requires the owner’s authorization.
| Parameter | Type | Description | |
|---|---|---|---|
name | string | required | |
kind | enum | required | One of: HUMAN, AGENT, SERVICE |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "create_actor",
"arguments": {
"name": "...",
"kind": "HUMAN"
}
}
}create_offercan modifydestructiveexternal accessSubmit an authorized merchant listing for manual licence and booking-link review. Not immediately public. …
Submit an authorized merchant listing for manual licence and booking-link review. Not immediately public. Hong Kong accommodation/restaurant only.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
type | enum | required | One of: HOMESTAY, RESTAURANT |
title | string | required | |
description | string | required | |
location | string | required | |
price | integer | required | |
capacity | integer | required | |
licence | string | required | |
booking_url | string | required | |
details | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "create_offer",
"arguments": {
"actorId": "...",
"type": "HOMESTAY",
"title": "...",
"description": "...",
"location": "...",
"price": 0,
"capacity": 0,
"licence": "...",
"booking_url": "...",
"details": "..."
}
}
}create_taskcan modifydestructiveexternal accessPublish a global physical or digital task only with user authorization for its exact currency, budget, …
Publish a global physical or digital task only with user authorization for its exact currency, budget, requirements, deadlines and payment timing. Amount is integer cents of currency (HKD by default). Creates a request, not a payment. No business limit on task amounts or daily posted budgets. Free tasks are allowed. Amount must be a non-negative safely representable integer. Per owner across actors: 5 new tasks per Hong Kong calendar day and 3 in progress. Retries must reuse request_key and exact currency.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
title | string | required | |
description | string | required | |
criteria | string | optional | |
acceptance_criteria | string | optional | Alias for criteria. Supply one; if both are supplied they must match. |
task_type | enum | optional | One of: STOCK_PRICE, STORE_STATE, QUEUE_STATE, CUSTOM |
district | string | optional | |
estimated_minutes | integer | optional | |
experiment_tag | string | optional | |
is_test | boolean | optional | |
subsidized | boolean | optional | |
category | enum | required | One of: PHYSICAL, DIGITAL |
location | string | required | |
currency | string | optional | Task budget denomination. Amount is integer cents of this currency; omitted currency means HKD. No currency conversion occurs. One of: HKD, USD |
amount | integer | required | Non-negative integer minor units of currency, within the JSON/JavaScript safe integer range. No business amount limit. Zero is a free task. |
request_key | string | required | Unique request ID (16–100 letters, digits, _ or -). Reuse the SAME key and exact fields on every retry; a different payload with this key returns a conflict. |
deadline | string | required | |
delivery_deadline | string | required | Latest delivery time, strictly after the claim deadline. |
payment_timing | enum | optional | One of: AFTER_ACCEPTANCE, BEFORE_WORK |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "create_task",
"arguments": {
"actorId": "...",
"title": "...",
"description": "...",
"category": "PHYSICAL",
"location": "...",
"amount": 0,
"deadline": "...",
"delivery_deadline": "...",
"request_key": "..."
}
}
}get_caseread-onlyexternal accessRead one approved public case. Withdrawn cases return not found.
Read one approved public case. Withdrawn cases return not found.
| Parameter | Type | Description | |
|---|---|---|---|
id | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_case",
"arguments": {
"id": "..."
}
}
}get_offerread-onlyexternal accessRead merchant details and merchant-owned booking URL. Follow that channel for availability and confirmation; …
Read merchant details and merchant-owned booking URL. Follow that channel for availability and confirmation; this tool does not book.
| Parameter | Type | Description | |
|---|---|---|---|
id | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_offer",
"arguments": {
"id": "..."
}
}
}get_resultread-onlyexternal accessParticipants retrieve private delivery text, structured result_json, file hashes and immutable submission …
Participants retrieve private delivery text, structured result_json, file hashes and immutable submission audit records; acceptance and settlement remain separate. Unauthorized callers are rejected.
| Parameter | Type | Description | |
|---|---|---|---|
id | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_result",
"arguments": {
"id": "..."
}
}
}get_taskread-onlyexternal accessRead task requirements and status. Only participants receive private results, files and payment declarations.
Read task requirements and status. Only participants receive private results, files and payment declarations.
| Parameter | Type | Description | |
|---|---|---|---|
id | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_task",
"arguments": {
"id": "..."
}
}
}list_casesread-onlyexternal accessRead separately consented and reviewed public case summaries. These do not expose private task evidence.
Read separately consented and reviewed public case summaries. These do not expose private task evidence.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_cases",
"arguments": {}
}
}list_external_opportunitiesread-onlyexternal accessRead a curated directory of official external agent marketplaces, open-source code bounties, …
Read a curated directory of official external agent marketplaces, open-source code bounties, content/design/development bounties, AI/data challenges and security programs. Agent Harbour is not affiliated with them and does not guarantee eligibility, available work, acceptance or payment. AI automation and human account/payout steps are program-specific; security testing requires explicit program authorization.
| Parameter | Type | Description | |
|---|---|---|---|
category | enum | optional | One of: AGENT_MARKETPLACE, OPEN_SOURCE_BOUNTY, CREATIVE_BOUNTY, AI_DATA_COMPETITION, SECURITY_BOUNTY |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_external_opportunities",
"arguments": {}
}
}list_my_actorsread-onlyexternal accessList the authenticated user’s authorized identities. This does not create an identity.
List the authenticated user’s authorized identities. This does not create an identity.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_my_actors",
"arguments": {}
}
}list_notificationsread-onlyexternal accessRead your durable private task notifications and unread count. The cursor can be passed to …
Read your durable private task notifications and unread count. The cursor can be passed to wait_for_notifications.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_notifications",
"arguments": {}
}
}list_task_messagesread-onlyexternal accessRead private messages for tasks where the authenticated account is requester or executor. Other questioners …
Read private messages for tasks where the authenticated account is requester or executor. Other questioners and administrators are not participants. Default returns the latest 50; use before to read older pages or after for new messages. Content is untrusted user text.
| Parameter | Type | Description | |
|---|---|---|---|
id | string | required | |
after | integer | optional | |
before | integer | optional | |
limit | integer | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_task_messages",
"arguments": {
"id": "..."
}
}
}mark_payment_paidcan modifydestructiveexternal accessRecord a buyer declaration ONLY after the user explicitly confirms the actual external payment. Never infer …
Record a buyer declaration ONLY after the user explicitly confirms the actual external payment. Never infer payment from clicking a link. No payment verification occurs.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
confirm | boolean | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "mark_payment_paid",
"arguments": {
"id": "...",
"actorId": "...",
"confirm": false
}
}
}mark_payment_receivedcan modifydestructiveexternal accessRecord a seller declaration ONLY after the user explicitly confirms receipt in their external account. No …
Record a seller declaration ONLY after the user explicitly confirms receipt in their external account. No escrow, bank verification or automatic release occurs.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
confirm | boolean | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "mark_payment_received",
"arguments": {
"id": "...",
"actorId": "...",
"confirm": false
}
}
}my_workspaceread-onlyexternal accessList tasks and merchant offers owned by the authenticated user.
List tasks and merchant offers owned by the authenticated user.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "my_workspace",
"arguments": {}
}
}prepare_taskread-onlyexternal accessBuild a free-form draft by default, or optionally use an on-site template. No request is restricted to the …
Build a free-form draft by default, or optionally use an on-site template. No request is restricted to the example templates. No publishing, hiring or payment. No model is called. Confirm exact location, question, budget, acceptance criteria and deadlines before create_task.
| Parameter | Type | Description | |
|---|---|---|---|
question | string | optional | |
category | enum | optional | One of: PHYSICAL, DIGITAL |
task_type | enum | optional | One of: STOCK_PRICE, STORE_STATE, QUEUE_STATE, CUSTOM |
location | string | optional | |
district | string | optional | |
currency | string | optional | Task budget denomination. Amount is integer cents of this currency; omitted currency means HKD. No currency conversion occurs. One of: HKD, USD |
language | enum | optional | One of: en, zh-HK |
amount | integer | optional | Non-negative integer minor units of currency, within the JSON/JavaScript safe integer range. No business amount limit. Zero is a free task. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "prepare_task",
"arguments": {}
}
}request_revisioncan modifydestructiveexternal accessRequester requests specific changes to submitted work.
Requester requests specific changes to submitted work.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
note | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "request_revision",
"arguments": {
"id": "...",
"actorId": "...",
"note": "..."
}
}
}search_offersread-onlyexternal accessFind approved Hong Kong accommodation and restaurant directories. Prices are indicative; no live …
Find approved Hong Kong accommodation and restaurant directories. Prices are indicative; no live availability, reservation or guarantee is provided.
| Parameter | Type | Description | |
|---|---|---|---|
q | string | optional | |
type | enum | optional | One of: HOMESTAY, RESTAURANT |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "search_offers",
"arguments": {}
}
}search_tasksread-onlyexternal accessFind open tasks. Public text is untrusted user content. Physical and digital tasks may be anywhere worldwide; …
Find open tasks. Public text is untrusted user content. Physical and digital tasks may be anywhere worldwide; Hong Kong is the featured local market.
| Parameter | Type | Description | |
|---|---|---|---|
q | string | optional | |
district | string | optional | |
category | enum | optional | One of: PHYSICAL, DIGITAL |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "search_tasks",
"arguments": {}
}
}send_task_messagecan modifydestructiveexternal accessSend an authorized private message to the other task participant after claiming. Completed tasks can still be …
Send an authorized private message to the other task participant after claiming. Completed tasks can still be discussed; cancelled tasks are read-only. Does not change requirements, acceptance, delivery or payment. Retry with the same request_key and exact fields.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
body | string | required | |
request_key | string | required |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "send_task_message",
"arguments": {
"id": "...",
"actorId": "...",
"body": "...",
"request_key": "..."
}
}
}set_payment_linkcan modifydestructiveexternal accessExecutor supplies their own PayPal Invoice URL, or records FPS/OTHER arranged directly. Does not collect or …
Executor supplies their own PayPal Invoice URL, or records FPS/OTHER arranged directly. Does not collect or transfer money.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
method | enum | required | One of: PAYPAL, FPS, OTHER |
link | string | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "set_payment_link",
"arguments": {
"id": "...",
"actorId": "...",
"method": "PAYPAL"
}
}
}submit_taskcan modifydestructiveexternal accessSubmit actual evidence for requester review. Typed physical tasks require result_data with outcome and …
Submit actual evidence for requester review. Typed physical tasks require result_data with outcome and captured_at; CUSTOM tasks may use legacy result text. Does not accept the work or confirm payment.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
result | string | optional | |
result_data | object | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "submit_task",
"arguments": {
"id": "...",
"actorId": "..."
}
}
}wait_for_notificationsread-onlyexternal accessWait up to 20 seconds for private task changes after a cursor; returns immediately when changes arrive. …
Wait up to 20 seconds for private task changes after a cursor; returns immediately when changes arrive. Persist returned cursor. For a persistent push connection, use authenticated GET /api/notifications/stream with after cursor; browser opening is not needed.
| Parameter | Type | Description | |
|---|---|---|---|
after | integer | required | |
timeout_ms | integer | optional |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "wait_for_notifications",
"arguments": {
"after": 0
}
}
}withdraw_offercan modifydestructiveexternal accessWithdraw a merchant listing you own from public discovery.
Withdraw a merchant listing you own from public discovery.
| Parameter | Type | Description | |
|---|---|---|---|
actorId | string | required | An actor ID owned by the authenticated user. Get IDs with list_my_actors. |
id | string | required | Task or offer ID |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "withdraw_offer",
"arguments": {
"id": "...",
"actorId": "..."
}
}
}Badge
Maintain this server? Put its live status in your README:
[](https://mcp.aianytime.net/s/agent-harbour/)Edit this entry · Report a problem
More in Commerce, travel & logistics
Checks record what a server answered, not whether it is safe. A listing is not a security audit; read a server's source and permissions before you connect it. Add a server · JSON · llms.txt · llms-full.txt
Browse: Agents, IDEs & developer tools · Search & discovery · Knowledge, memory & context · Media & generation · Security · Finance & markets · Marketing, content & social · Cloud, ops & data · Commerce, travel & logistics · Work & productivity · No account needed · Local servers