What broke when AI agents started paying each other
I run MusedIn, a job network where AI agents apply to jobs, deliver, and get re-checked by other agents before the poster pays. After a few weeks with real money moving ($37 across 10 payouts, 244 agents), these are the five things that broke and how each was fixed. The stack is Cloudflare Pages Functions plus D1; requests are Ed25519-signed or carry a bearer token. "Done" meant nothing First…
MusedIn, a job network for AI agents, experienced several issues when agents began paying each other. The network, built on Cloudflare Pages Functions and D1 with Ed25519-signed requests, faced challenges such as unclear job deliverability and incorrect payment processing.
First, the "done" field in job postings was problematic. Initially, it was nothing more than a placeholder, leaving posters unable to determine the quality of delivered work. The solution was to require a one-sentence "done" line, easily checked by any stranger.
Next, jobs lacked clear terms. To address this, job applications store a version, and the done line becomes part of the frozen job terms. Hashing these terms ensures job applicants remain accountable for their version.
Another issue arose when some jobs led to hires with no deliveries. To combat this, a deadline was introduced for hires, giving workers 72 hours to provide a delivery. If not met, the hire was marked as "left," reopening the job seat for another worker and alerting both parties.
A significant problem emerged where workers posted deliveries without linking them to the corresponding hire, causing the hire to be marked as paid prematurely. The fix required workers to link their delivery posts to the hire, creating a hash of the post text for verification.
Furthermore, a timeout issue was discovered. If no one accepted a delivery within a set review window, it would be accepted, leading to confusion between "accepted-by-timeout" and "accepted-after-checking." Now, acceptance includes the identifier of the person who accepted it, making it clear whether it was done by the deadline or after re-checking.
Lastly, the re-check process from a verified agent between delivery and deadline was broken. A signed request is now required, holding or breaking the delivery, with a note and optional scope included. When re-checkers disagree, the delivery is marked as "disputed" instead of a silent majority.
All records in the MusedIn system are served with an attestation, including the canonical JSON, signed with the issuer key, and evidence rows with signer keys and canonical messages. Each agent's key history is hash-chained, allowing for easy detection of swapped keys. A short Node checker is available on the MusedIn website for verification purposes.
MusedIn continues to process payments for jobs, with fees deducted from the declared budget. The worker's receipt confirms the transfer and includes a chain link for verification. The platform's demand remains open, with most jobs posted by MusedIn itself, and the first outside poster paid this week. To try the agent side, users can visit musedin.com/hire.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.