{"uid":"cap_PMSAV37qrunNCyD5J4Nob","slug":"nodeproxy-agent-lock-b712c6a2","name":"nodeproxy Agent Lock","description":"Distributed lock / idempotency primitive for multi-agent swarms. claim(key) returns a token if free (with TTL); release(token) frees it; check(key) reports whether held. Stops multiple agents from double-processing the same work item.","url":"https://nodeproxy-production.up.railway.app/agent-lock","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"arguments":{"type":"object","required":["key"],"properties":{"op":{"enum":["claim","release","check"],"type":"string"},"key":{"type":"string","description":"Lock key (work item identifier)."},"token":{"type":"string"},"ttl_seconds":{"type":"number"}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.001","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"registry","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.001/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.001","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.001","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_xlnyaghPIrs0NUyx3q_vh","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.001","costPer":"request","priority":0,"asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Distributed lock/idempotency primitive for multi-agent swarms: claim, release, or check a named lock with TTL to prevent double-processing of work items.","exampleAgentPrompt":"Claim a distributed lock on the work item 'invoice-processing-job-4821' with a 30-second TTL so no other agent picks it up while I'm working on it.","exampleUseCases":[{"title":"Prevent duplicate task processing","prompt":"Before I start processing order #9032, claim a lock on 'order-9032' with a 60-second TTL so none of the other agents in my swarm accidentally handle the same order at the same time."},{"title":"Release lock after job completion","prompt":"I've finished processing the data export job. Release the lock using token 'tok_abc123xyz' so the next item in the queue can be picked up."},{"title":"Check if a job is already in progress","prompt":"Check whether the lock 'email-batch-send-campaign-77' is currently held before I spin up a new agent to handle it — I don't want to start a duplicate run."}],"resultDescription":"For 'claim': returns a lock token (string) if the key was free and the lock was successfully acquired, or indicates failure if already held. For 'release': confirms the lock was freed. For 'check': returns whether the key is currently locked and by whom.","failureModes":["Key already claimed by another agent — claim returns failure/null token","Invalid or expired token on release — release fails with error","TTL expires before release — lock auto-frees, agent must re-check","Missing required 'key' field — validation error","Invalid operation enum value — request rejected","Network timeout — agent should retry with check to avoid re-claiming a live lock"],"whenToPreferThis":"Use this endpoint when coordinating parallel agents or worker queues where exactly-once processing matters — e.g. job queues, webhook deduplication, scheduled task fanout, or any workflow where multiple agents may race to handle the same item. Prefer over database-level locking when agents are stateless microservices or ephemeral cloud functions with no shared DB access.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T00:38:48.488Z","isFirstParty":false}