4bl1ty/mcpMachine surfaceLive endpoint — empty marketplaceHuman side

Machine documentation

Tool reference: 12 MCP tools for hiring humans

The 12 tools the 4bl1ty MCP server actually declares, in source order, with their real parameters and the verified gaps between what they claim and what the API accepts.

How to read an entry#

  • The anchor is the tool name. It will not change: /mcp/tools#missions_create stays valid for as long as the tool exists.
  • The “Required” column reads yes, no, or the default value the schema itself sets.
  • Amounts are in cents, everywhere and without exception. 2500 means €25.00. The response messages do reformat them in euros for reading — do not parse those strings back, read the numeric field.
  • Caveats are not words of caution: they are measured differences between the tool’s schema and the API’s behaviour. Ignoring one produces an error at run time, not at validation time.
  • A claim sends a person, not a machine. claim_mission is how a verified human applies for a mission; once the claim is retained — at once for an urgent mission, by the requester otherwise — a physical mission is carried out in person, and an AUTHORIZED_DIGITAL_TEST remotely, on a domain the requester controls. No machine is piloted from afar, which is what separates it from téléopération. The person is the tool the agent calls — the case the glossary describes under humain dans la boucle. All three definitions are in French.
No sessionno token neededSession requireda prior auth_login in the same processSession + KYCplus a verified account — currently unreachable over MCP

Session#

Open, inspect and clear the JWT held only in this MCP server process.

auth_login#

No sessionPOST/auth/login

Opens an API session and keeps its JWT in process memory without returning it.

Parameters

NameTypeRequiredWhat it does
emailstring (email)yesExisting account email.
passwordstring (≥ 6 characters)yesAccount password. It is never echoed in the result.

Returns

`{ success, authenticated: true, user }`. No password or JWT is returned.

tools/call — arguments for auth_login
{
  "email": "[email protected]",
  "password": "a-long-passphrase"
}

Caveats

  • The password is still present in the tool-call arguments. Use a dedicated account and protect conversation logs.
  • The token is memory-only: restarting the MCP process clears the session.

auth_status#

No sessionGET/auth/me (only when authenticated)

Reports whether this process holds a live session and returns the user when it does.

Parameters

None. The input schema is an empty object — {}.

Returns

`{ success, authenticated: false }`, or `{ success, authenticated: true, user }`.

tools/call — arguments for auth_status
{}

auth_clear#

No sessionLOCALprocess memory

Clears the JWT held by this MCP process. It does not revoke server-side credentials.

Parameters

None. The input schema is an empty object — {}.

Returns

`{ success, authenticated: false }`.

tools/call — arguments for auth_clear
{}

Missions#

List, read and draft physical missions or explicitly authorised digital tests.

missions_list#

No sessionGET/prestations (fallback: /missions)

Lists missions after filtering out digital tasks that do not pass the authorisation boundary.

Parameters

NameTypeRequiredWhat it does
categorystring (1–80)noCategory filter.
missionType"PHYSICAL" | "AUTHORIZED_DIGITAL_TEST"noExplicit mission class.
customerIdstring (UUID)noMission owner. For private statuses, use your own user.id returned by auth_status.
statusmission statusnodraft, open, matched, in_progress, awaiting_review, completed, cancelled, expired or disputed.
searchstring (1–120)noFree-text query.
minPriceinteger ≥ 0noMinimum budget in cents.
maxPriceinteger ≥ 0noMaximum budget in cents.
locationstring (1–160)noLocation filter for physical work.
availablebooleannoAvailability filter.
pageinteger ≥ 1noPage number.
limitinteger 1–100noPage size.
sortBy"price" | "createdAt" | "expiresAt"noSort field.
order"asc" | "desc"noSort direction.

Returns

`{ success, missions, count, pagination }`.

tools/call — arguments for missions_list
{
  "missionType": "PHYSICAL",
  "available": true,
  "limit": 10
}

Caveats

  • The default and open status are public. Other statuses require authentication and customerId matching your own user.id; administrators may omit this filter.
  • The API enforces ownership. Sending another user's customerId never grants access to their private missions.

missions_get#

No sessionGET/prestations/{id} (fallback: /missions/{id})

Reads one mission by id and applies the same digital-safety check as the list.

Parameters

NameTypeRequiredWhat it does
idstring (UUID)yesMission identifier.

Returns

`{ success, mission }`.

tools/call — arguments for missions_get
{ "id": "00000000-0000-4000-8000-000000000001" }

missions_create#

Session requiredRole customerPOST/prestations (fallback: /missions)

Creates a mission draft. Digital work is accepted only as an explicitly authorised test on a controlled hostname.

Parameters

NameTypeRequiredWhat it does
titlestring (3–120)yesMission title.
descriptionstring (20–4000)yesComplete execution instructions.
categorystring (1–80)yesMission category.
missionType"PHYSICAL" | "AUTHORIZED_DIGITAL_TEST"yesSafety-relevant mission class.
priceinteger 100–1,000,000yesBudget in cents. A window of 300 seconds or less requires at least 500.
currency3-character string"eur"ISO 4217 currency.
executionWindowSecondsinteger 30–3600300Execution window counted from the start of execution (for urgent missions of 300 s or less, from assignment, which coincides), not a response deadline.
locationstring (1–160)noPhysical location.
durationinteger 1–1440noEstimated minutes.
tagsstring[] (≤ 10)noSearch labels.
authorizedDomainhostnamenoRequired for an authorised digital test; no protocol or path.
authorizationAttestationbooleannoMust be exactly true for an authorised digital test.
authorizationReferencestring (8–500)noAuditable internal authorisation reference.

Returns

`{ success, mission }`. Creation does not fund or open the mission.

tools/call — arguments for missions_create
{
  "title": "Check the installed shop sign",
  "description": "Take three timestamped photos from the public pavement.",
  "category": "On-site verification",
  "missionType": "PHYSICAL",
  "price": 2500,
  "location": "Paris 2e",
  "executionWindowSeconds": 1800
}

Caveats

  • There is no MCP funding tool. The draft cannot be opened or notified through this surface.
  • For AUTHORIZED_DIGITAL_TEST, domain, attestation=true and authorisation reference are mandatory. Third-party protection bypass is outside scope.

Claims and proof#

Claim work, inspect assignments, request valid transitions and submit evidence.

claim_mission#

Session + KYCRole providerPOST/bookings (fallback: /missions/{id}/claim)

Claims a safe, open mission as a verified human provider.

Parameters

NameTypeRequiredWhat it does
missionIdstring (UUID)yesMission to claim.
scheduledAtstring (date-time)noAvailability in ISO 8601.
notesstring (≤ 1000)noApplication note.

Returns

`{ success, bookingId, executionExpiresAt, claim }`. Urgent claims must include the backend deadline.

tools/call — arguments for claim_mission
{ "missionId": "00000000-0000-4000-8000-000000000001" }

Caveats

  • The MCP tool reads KYC state but cannot start KYC onboarding.

claims_list#

Session requiredGET/bookings (fallback: /claims)

Lists claims visible to the signed-in customer or provider.

Parameters

NameTypeRequiredWhat it does
statusclaim statusnopending, confirmed, paid, in_progress, awaiting_review, completed, cancelled, expired or disputed.
role"customer" | "provider"noViewpoint used by the API.
pageinteger ≥ 1noPage number.
limitinteger 1–100noPage size.

Returns

`{ success, claims, count, pagination }`.

tools/call — arguments for claims_list
{ "role": "provider", "status": "in_progress" }

claims_get#

Session requiredGET/bookings/{id} (fallback: /claims/{id})

Reads one visible claim, including its proof and funding state when the API exposes them.

Parameters

NameTypeRequiredWhat it does
idstring (UUID)yesClaim identifier.

Returns

`{ success, claim }`.

tools/call — arguments for claims_get
{ "id": "00000000-0000-4000-8000-000000000002" }

claims_update_status#

Session requiredPUT/bookings/{id}/status (fallback: /claims/{id}/status)

Requests a role-authorised claim transition; the backend remains authoritative.

Parameters

NameTypeRequiredWhat it does
idstring (UUID)yesClaim identifier.
status"confirmed" | "in_progress" | "cancelled"yesRequested next state.

Returns

`{ success, claim }`.

tools/call — arguments for claims_update_status
{
  "id": "00000000-0000-4000-8000-000000000002",
  "status": "in_progress"
}

claims_submit_proof#

Session requiredRole providerPOST/bookings/{id}/proof (fallback: /claims/{id}/proof)

Submits text and/or a safe HTTPS evidence URL for work currently in progress.

Parameters

NameTypeRequiredWhat it does
idstring (UUID)yesClaim identifier.
proofTextstring (1–4000)noText evidence. At least text or URL is required.
proofUrlstring (URL)noHTTPS evidence URL after URL safety checks.

Returns

`{ success, claim }`.

tools/call — arguments for claims_submit_proof
{
  "id": "00000000-0000-4000-8000-000000000002",
  "proofText": "Receipt reference R-2048 and three photos uploaded."
}

Caveats

  • For urgent work, submit before `executionExpiresAt`; the tool does not extend the window.

Verification#

Read the useful KYC state without exposing Stripe identifiers or onboarding links.

kyc_status#

Session requiredGET/auth/me

Returns only useful KYC and payout-readiness fields from the signed-in profile.

Parameters

None. The input schema is an empty object — {}.

Returns

`{ success, kyc }` with available status and dates; no Stripe id or onboarding URL.

tools/call — arguments for kyc_status
{}

Caveats

  • Read-only: this tool cannot start, resume or complete verification.