Hands for Agents

com.handsforagentsPublished by handsforagents.comOfficial publisherv0.2.0Updated Oct 24, 2026

Human-operated physical world in the EU: make, assemble, measure, verify, ship.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowBusiness & Commerce

Overview

AI-generated overview

Lets an assistant commission a human operator in the Czech Republic to make, assemble, measure, verify or ship physical items, with quotes, payment and…

What you can do
  • Read the service catalogue: what is offered, refused categories, prices and payment rules
  • Request a fixed-price quote from a human for a described task
  • Accept a quote and terms, creating a task and a Stripe Checkout payment link
  • Track a quote or task: status, next action, payments, evidence files, tracking numbers and operator messages
  • Accept or dispute delivery, with disputes answered by a human within two business days
When to use it
Useful when an assistant's work needs something done in the physical world in the EU: 3D printing, CNC or sheet-metal work, assembly, dimensional inspection, device testing, on-site verification or repack-and-ship with customs paperwork, each ending in an evidence package.
Requirements
Remote Streamable HTTP endpoint, or the npm package handsforagents-mcp via npx for stdio-only clients. No API key, account or registration; list_services and request_quote are open, and the other tools need the access_token returned by request_quote. Payment goes through Stripe Checkout.
Before you install
Tasks cost money: fixed quotes in EUR or USD from 45 EUR/hour with a 45 EUR minimum, paid by card through Stripe Checkout, including a card hold up to 150 EUR or a deposit plus balance. create_task accepts terms of service on the operator's behalf, and the contract is with the agent's operator. A task counts as accepted 7 days after delivery if not confirmed or disputed. Requests are read by a human and refused for credential access, impersonation, surveillance, fraud, weapons and similar…

Installation

In SourceWeft

  1. Open Hands for Agents in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.handsforagents%2Fhands/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "hands-for-agents": {
      "type": "http",
      "url": "https://mcp.handsforagents.com/mcp"
    }
  }
}

README

Hands for Agents — MCP server

A person in the Czech Republic (EU) makes, assembles, measures, verifies and ships physical things for your agent, and sends the operator an invoice.

Your agent can call an API for almost anything except the physical world. This is the physical world: FDM 3D printing in-house, CNC / sheet metal / laser / welding through Czech subcontractors, assembly and commissioning of hardware, dimensional inspection, human testing of a device, on-site verification anywhere in the Czech Republic, and receive-repack-ship with customs paperwork. Every task ends with an evidence package — timestamped photos, a measurement report with the instrument and its resolution, a test log, a tracking number, and the name of the person who did the work.

  • MCP endpoint: https://mcp.handsforagents.com/mcp (Streamable HTTP)
  • REST: https://api.handsforagents.com/v1/services
  • Everything machine-readable: llms.txt · services.json · openapi.yaml

Install

Point any client that supports remote MCP servers straight at the endpoint:

json
{  "mcpServers": {    "handsforagents": {      "type": "http",      "url": "https://mcp.handsforagents.com/mcp"    }  }}

For a client that only speaks stdio, this package bridges to the same endpoint and adds nothing of its own:

json
{  "mcpServers": {    "handsforagents": {      "command": "npx",      "args": ["-y", "handsforagents-mcp"]    }  }}

No API key, no account, no registration. list_services and request_quote are open; the other tools need the access_token that request_quote handed you.

Tools

ToolWhat it does
list_servicesThe seven services, the refused categories, seven example prices, the payment rules and the key contract terms. Byte for byte the same document as /services.json.
request_quoteSends a task to a human for screening and a fixed-price quote. Not an order, not binding, nothing charged. Returns quote_id, access_token, response_due_at and nda_url. A human answers within 24 hours.
create_taskAccepts a quote and the terms of service. Returns task_id and a Stripe Checkout URL for the first payment: the full price or a card hold (tasks up to 150 EUR), or the deposit (tasks above).
get_statusReads a quote or a task back: the quote with its payment schedule or the refusal reason, later the task status, payments, evidence files and tracking numbers, and the Checkout URL for the balance when it is due.
confirm_deliveryaccepted=true closes the task; accepted=false with a reason opens a dispute, answered by a human within 2 business days. Without either, the task counts as accepted 7 days after delivery.

The same five operations are available over REST, described in openapi.yaml.

Try it without installing anything

bash
curl -sL https://mcp.handsforagents.com/mcp \  -H 'Content-Type: application/json' \  -H 'Accept: application/json, text/event-stream' \  -H 'MCP-Protocol-Version: 2025-11-25' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Or without MCP at all:

bash
curl -s https://api.handsforagents.com/v1/services | head -40

What it costs

There is no catalogue. A human quotes every task as one fixed total in EUR or USD, built from 45 EUR/hour plus materials, subcontractors and carrier cost at cost. Minimum 45 EUR. Seven worked examples are in list_services — a printed PETG bracket checked with calipers and shipped tracked to Germany comes to 70 EUR, on-site verification of a business address with ten geotagged photos to 105 EUR.

Payment is by card through Stripe Checkout, in full (or as a card hold for short tasks) up to 150 EUR, deposit plus balance above it, with the balance due after you have seen the evidence package and before the item ships. No cryptocurrency, no cash, no anonymous payment of any kind — deliberately, so that every client is identifiable and every task has an invoice.

What it will not do

A human reads every request before a quote is issued; nothing is accepted automatically. Refused outright: anything needing login credentials or account access, impersonation, surveillance of people, fake reviews and engagement, getting around identity/age/CAPTCHA/KYC verification, referral and coupon fraud, weapons and export-controlled dual-use goods, counterfeits, reshipping goods bought with someone else's card, and anything illegal in the Czech Republic or the EU. Three further categories — confirming a person's identity, signing a document, receiving a parcel addressed to a third party — are accepted only after the operator has been verified.

Also outside the capability: safety-critical parts (medical, food-contact, pressure, lifting) without a separate written engineering agreement, in-person work outside the Czech Republic, and storage beyond 30 days.

Who you are contracting with

your engineering s.r.o., company ID (IČO) 09738100, Jaurisova 515/4, Michle, 140 00 Praha 4, Czech Republic. Registered 9 December 2020, file C 341512 at the Municipal Court in Prague. Verify it yourself: justice.cz · ARES, as JSON.

The contract is with the operator of the agent — the company or person on whose behalf it acts — because an agent has no legal personality. Czech law, courts in Prague for business clients, consumers keep their home protections.

Everything you send is confidential by default from the first request_quote, without marking anything and without signing anything, for the task and three years after. A pre-filled one-way NDA is there if you need a signed document.

Full terms: terms · task policy · disputes and refunds · privacy · DPA

Honest status

The service opened in September 2026 and no tasks have been completed yet; the statistics on the site say so and will be updated monthly. Liability insurance is being arranged and is not yet in force — the site says that too, rather than implying otherwise. Completed tasks will be published here as anonymised examples with their evidence packages, with the client's consent.

Security

Found something? [email protected], or see security.txt.

Licence

MIT for this bridge package. The service itself is governed by the terms of service linked above.

Source: README.md at commit e478d63

Tools

5

list_services

List services

Returns what the service does and does not do, the refused categories, prices and how to pay, as a short summary. No authentication. With full=true it returns the complete document (worked price examples, the full legal text, the marketplace comparison), which is many times larger.

Parametersfull

request_quote

Request a quote

Creates a request for a fixed-price quote from a human. The request is not binding and nothing is charged. Required: description, email and name (the person or company on the invoice, normally the recipient or company in delivery_address). delivery_address is needed when a physical item is shipped, handed over or collected: one plain string with recipient, street, postcode and city, country; a phone number is optional. country is the ISO 3166-1 alpha-2 code of the address, vat_id only what the client provided. The fields are sent flat, as in the examples. Returns quote_id (of the form q_..., issued only in this response), access_token (shown once; the only key to the quote and its task), nda_url and upload_url (the address input files are POSTed to). A human answers within 24 hours, every day, with a quote or a refusal. No authentication. Shortest possible request: {"description":"Make 20 rubber gaskets, 60 mm outer diameter, black EPDM.","email":"[email protected]","name":"Example Inc."}. With a delivery address and an input file: {"description":"Make 20 rubber gaskets, 60 mm outer diameter, black EPDM.","email":"[email protected]","name":"Example Inc.","delivery_address":"Example GmbH, Musterstr. 1, 10115 Berlin, DE, +49 30 000000","input_files":["https://example.com/gasket-drawing.pdf"]}

Parametersnamerequiredemailrequiredvat_idcountrycurrencydeadlineservicesagent_namedescriptionrequiredinput_filesdeliverablesdelivery_address+1 more

create_task

Accept quote, get payment link

Accepts a quote and the terms of service (quote_id, access_token, terms_accepted=true, terms_version as stated in the quote) and creates the task. Returns task_id and checkout_url, the payment link for the first payment (the full price or a card hold up to 150 EUR, the deposit above); the payment is made by card on a Stripe Checkout page and the link is valid for 4 days. The contract is concluded when the payment is received or the hold authorised. A test order (test_mode true) has no checkout_url and no payment link: its payment is simulated by the operator after the order, so the response shows nothing paid or simulated. A repeated call for the same quote returns the same task.

Parametersquote_idrequiredaccess_tokenrequiredterms_versionrequiredterms_acceptedrequiredallow_anonymised_example

get_status

Get status or answer operator

Returns the current status of a quote (id = quote_id) or a task (id = task_id): status, next_action (a short text on the next step), payments, updates, and messages with the operator (newest first, from operator or you). The answer is short: older_updates and older_messages count what is left out; full=true returns everything. With the optional message the call also stores a plain-text reply to the operator and e-mails it to the operator; message_sent is then true. While the operator has a message that has not been returned yet, the reply is not stored (message_sent: false) and the answer contains that message. The same text again within 10 minutes is ignored (duplicate_ignored: true). A status can change at any time; every call returns the state at that moment. test_mode true marks a test order: nothing is paid or invoiced.

Parametersidrequiredfullmessageaccess_tokenrequired

confirm_delivery

Confirm or dispute delivery

Accepts or disputes the delivery of a task. accepted=true closes the task and, for a card hold, captures it. accepted=false with a reason opens a dispute, answered by a human within 2 business days; it is possible at the evidence stage, before the balance is paid, as well as after delivery. Without either, the task counts as accepted 7 days after delivery. Returns the task status.

Parametersreasontask_idrequiredacceptedrequiredaccess_tokenrequired

Version history

2
  1. v0.2.0LatestSep 23, 2026
  2. v0.1.0Sep 19, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts