ClawHub / OpenClaw
OpenClaw에서 errand-ai 스킬로 현장 작업을 요청하고 결과를 확인해요. 스킬 설치와 Errand 계정·API 키 발급은 별도예요.
errand-ai · ERRANDAI_API_KEY
Errand는 현실 세계의 짧은 작업을 사람에게 맡기고, 위치와 시각이 검증된 사진과 구조화된 답변을 돌려줍니다. 일반 MCP와 REST는 같은 7개 동작을 제공합니다. ChatGPT 플러그인은 이 중 5개 조회 기능만 제공하며, 미션 발주·취소·결제는 할 수 없습니다.
기준 URL: https://errand.be
매장 진열, 홍보물, 대기줄, 메뉴·가격처럼 사진 한 장으로 끝나는 확인이면 가입·결제 없이 신청만 하세요. 운영자가 대신 발주하고 결과를 연락처로 보내드려요. 보통 당일~다음 날이에요.
무료 체험 신청 →같은 Errand 계정에 연결해요. 사용 환경에 따라 연결 방법과 가능한 작업이 달라요.
OpenClaw에서 errand-ai 스킬로 현장 작업을 요청하고 결과를 확인해요. 스킬 설치와 Errand 계정·API 키 발급은 별도예요.
errand-ai · ERRANDAI_API_KEY
MCP 지원 클라이언트에서 커버리지·견적 확인부터 사용자 승인 후 발주, 진행 상황·결과 조회까지 연결해요.
Streamable HTTP · OAuth 2.1 또는 API 키 · 공식 MCP Registry 등록
자체 서비스나 자동화에 직접 통합해요. API 키로 견적·발주·결과 조회를 호출할 수 있어요.
https://errand.be/api/v1
커버리지·견적과 기존 미션의 진행 상황·결과를 조회하는 플러그인이에요. 새 미션 발주·취소·결제는 지원하지 않아요.
새 미션 발주·워커 호출, 미션 취소, 잔액 충전·결제·금액 예치는 할 수 없어요.
견적을 조회하거나 대화에서 요청해도 미션이 자동 생성되거나 워커가 출동하지 않아요.
실제 미션 생성은 ChatGPT 밖의 Errand 웹 또는 일반 MCP·REST에서 별도로 진행해요.
ChatGPT에서 로그인해 플러그인 설치·연결을 진행하세요.
초기 운영 지역은 서울 강남·역삼 중심이에요. 발주 전 실제 워커 가용 여부와 견적을 확인하세요. 충전은 계좌이체만 가능하며, 1회 최소 10,000원부터 입금 확인 후 반영돼요.
지금 서비스되는 곳은 서울 강남 일대뿐입니다. 디스패치 전에 반드시 확인하세요. reachable_workers는 알림을 받게 될 워커 수(앱을 켜 두고 24시간 내 접속, 마지막 위치가 반경 안)이고, online_workers는 지금 이 순간 앱이 열려 있는 수입니다. 판단 기준은 reachable_workers입니다. 0이면 그대로 0이라고 답하고, 그 지역 워커 가입 링크(worker_signup_url)를 함께 돌려줍니다. 사용자에게 "지금은 없지만 근처 분이 여기서 워커로 참여할 수 있다"고 안내하세요.
curl -s "https://errand.be/api/public/coverage?lat=37.4979&lng=127.0276&radius_m=3000"
{"online_workers":0,"reachable_workers":3,"dispatchable":true,"radius_m":3000}REST와 개발자용 MCP 연결은 errand.be에서 이메일 인증 후 발급한 er_live_ API 키를 Authorization 헤더로 보냅니다. OAuth를 지원하는 MCP 클라이언트는 정적 키 없이 https://errand.be/api/mcp에 연결할 수 있고, 서버가 OAuth 2.1 인가 서버를 자동으로 알려줍니다. 어떤 방식이든 계정의 건당 보상, 일일 예산, 허용 작업 유형, 허용 구역 상한이 지출 경계로 적용됩니다.
Authorization: Bearer er_live_... # OAuth-capable MCP clients can connect directly: https://errand.be/api/mcp
원화 선불입니다. 워커는 reward_krw를 전액 받고, 계정에는 reward_krw + 수수료가 청구됩니다. 수수료는 보상의 20%이고 최소 500원입니다. 디스패치 시점에 전액이 예치되고, 실패·만료·취소 중 어느 경우든 수수료까지 포함해 전액 환불됩니다. 수수료는 완료된 미션에서만 발생합니다.
예: 보상 5,000원 → 청구 6,000원. 보상 10,000원 → 청구 12,000원.
디스패치는 되돌리기 전에 돈이 나가는 동작입니다. errand_quote는 아무것도 만들지 않고 상한 검사, 커버리지, 잔액, 수수료를 한 번에 계산해 정확한 총 결제액을 돌려줍니다. 에이전트라면 이 숫자를 사용자에게 그대로 보여주고 동의를 받은 뒤에 디스패치하세요. 수수료를 직접 계산하지 마세요. 요율이 바뀌면 낡은 금액으로 동의를 받게 됩니다.
total_charge_krw가 사용자에게 제시할 금액입니다. can_dispatch는 워커가 도달 가능하고 잔액도 충분할 때만 true이고, false면 note에 이유가 담깁니다. balance_sufficient, balance_krw, coverage도 함께 옵니다.
curl -s -X POST https://errand.be/api/v1/quote \
-H "Authorization: Bearer $ERRAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{"task_type":"check","lat":37.4979,"lng":127.0276,"reward_krw":5000}'
{"task_type":"check","reward_krw":5000,"platform_fee_krw":1000,
"total_charge_krw":6000,"balance_krw":75900,"balance_sufficient":true,
"coverage":{"online_workers":0,"reachable_workers":1,"dispatchable":true},
"can_dispatch":true,
"note":"Quote is ready. Present the exact total_charge_krw to the user before calling errand_dispatch."}MCP 도구 이름과 REST 엔드포인트가 1대1로 대응하고, 인자와 응답이 같습니다.
| MCP 도구 | REST | 동작 |
|---|---|---|
| errand_check_coverage | GET /api/v1/coverage | 반경 안에 알림 가능한 워커가 있는지 확인 |
| errand_list_capabilities | GET /api/v1/capabilities | 잔액, 상한, 허용 작업 유형, 수수료 체계 |
| errand_quote | POST /api/v1/quote | 정확한 총 결제액과 진행 가능 여부. 아무것도 만들지 않음 |
| errand_dispatch | POST /api/v1/dispatches | 미션 생성. 예치가 일어남 |
| errand_get_status | GET /api/v1/dispatches/{id} | 진행 상태와 타임라인 |
| errand_get_result | GET /api/v1/dispatches/{id}/result | 증거, 답변, 판정 |
| errand_cancel | POST /api/v1/dispatches/{id}/cancel | 모집 중일 때만 취소. 전액 환불 |
title, instructions, validation_criteria, report_fields[].label은 워커가 폰에서 읽습니다. 한국어로 작성하세요. 규칙을 어기면 VALIDATION 오류와 함께 어떤 필드가 문제인지 issues에 담겨 돌아옵니다.
| 필드 | 필수 | 규칙 |
|---|---|---|
| task_type | ✓ | check · verify · photograph · queue · pickup |
| title | ✓ | 4–120자. 워커 목록에 보이는 한 줄 |
| instructions | ✓ | 10–2000자. 현장에서 무엇을 어떻게 할지 |
| validation_criteria | ✓ | 10–1000자. 사진이 무엇을 보여야 통과인지. AI가 이 기준으로 판정 |
| lat / lng | ✓ | 미션 지점 좌표 |
| radius_m | ✓ | 100–10000. 알림 반경. 3000이 무난 |
| reward_krw | ✓ | 1000–200000. 키의 건당 상한 이하여야 함 |
| expires_in_minutes | ✓ | 10–1440. 이동 시간을 고려해 120 이상 권장 |
| address_hint | — | 워커에게 보여줄 장소 설명 |
| report_fields | — | 최대 5개. 워커가 현장에서 답할 질문. key / label / type(text·number) / unit / placeholder. 수량이면 unit을 꼭 넣을 것 |
| webhook_url | — | https. 종결 시 mission.* 이벤트 수신 |
curl -s -X POST https://errand.be/api/v1/dispatches \
-H "Authorization: Bearer $ERRAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"task_type": "check",
"title": "강남역 11번 출구 팝업 대기줄 확인",
"instructions": "11번 출구 앞 팝업스토어 입구로 가서 대기줄 전체가 보이도록 사진을 한 장 찍어주세요.",
"validation_criteria": "팝업스토어 간판과 대기줄이 한 장에 보일 것. 줄이 없으면 비어 있는 입구가 보일 것.",
"lat": 37.4979, "lng": 127.0276,
"address_hint": "강남역 11번 출구 앞",
"radius_m": 3000,
"reward_krw": 5000,
"expires_in_minutes": 180,
"report_fields": [
{ "key": "wait_count", "label": "대기 인원", "type": "number", "unit": "명" }
]
}'
{"dispatch_id":"…","status":"open","reward_krw":5000,"fee_krw":1000,
"escrowed_krw":6000,"workers_notified":3,"expires_in_minutes":180}open(모집 중) → accepted(수락, 이동 중) → arrived(GPS로 현장 확인) → submitted(제출, 검증 중) → completed(통과, 워커 지급). 종결 실패는 failed(2회 시도 모두 불합격), expired(마감까지 아무도 완료 못 함), cancelled 셋이고 모두 전액 환불됩니다. 폴링 대신 webhook_url을 주면 mission.completed / mission.failed / mission.cancelled / mission.expired가 전송됩니다.
사진은 앱 카메라로만 찍을 수 있고 갤러리 업로드는 막혀 있습니다. 서버가 촬영 위치와 시각을 먼저 확인하고, 그다음 AI가 validation_criteria에 적힌 기준으로 사진을 판정합니다. 한 미션에 두 번까지 시도할 수 있고, 두 번 모두 불합격이면 미션이 실패로 종결되며 전액 환불됩니다.
워커가 입력한 답변, 증거 사진, 위치·시각 검사값, AI 판정이 함께 돌아옵니다. 사진 URL은 서명된 링크이고 1시간 뒤 만료되니 받는 즉시 내려받거나 보여주세요. 아직 제출 전이면 result가 null이고 note가 이유를 설명합니다.
{
"status": "completed",
"share_url": "https://errand.be/r/…", // read-only page, no login, 30 days
"verdict": { "passed": true, "score": 0.95, "feedback": "…" },
"answers": { "wait_count": 12 },
"evidence": {
"photo_urls": ["https://…signed…"],
"gps": { "lat": 37.4980, "lng": 127.0275, "accuracy_m": 8 },
"distance_from_task_m": 14,
"captured_at": "2026-09-08T14:12:33+09:00",
"checks": { "distance_m": 14, "capture_age_min": 1.2,
"exif_gps_present": true, "failures": [] }
}
}모든 오류는 { "error": CODE, "message": "…" } 형태입니다.
| HTTP | 코드 | 뜻 |
|---|---|---|
| 401 | UNAUTHORIZED | 키가 없거나 폐기됨 |
| 402 | INSUFFICIENT_BALANCE | 잔액 부족. 대시보드에서 충전 |
| 403 | CAP_MAX_REWARD · CAP_DAILY_BUDGET · CAP_TASK_TYPE · CAP_AREA | 키의 상한을 넘음. 재시도하지 말고 보상을 낮추거나 소유자에게 상한 상향을 요청 |
| 400 | VALIDATION · BAD_JSON | 필드 규칙 위반. issues에 어떤 필드인지 있음 |
| 404 | NOT_FOUND | 없는 dispatch id이거나 다른 계정 소유 |
| 409 | INVALID_TRANSITION · TASK_TAKEN · WORKER_BUSY | 지금 상태에서 불가능한 동작. 수락된 뒤에는 취소할 수 없음 |
| 422 | UNSAFE_TASK · PRIVACY_VIOLATING_TASK | 내용 심사에서 거절됨. 워커를 위험에 빠뜨리거나 사람·신분증·화면을 촬영하게 하는 미션. 문구를 고쳐 다시 보낼 것 |
| 429 | RATE_LIMITED | 요청이 잦음. 잠시 후 재시도 |
공개 커버리지 엔드포인트는 IP당 분당 60회입니다. 초과하면 429가 돌아옵니다. 인증이 필요한 엔드포인트는 키의 일일 예산이 실질적인 한도입니다.
무상태 Streamable HTTP입니다. 공식 MCP 레지스트리에 be.errand/errand로 등록돼 있습니다. OAuth-capable 클라이언트는 URL만 연결하면 OAuth 2.1을 자동 discovery하고, CLI/개발 환경에서는 er_live_ API 키를 계속 사용할 수 있습니다.
# OAuth-capable clients: connect to the URL directly https://errand.be/api/mcp # Developer/CLI fallback with an API key claude mcp add --transport http errand https://errand.be/api/mcp \ --header "Authorization: Bearer $ERRAND_API_KEY"
상한을 올리고 싶거나, 커버리지 밖 지역이 필요하거나, 첫 미션을 어떻게 쓸지 모르겠다면 support@errand.be로 보내주세요. 초기 서비스라 사람이 직접 답합니다.