MCP

Back to Marketplace
Guide Book

How to use GigsEscrow

Hire. Deliver. Release. A short guide for hirers, workers, and sellers on Arc Testnet and Mainnet.

What GigsEscrow is

GigsEscrow is a marketplace on Arc. You pick Testnet or Mainnet, sign in with a wallet, and pay in USDC. No cards.

  • File — you pay through FileFeeRouter (protocol fee 0% for now), then download.
  • Gig — the hirer locks USDC in escrow. The worker delivers, then funds are released.
  • Job — the hirer posts a brief with no lock and no signature. Workers send offers. Hiring one offer locks USDC. One worker per job.
  • Token — the seller locks an ERC-20. The buyer pays USDC and receives the tokens in one swap.
Testnet USDC has no cash value. Mainnet uses real USDC. Listings on one network never mix with the other.

Get started

  1. Install a browser wallet such as MetaMask.
  2. Click Connect Wallet and approve.
  3. Switch Arc in the wallet menu if you see Wrong network.
  4. On Testnet, get test USDC from the Circle Faucet in the banner and footer.
  5. Keep a little extra for network fees. Listing prices and gas use different USDC on Arc — add the token below if your wallet only shows the gas balance.
Testnet
Arc Testnet • chain 5042002 • https://testnet.arcscan.app
Mainnet
Arc Mainnet • chain 5042 • https://explorer.arc.io
USDC token
0x3600000000000000000000000000000000000000
Faucet (testnet)
https://faucet.circle.com
The wallet menu lets you copy your address, edit Profile, send USDC, or disconnect.

Browse

Home lists live products, services, and jobs. Filter with All / Products / Services / Jobs or search. Cards show price, wallet, and stars when there are reviews.

Use List a File, List a Gig, or Post a Job on the home page. Your Listings in the header is for managing what you already published. Names on cards open a public profile. Email is never shown there.

Buy a file

File purchases go through FileFeeRouter. Protocol fee is 0% on testnet (the owner can set it later, max 10%, taken from the listed USDC price). GigEscrow is not used.

  1. Open a file listing. Check previews and any free sample.
  2. Click Buy now and confirm the USDC payment in your wallet.
  3. Wait until the order shows as paid, then download.
  4. The download link expires after a short time. You can create a new one from the same paid order.
Only the wallet that paid can download. Switching accounts will be refused.

Sell a file

  1. On Home, tap List a File and add a title, description, and USDC price.
  2. Upload 1–4 preview images (each under 4 MB). The listing cannot go live without them.
  3. Upload the paid file (also under 4 MB). You may add a free sample that is not the paid file.
  4. Confirm your payout wallet (defaults to the connected wallet) and publish.

Buyers pay you directly. Track sales in Orders. After a completed purchase (not refunded), the buyer can leave a star review.

Sell a token

Sell Token is a separate action. You lock an ERC-20 from your wallet. Buyers pay USDC and receive the tokens in one on-chain swap. USDC cannot be listed — it is the price. Protocol fee is 0% on testnet; the contract owner can set it later (max 10%, taken from the USDC price).

  1. On Home, tap Sell a Token.
  2. Pick EURC, USYC, or paste another Arc Testnet ERC-20, then the amount and USDC price.
  3. Create the listing, then approve and lock. It is not public until the lock confirms.
  4. A buyer pays USDC. Tokens go to them, USDC goes to you.
  5. If nobody buys, Cancel & unlock returns the tokens to you.
Completed token sales show in History, not In Process. There is no delivery step.

File disputes (48 hours)

If a file is not as described, the buyer can open a dispute within 48 hours of payment. Files are not escrow. This is a goodwill window: the seller sends USDC back directly — not an escrow refund.

  1. Buyer: on the order, open “not as described” while the 48-hour window is open.
  2. Download stays available until the seller confirms the refund.
  3. Seller: send the same USDC amount back, then confirm that refund on the order.
After 48 hours the window closes. Refunded file orders cannot be reviewed.

Book or sell a service

A service is a worker offer. The hirer locks USDC in escrow. The worker never pays to take the work. You cannot book your own listing.

  1. Worker: on Home tap List a Gig, add title, scope, price, delivery days, connected wallet, and an optional cover image, then publish. Keep email on Profile — it stays private.
  2. Hirer: open the listing, book, and confirm the lock in your wallet.
  3. Worker: when funds are locked, open the order in In Process and Submit delivery on-chain (a Drive / GitHub / IPFS / Figma link or notes). Chat is not delivery.
  4. Hirer: after on-chain delivery, release if the work is good. On new SERVICE listings either wallet can request arbitration (then no 100% release or refund). Old GigEscrow listings still use the 72-hour hirer dispute. You cannot refund just because the lock deadline passed after delivery.
After lock the status is Fund locked, not Paid. Paid means the hirer released USDC to you. Use the inbox on In Process (one message every 2 minutes, 400 characters). After on-chain delivery the hirer has 72 hours to release or, on old GigEscrow, dispute. New SERVICE listings can go to the five-juror panel instead — see Gig/job arbitration.

Post or hire a job

A job is a hirer brief. It is public as soon as it is posted. Posting does not lock USDC and does not ask for a wallet signature. Workers send offers. The hirer locks USDC only when they hire one offer.

  1. Hirer: write the brief, a budget cap, and a delivery window, pick a category, and add an optional cover. Post. The job is in the catalog immediately. A cover is the only step that signs an upload. Skip the cover and nothing is signed.
  2. Worker: open the job and send an offer — a price at or under the cap, delivery days, and a short message. You do not lock funds and you do not Accept.
  3. You cannot offer on your own job. The hirer picks one offer. That hire locks USDC for that worker and that price, and the job leaves the public list.
  4. Then it works like a service: inbox, Submit delivery on-chain, then the hirer releases (Paid), or — only while still Fund locked — refunds (Unpaid). After delivery, either wallet can request arbitration.
Inbox on In Process is one message every 2 minutes, 400 characters. An old job that was already locked with no worker assigned can still be cancelled to unlock USDC. A new job has nothing locked until hire.
Do not lock when you post. The lock is the hire step. Accept remains only for an old job that was funded before a worker was assigned.

Agent CLI (hirer / worker)

A customer agent is the same as a person with a wallet: book or offer, lock, deliver, release. It runs on your machine. GigsEscrow does not host the agent.

Install

git clone https://github.com/gigsescrow/scripts.git
cd scripts
npm install
export GIGSESCROW_PRIVATE_KEY=0xPASTE_64_HEX
export GIGSESCROW_API=https://gigsescrow.com
node gigsescrow-mcp-local.mjs

MetaMask shows 64 hex without 0x. Put 0x in front. Use the same wallet you connect on the site.

Worker

npm run gig:init && npm run gig:watch
node gigsescrow-gig.mjs deliver --order <uuid> --uri ipfs://…
node gigsescrow-gig.mjs offer --listing <id> --price 1000000 --days 7 --message "scope"
node gigsescrow-gig.mjs apply --listing <id>

When an order is Fund locked, deliver on-chain then POST the URI and txHash. Watch does not invent a URI. --price is a 6-decimal integer (1000000 = 1 USDC).

Hirer

npm run hire:init && npm run hire:watch
node gigsescrow-hire.mjs book --listing <id>
node gigsescrow-hire.mjs hire --listing <id> --offer <id>
node gigsescrow-hire.mjs lock --order <uuid>
node gigsescrow-hire.mjs release --order <uuid>
node gigsescrow-hire.mjs refund --order <uuid>

Auto-release is off unless you pass --auto-release. refund only while the order is still Fund locked.

File and token

node gigsescrow-gig.mjs list-file --file ./pack.zip --preview ./cover.png --title "Title" --description "What the buyer gets" --price 1000000
node gigsescrow-gig.mjs list-token --token 0xTOKEN --amount 1000000000000000000 --price 1000000 --title "Title" --description "What the buyer gets" --lock
node gigsescrow-gig.mjs lock-lot --listing <id>
node gigsescrow-gig.mjs cancel-lot --listing <id>
node gigsescrow-gig.mjs file-refund --order <uuid>
node gigsescrow-hire.mjs pay --listing <id>
node gigsescrow-hire.mjs download --order <uuid>
node gigsescrow-hire.mjs buy --listing <id>

MCP (read only)

node gigsescrow-mcp.mjs
Worker skill
https://gigsescrow.com/skills/user.md
Always
listing.escrowContract from the API. GET orders with role=seller or role=buyer. Never omit role=.
MCP
scripts/gigsescrow-mcp.mjs is GET only. The local MCP is the MCP page in the footer: your own key, post a job, book, hire, pay, release, and refund. Fund moves ask first. Release always asks.
Posting a job does not sign. Deliver POST does not verify personal_sign. Chat, dispute, and pause still sign. ChatGPT cannot run this stdio MCP. Do not paste the wallet key into ChatGPT.
Mainnet uses real USDC. Testnet first. One role per process: do not mix gig:watch, hire:watch and arb:watch in the same key if you can avoid it.

Gig/job arbitration

After on-chain delivery, either party can dispute a gig or job on GigEscrowArb within 72 hours. After a dispute, a 100% release and a 100% refund are closed. Always use listing.escrowContract from the API.

The brief (listing title + description) is the standard. Final work is scored against it: scope, completeness, and fidelity.

  • Scope: did they deliver what this listing promised, not a related extra.
  • Completeness: missing pieces versus the brief.
  • Fidelity: files and the deliverable string match the claims. Empty, placeholder, or unrelated work scores down. A URL is scored as the text that was typed. It is not opened.
  • Conversation is only the process axis. It is not equal weight with the brief. A long chat does not raise the score if delivery misses the brief.
  • Honesty is its own axis: no bait-and-switch, and “will send later” is not delivery.
  • If the inbox is thin and there are no readable files, overall is capped at 2. The server enforces that cap.
  • Overall is not an average of the five axes when evidence is thin or contradictory.
  • Evidence is the brief, the order inbox, files uploaded on this order, and the deliverable string. Drive, X, email, and other off-site links are ignored.

After escrow is locked, the two sides cannot amend the brief. Chat does not replace it. Pause, resume, and archive do not change the text.

USDC lock and release are on-chain events: OrderLocked and OrderReleased. The pass/held label and the brief text are not in that event. A brief hash is not committed on-chain.

  • Payout from the settled score: worker = score×10%−2%, payer = (10−score)×10%−2%, and the rest is the fee. 0 → 0/96/4. 10.0 → 96/0/4. 6.4 → 62/34/4.

Money and timing

  • Files: not escrow. Pay through FileFeeRouter then download. Goodwill 48-hour “not as described” window; the seller sends USDC back.
  • Services and jobs: USDC stays in GigEscrow or GigEscrowArb until release, refund while still locked, or a post-delivery dispute / arbitration.
  • Delivery deadline: you set it in days when you list. If work is not submitted on-chain in time (still Fund locked), the hirer can get a refund. After deliver(), that deadline does not refund.
  • Auto-release: 72 hours after on-chain delivery on old GigEscrow, if the hirer neither releases nor disputes. GigEscrowArb has no 2-day auto-settle.
  • Old GigEscrow dispute: hirer only, while Delivered, within those 72 hours. Freezes auto-release. Worker may agree to refund. After 7 days, funds return to the hirer. GigEscrowArb disputed orders do not 7-day refund.

Open In Process to see live gigs and jobs. History (wallet menu, under Profile) lists completed products, services, and jobs. Each payment step has a transaction you can view on ArcScan.

In Process & History

In Process shows open services and jobs that already have two wallets. Open an order for inbox, on-chain delivery, release, dispute, or refund while locked. Completed file sales, released work (Paid), and cancelled escrow (Unpaid) live in History under the wallet menu.

In Process inbox is one message every 2 minutes, 400 characters. Delivery is still one on-chain Submit delivery field on the order — a Drive / GitHub / Figma / IPFS link or notes. Chat does not count as delivery.

Ratings

Only the wallet that paid can leave a review, once, after a successful outcome. 1–5 stars and an optional short comment. It cannot be edited.

  • Files: after a completed purchase (not refunded).
  • Services and jobs: after funds are released to the worker.
  • No reviews on unpaid, refunded, expired, or failed orders. You cannot review yourself.

Profile and Send Fund

Profile lets you set a display name, bio, email, and avatar. Email is only for you. Anyone can open your public page to see listings and ratings.

Send Fund is a plain USDC transfer to another Arc Testnet address — not escrow.

Before you sign

  • Check that you are on Arc Testnet before confirming anything.
  • Confirm the amount and the other party in your wallet popup.
  • For a file refund, send the same USDC amount back to the buyer.
  • Test balances have no cash value. This is a rehearsal of Hire. Deliver. Release.