rentahuman-mcp 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -159,8 +159,8 @@ These tools sign payments locally; the private key never leaves your machine, an
159
159
  - **create_escrow_checkout**: Fund an accepted bounty application or conversation payment offer. Accepts optional `idempotencyKey` and returns a deterministic `status`. `requires_payment` includes `checkoutTotal` next to `checkoutUrl` (what checkout charges; it includes a platform fee).
160
160
  - **get_escrow**: Inspect a specific escrow, including status, amounts, fees, parties, and audit history.
161
161
  - **list_escrows**: List escrows you created as the poster. Filter by `applicationId`, `bountyId`, optional `humanId`, or status.
162
- - **confirm_delivery**: Confirm work was delivered so payment can be completed or released.
163
- - **release_payment**: Release active funded escrow to the worker and complete the task after explicit user payment direction. A prior worker completion or evidence review is not required. Accepts optional `applicationId` binding check.
162
+ - **confirm_delivery**: Confirm work was delivered so payment can be completed or released. Refused unless the escrow is bound to an accepted application or a live booking.
163
+ - **release_payment**: Release active funded escrow to the worker and complete the task after explicit user payment direction. For ordinary bounty jobs, review the evidence first and pass `acknowledgeRelease: true`; without it HTTP 409 `release_acknowledgement_required` returns `amountCents`, `workerPayoutCents` and `worker`. Accepts optional `applicationId` binding check.
164
164
  - **cancel_escrow**: Cancel an unfunded or funded escrow and refund the payer.
165
165
  - **open_dispute**: Freeze an eligible escrow for admin review.
166
166
  - **get_earnings_balance**: Check withdrawable, held, disputed, and withdrawn earnings for the authenticated account.
@@ -198,14 +198,14 @@ worker (`escrow_recipient_mismatch`).
198
198
  - **get_bounty**: Get detailed bounty information including spots filled/remaining
199
199
  - **update_bounty**: Modify an ordinary one-shot bounty or close it while unassigned. Work Completed and Paid are synchronized from escrow evidence and cannot be set directly. Figure ongoing-operator-only bounty settings are intentionally omitted from MCP.
200
200
  - **cancel_bounty**: Cancel one of your bounties by ID with a required canonical reason and `details` only when the reason is `other`; this feedback is private and never shown to workers
201
- - **get_bounty_applications**: View applications for your bounty, including uploaded media URLs (`imageUrls`, `videoUrls`, `documentUrls`) on upload-collection bounties
201
+ - **get_bounty_applications**: View applications for your bounty, including uploaded media URLs (`imageUrls`, `videoUrls`, `documentUrls`) on upload-collection bounties. Each application carries `isBlockedByOwner` and `isPreferredByOwner`; call `prefer_human` / `block_human` with the application's `humanId` to favorite or block an applicant while reviewing (blocking is future-only and never removes an accepted worker). Each application also carries `reviewSummary` (`averageRating` 1-5 or `null`, `reviewCount`, up to 3 `recentReviews` with `rating`, `comment`, `escrowVerified`, `reviewerName`, `createdAt`); `averageRating: null` with `reviewCount: 0` means no review history yet, not a low score
202
202
  - **get_bounty_dataset**: List download URLs for every accepted upload on one of your upload-collection bounties
203
203
  - **accept_application**: Accept a human's application (supports accepting multiple for multi-person bounties). Accepts optional `idempotencyKey`.
204
204
  - **reject_application**: Reject an application
205
- - **pay_enterprise_bounty**: Pay a completed legacy enterprise bounty from the owner wallet after explicit user payment direction. Applies only to older bounties created under the retired enterprise deferred-billing tier; new bounties are always escrow-funded and use release_payment instead.
205
+ - **pay_enterprise_bounty**: Pay a completed legacy enterprise bounty from the owner wallet after explicit user payment direction. Applies only to older bounties created under the retired enterprise deferred-billing tier; new bounties are always escrow-funded and use release_payment instead. Same approval and `acknowledgeRelease` rules as `release_payment`.
206
206
  - **get_bounty_submissions**: List evidence submissions for one of your bounties. Automated findings are advisory.
207
207
  - **get_submission**: Get one evidence submission, including uploaded files and the advisory check report.
208
- - **review_submission**: Approve, reject, or request a redo. Returns `nextAction`; does not release payment.
208
+ - **review_submission**: Approve, reject, or request a redo while the job is `evidence_in_review`. Returns `jobState`, `nextAction` and the redo `attempt` counter; does not release payment. Redo is capped at 3 cycles per job; reject is terminal and files a dispute.
209
209
 
210
210
  To target every eligible worker in one country, pass `location` with the ISO
211
211
  country code and `isRemoteAllowed: false`, omitting `city` and `state`. The
@@ -215,16 +215,30 @@ same shape works with `update_bounty`. Platform-blocked countries are rejected.
215
215
  location: { country: "US", isRemoteAllowed: false }
216
216
  ```
217
217
 
218
- For ordinary accepted one-shot bounties, workers must finalize post-acceptance
219
- photo/video evidence before marking the task complete. To review it, the agent
220
- loads the bounty criteria with `get_bounty`, lists and opens the canonical
221
- submission, and inspects every uploaded file before calling
222
- `review_submission`. Automated `recommendation` values stay advisory. If the
223
- agent cannot inspect a file, it must report that limitation instead of deciding.
224
- Review decisions require explicit user choice or explicit criteria-based
225
- delegation and do not move money. Conversely, an explicit `release_payment` or
226
- `pay_enterprise_bounty` instruction can pay before completion or evidence
227
- approval. Platform admins cannot authorize payment.
218
+ For ordinary accepted one-shot bounties, the worker marks the task complete by
219
+ submitting post-acceptance evidence, which opens the poster's four-day review
220
+ window (`jobState: evidence_in_review`). To review it, the agent loads the
221
+ bounty criteria with `get_bounty`, lists and opens the canonical submission,
222
+ and inspects every uploaded file before calling `review_submission`. Automated
223
+ `recommendation` values stay advisory. If the agent cannot inspect a file, it
224
+ must report that limitation instead of deciding. Review decisions require
225
+ explicit user choice or explicit criteria-based delegation and do not move
226
+ money.
227
+
228
+ - `approve` moves the job to `approved_awaiting_release`; `release_payment`
229
+ (or `pay_enterprise_bounty`) then needs `acknowledgeRelease: true`.
230
+ - `request_redo` (reason required) moves it to `changes_requested` and the
231
+ worker resubmits; at most 3 redo cycles per job, then only approve or reject
232
+ remain (`redo_limit_reached`).
233
+ - `reject` (reason required) is terminal for the evidence loop: a dispute is
234
+ filed immediately (`rejected_disputed`) and the worker cannot resubmit.
235
+
236
+ Releasing escrow without the acknowledgement returns HTTP 409
237
+ `release_acknowledgement_required` with `amountCents`, `workerPayoutCents` and
238
+ `worker`. The owner may release escrow before the review is closed; the
239
+ seven-day auto-release and `pay_enterprise_bounty` require an approved
240
+ submission (`evidence_approval_required` otherwise). Platform admins cannot
241
+ authorize payment.
228
242
 
229
243
  ### Human-written text
230
244
 
@@ -291,6 +305,11 @@ in-chat + email reminder at the half-way point; past the deadline the seat is
291
305
  automatically released, the application is expired, escrow returns to your
292
306
  funding source, and the listing reopens for other applicants.
293
307
 
308
+ Omit `completionWindowHours` for work anchored to a specific future event,
309
+ shift, or appointment. The clock starts when the worker confirms their seat,
310
+ not at the scheduled start time, so a shorter window could release the worker
311
+ before the work can begin.
312
+
294
313
  Workers may request more time. Pending requests appear on
295
314
  `get_bounty_applications` as `completionExtension` with `status: "requested"`
296
315
  (an open request pauses the auto-release for up to 24 hours). Answer with the
package/dist/serve.js CHANGED
@@ -908,6 +908,20 @@ refund unused budget, and produce a final report. Managed bounties require a
908
908
  fixed USD price and 1\u201350 spots and cannot use \`mode: 'auto'\`. Poll the bounty's
909
909
  managed run or subscribe to \`run.report_ready\` for the finished work.
910
910
 
911
+ ### Review Applicants with Prefer and Block
912
+
913
+ Every application returned by \`get_bounty_applications\` carries two flags
914
+ describing your relationship with that applicant: \`isBlockedByOwner\` and
915
+ \`isPreferredByOwner\`. Use them while reviewing, and act from the same view:
916
+ - \`prefer_human(humanId)\` with the application's \`humanId\` favorites a strong
917
+ applicant: preferred humans are notified first for all your future bounties
918
+ and any block on them is removed
919
+ - \`block_human(humanId)\` keeps a poor fit off your future bounties and out of
920
+ your outreach, and removes them from your preferred list
921
+ - Blocking is future-only. It never removes a worker who was already accepted;
922
+ use \`reject_application\` for the application in front of you
923
+ - Always ask the user before blocking or preferring on their behalf
924
+
911
925
  ### Start a Conversation
912
926
 
913
927
  Use \`start_conversation\` only when the account is eligible for direct messaging:
@@ -1013,10 +1027,19 @@ completion and evidence criteria, then \`get_bounty_submissions\` and
1013
1027
  are advisory; never turn them into the verdict. Only call \`review_submission\`
1014
1028
  when the user explicitly chooses approve/reject/redo or explicitly delegates
1015
1029
  criteria-based decisions. If a file cannot be inspected, disclose that limit
1016
- instead of deciding. \`release_payment\` and \`pay_enterprise_bounty\` are
1017
- separate irreversible financial actions and must only follow explicit user
1018
- payment direction. Worker completion and evidence approval are not prerequisites
1019
- for that explicit payment.
1030
+ instead of deciding.
1031
+
1032
+ The job moves through a small state machine, returned as \`jobState\` on review
1033
+ responses: the worker marks the task complete with evidence
1034
+ (\`evidence_in_review\`), the owner approves (\`approved_awaiting_release\`),
1035
+ requests a redo (\`changes_requested\`, at most 3 cycles per job, then only
1036
+ approve or reject remain) or rejects (\`rejected_disputed\`: a dispute is filed
1037
+ immediately and the worker cannot resubmit). \`release_payment\` and
1038
+ \`pay_enterprise_bounty\` are separate irreversible financial actions and must
1039
+ only follow explicit user payment direction. For these jobs they require
1040
+ \`acknowledgeRelease: true\` (and \`pay_enterprise_bounty\` an approved
1041
+ submission); a 409 names the amount and the worker so you can confirm with the
1042
+ user and retry. Review the evidence before directing payment.
1020
1043
 
1021
1044
  ## Support
1022
1045
 
@@ -1651,7 +1674,7 @@ var CreateBountyRequest = Schema5.Struct({
1651
1674
  Schema5.lessThanOrEqualTo(720)
1652
1675
  )
1653
1676
  ).annotations({
1654
- description: "Auto-reassign completion deadline: hours a worker has to complete the task after confirming their seat (1-720). Workers are reminded at half the window; when the deadline passes the seat is automatically released and the listing reopens for other applicants. Workers may request an extension, which you approve, deny, or replace with your own via POST /bounties/{id}/applications/{appId}/extension/decision. For AI-managed bounties this overrides the default 6-hour work window. Omit for no completion deadline."
1677
+ description: "Auto-reassign completion deadline: hours a worker has to complete the task after confirming their seat (1-720). Workers are reminded at half the window; when the deadline passes the seat is automatically released and the listing reopens for other applicants. Workers may request an extension, which you approve, deny, or replace with your own via POST /bounties/{id}/applications/{appId}/extension/decision. For AI-managed bounties this overrides the default 6-hour work window. Omit for no completion deadline \u2014 and always omit for tasks anchored to a specific future date or time slot (events, shifts, appointments): the clock starts at seat confirmation, so a window shorter than the wait would release every worker before the task could start."
1655
1678
  }),
1656
1679
  keepApplicantsOnFill: Schema5.optional(Schema5.Boolean).annotations({
1657
1680
  description: "When true, pending applicants are kept (not auto-rejected) once all seats fill, so you can reuse the applicant pool after reopening or adding seats. Default false."
@@ -2152,6 +2175,9 @@ var PayEnterpriseBountyRequest = Schema5.Struct({
2152
2175
  }),
2153
2176
  conversationId: Schema5.optional(Schema5.String).annotations({
2154
2177
  description: "Conversation for the completed application. Required when the bounty has more than one conversation."
2178
+ }),
2179
+ acknowledgeRelease: Schema5.optional(Schema5.Boolean).annotations({
2180
+ description: "Required for ordinary bounty jobs in the evidence review flow: pass true to confirm the release pays the worker and is final. Without it the API answers HTTP 409 release_acknowledgement_required with the amount and the worker."
2155
2181
  })
2156
2182
  });
2157
2183
  var GetBountyDatasetRequest = Schema5.Struct({
@@ -2360,7 +2386,7 @@ var getBountySpec = {
2360
2386
  };
2361
2387
  var getBountyApplicationsSpec = {
2362
2388
  name: "get_bounty_applications",
2363
- description: "View applications for a bounty. See who applied, their cover letters, and availability. Supports cursor-based pagination (pass the `cursor` from a previous response to get the next page).",
2389
+ description: "View applications for a bounty. See who applied, their cover letters, and availability. Each application includes `isBlockedByOwner` and `isPreferredByOwner`, your relationship with that applicant. To favorite or block an applicant while reviewing, call `prefer_human` or `block_human` with the application's `humanId` (blocking is future-only: it never removes a worker you already accepted). Each application includes `reviewSummary` (`averageRating` 1-5 or null, `reviewCount`, and up to 3 `recentReviews` with rating, comment, escrowVerified, reviewerName, createdAt) from the applicant's past jobs. `averageRating: null` with `reviewCount: 0` means no review history yet: treat it as unknown, not as a low score. Weigh `reviewSummary` alongside `identitySignals` before calling accept_application. Supports cursor-based pagination (pass the `cursor` from a previous response to get the next page).",
2364
2390
  input: GetBountyApplicationsRequest
2365
2391
  };
2366
2392
  var getBountyDatasetSpec = {
@@ -2370,7 +2396,7 @@ var getBountyDatasetSpec = {
2370
2396
  };
2371
2397
  var acceptApplicationSpec = {
2372
2398
  name: "accept_application",
2373
- description: "Accept a human's application for your bounty. REQUIRES a funded escrow for this specific application \u2014 call create_escrow_checkout first to fund it, otherwise this returns 402 Payment Required. Once funded, accepting creates a booking and locks the escrow until work is delivered. For multi-person bounties, fund and accept each applicant separately. Other applications are auto-rejected only when the bounty is fully filled. Pass optional `idempotencyKey` to make this safe to retry (a replayed key returns the original result instead of duplicating).",
2399
+ description: "Accept a human's application for your bounty. REQUIRES a funded escrow for this specific application \u2014 call create_escrow_checkout first to fund it, otherwise this returns 402 Payment Required. Once funded, accepting creates a booking and locks the escrow until work is delivered. For multi-person bounties, fund and accept each applicant separately. Other applications are auto-rejected only when the bounty is fully filled. Pass optional `idempotencyKey` to make this safe to retry (a replayed key returns the original result instead of duplicating). Check the applicant's `reviewSummary` from get_bounty_applications before accepting; a null averageRating means no history, not a bad record.",
2374
2400
  input: AcceptApplicationRequest
2375
2401
  };
2376
2402
  var rejectApplicationSpec = {
@@ -2410,7 +2436,7 @@ var boostBountyOutreachSpec = {
2410
2436
  };
2411
2437
  var payEnterpriseBountySpec = {
2412
2438
  name: "pay_enterprise_bounty",
2413
- description: "Pay an accepted worker on a legacy enterprise bounty (older bounties created under the retired enterprise deferred-billing tier) from the owner wallet. New bounties are always escrow-funded; use release_payment for them. This is an irreversible financial action: call it only when the user explicitly directs payment. Worker completion and evidence review are not prerequisites for explicit owner payment. If the user asks for evidence review instead of payment, use get_bounty, get_submission, and review_submission. The amount, worker, and wallet are loaded from stored records. Insufficient wallet funds return 402 and are safe to retry after topping up. Owner or bounty-owning agent only; platform admins cannot pay.",
2439
+ description: "Pay an accepted worker on a legacy enterprise bounty (older bounties created under the retired enterprise deferred-billing tier) from the owner wallet. New bounties are always escrow-funded; use release_payment for them. This is an irreversible financial action: call it only when the user explicitly directs payment. For jobs in the evidence review flow the submitted evidence must be approved first and acknowledgeRelease must be true; otherwise HTTP 409 returns the code, the amount and the worker. If the user asks for evidence review instead of payment, use get_bounty, get_submission, and review_submission. The amount, worker, and wallet are loaded from stored records. Insufficient wallet funds return 402 and are safe to retry after topping up. Owner or bounty-owning agent only; platform admins cannot pay.",
2414
2440
  input: PayEnterpriseBountyRequest,
2415
2441
  annotations: {
2416
2442
  title: "Pay enterprise bounty",
@@ -2851,6 +2877,33 @@ var MOCK_BOUNTIES = [
2851
2877
  updatedAt: new Date(Date.now() - 1 * 24 * 60 * 60 * 1e3).toISOString()
2852
2878
  }
2853
2879
  ];
2880
+ var MOCK_REVIEW_SUMMARY_WITH_HISTORY = {
2881
+ averageRating: 4.5,
2882
+ reviewCount: 2,
2883
+ recentReviews: [
2884
+ {
2885
+ id: "review_test_001",
2886
+ rating: 5,
2887
+ comment: "Picked up and delivered same day with photo proof.",
2888
+ escrowVerified: true,
2889
+ reviewerName: "Logistics Agent",
2890
+ createdAt: new Date(Date.now() - 5 * 24 * 60 * 60 * 1e3).toISOString()
2891
+ },
2892
+ {
2893
+ id: "review_test_002",
2894
+ rating: 4,
2895
+ comment: "Reliable and communicative, arrived a few minutes late.",
2896
+ escrowVerified: false,
2897
+ reviewerName: "Errand Agent",
2898
+ createdAt: new Date(Date.now() - 20 * 24 * 60 * 60 * 1e3).toISOString()
2899
+ }
2900
+ ]
2901
+ };
2902
+ var MOCK_REVIEW_SUMMARY_EMPTY = {
2903
+ averageRating: null,
2904
+ reviewCount: 0,
2905
+ recentReviews: []
2906
+ };
2854
2907
  var MOCK_APPLICATIONS = [
2855
2908
  {
2856
2909
  id: "app_test_001",
@@ -2860,6 +2913,9 @@ var MOCK_APPLICATIONS = [
2860
2913
  coverLetter: "I'm available today and can pick up the package. I'm located near the downtown USPS and have done this many times before.",
2861
2914
  availability: "Available today between 10am-4pm",
2862
2915
  status: "pending",
2916
+ isBlockedByOwner: false,
2917
+ isPreferredByOwner: false,
2918
+ reviewSummary: MOCK_REVIEW_SUMMARY_WITH_HISTORY,
2863
2919
  createdAt: new Date(Date.now() - 12 * 60 * 60 * 1e3).toISOString(),
2864
2920
  updatedAt: new Date(Date.now() - 12 * 60 * 60 * 1e3).toISOString()
2865
2921
  },
@@ -2871,6 +2927,9 @@ var MOCK_APPLICATIONS = [
2871
2927
  coverLetter: "I can help with this package pickup. I have valid ID and am familiar with the USPS location.",
2872
2928
  availability: "Tomorrow morning works best for me",
2873
2929
  status: "pending",
2930
+ isBlockedByOwner: false,
2931
+ isPreferredByOwner: true,
2932
+ reviewSummary: MOCK_REVIEW_SUMMARY_EMPTY,
2874
2933
  createdAt: new Date(Date.now() - 6 * 60 * 60 * 1e3).toISOString(),
2875
2934
  updatedAt: new Date(Date.now() - 6 * 60 * 60 * 1e3).toISOString()
2876
2935
  }
@@ -3824,6 +3883,7 @@ var payEnterpriseBountyTool = toMcpTool(
3824
3883
  );
3825
3884
  return yield* api.post(`/bounties/${params.bountyId}/enterprise-pay`, {
3826
3885
  ...params.conversationId !== void 0 ? { conversationId: params.conversationId } : {},
3886
+ ...params.acknowledgeRelease !== void 0 ? { acknowledgeRelease: params.acknowledgeRelease } : {},
3827
3887
  ...verification
3828
3888
  });
3829
3889
  })
@@ -4523,6 +4583,9 @@ var ConfirmDeliveryRequest = Schema12.Struct({
4523
4583
  var ReleasePaymentRequest = Schema12.Struct({
4524
4584
  escrowId: Schema12.String.pipe(Schema12.minLength(1)),
4525
4585
  applicationId: Schema12.optional(Schema12.String),
4586
+ acknowledgeRelease: Schema12.optional(Schema12.Boolean).annotations({
4587
+ description: "Required for ordinary bounty jobs in the evidence review flow: pass true to confirm the release pays the worker and is final. Without it the API answers HTTP 409 release_acknowledgement_required with the amount and the worker."
4588
+ }),
4526
4589
  idempotencyKey: Schema12.optional(Schema12.String)
4527
4590
  });
4528
4591
  var CancelEscrowRequest = Schema12.Struct({
@@ -4651,7 +4714,7 @@ var escrowTools = [
4651
4714
  },
4652
4715
  {
4653
4716
  name: "confirm_delivery",
4654
- description: "Confirm that a worker has satisfactorily completed the task. Transitions the escrow from 'delivered' to 'completed' (or 'warranty_hold' if a warranty plan is active). This is separate from release_payment, which the owner may explicitly direct earlier. Requires RENTAHUMAN_API_KEY to be set.",
4717
+ description: "Confirm that a worker has satisfactorily completed the task. Transitions the escrow from 'delivered' to 'completed' (or 'warranty_hold' if a warranty plan is active). Refused with HTTP 409 unless the escrow is bound to an accepted application or a live booking and, for ordinary bounties, finalized evidence exists. This is separate from release_payment. Requires RENTAHUMAN_API_KEY to be set.",
4655
4718
  inputSchema: toInputSchema(ConfirmDeliveryRequest),
4656
4719
  handler: (args) => Effect12.gen(function* () {
4657
4720
  yield* requireApiKey;
@@ -4667,7 +4730,7 @@ var escrowTools = [
4667
4730
  },
4668
4731
  {
4669
4732
  name: "release_payment",
4670
- description: "Release an active funded escrow to the worker and complete the task. This is an irreversible financial action: call it only when the user explicitly directs payment. A prior worker completion or review_submission approval is not required. If the user asks to review evidence instead, call get_bounty and get_submission, inspect every file, then use review_submission. Optionally pass `applicationId` to assert the intended application; a mismatch is refused to prevent paying the wrong worker. Requires RENTAHUMAN_API_KEY.",
4733
+ description: "Release an active funded escrow to the worker and complete the task. This is an irreversible financial action: call it only when the user explicitly directs payment. For ordinary bounty jobs, review the worker's evidence with review_submission before paying, and pass acknowledgeRelease: true after confirming the amount and worker with the user; without it HTTP 409 release_acknowledgement_required returns the next action, amountCents, workerPayoutCents and worker. If the user asks to review evidence instead, call get_bounty and get_submission, inspect every file, then use review_submission. Optionally pass `applicationId` to assert the intended application; a mismatch is refused to prevent paying the wrong worker. Requires RENTAHUMAN_API_KEY.",
4671
4734
  inputSchema: toInputSchema(ReleasePaymentRequest),
4672
4735
  annotations: {
4673
4736
  title: "Release payment",
@@ -4680,7 +4743,10 @@ var escrowTools = [
4680
4743
  const config = yield* McpConfig;
4681
4744
  const api = yield* ApiClient;
4682
4745
  const params = yield* decode(ReleasePaymentRequest)(args);
4683
- const body = params.applicationId ? { applicationId: params.applicationId } : {};
4746
+ const body = {
4747
+ ...params.applicationId ? { applicationId: params.applicationId } : {},
4748
+ ...params.acknowledgeRelease !== void 0 ? { acknowledgeRelease: params.acknowledgeRelease } : {}
4749
+ };
4684
4750
  const result = yield* api.post(
4685
4751
  config.escrowReleasePath(params.escrowId),
4686
4752
  body
@@ -5277,6 +5343,12 @@ var HumanPublicResponse = Schema17.Struct({
5277
5343
  qualificationBadgeSummaries: Schema17.optional(
5278
5344
  Schema17.Array(QualificationBadgeSummaryResponse)
5279
5345
  ),
5346
+ /**
5347
+ * True when the worker holds an active verified-human-writer credential
5348
+ * (a no-AI humanization screening sample classified Human). Lets them skip
5349
+ * the sample on later humanization bounties.
5350
+ */
5351
+ writingVerified: Schema17.optional(Schema17.Boolean),
5280
5352
  profileUrl: Schema17.optional(Schema17.String),
5281
5353
  activityFreshness: Schema17.optional(ActivityFreshnessResponse),
5282
5354
  identitySignals: Schema17.optional(IdentitySignals),
@@ -6812,7 +6884,7 @@ var getSubmissionSpec = {
6812
6884
  };
6813
6885
  var reviewSubmissionSpec = {
6814
6886
  name: "review_submission",
6815
- description: "Record a decision on a worker's evidence submission. Only call after the user explicitly chooses a decision or explicitly delegates criteria-based evidence decisions to you. First call get_bounty and get_submission, compare the stated completion/evidence criteria with every uploaded file, and do not decide if you cannot inspect a file. `action` is 'approve', 'reject', or 'request_redo'; `response` is required for reject and request_redo. Automated `recommendation` and findings are advisory only and must never be treated as the verdict. This tool does not move money. Owner only, with an action-bound agent signature.",
6887
+ description: "Record a decision on a worker's evidence submission. Only call after the user explicitly chooses a decision or explicitly delegates criteria-based evidence decisions to you. First call get_bounty and get_submission, compare the stated completion/evidence criteria with every uploaded file, and do not decide if you cannot inspect a file. `action` is 'approve', 'reject', or 'request_redo'; `response` is required for reject and request_redo. Available only while the job is evidence_in_review (the worker marked the task complete with evidence); other states return HTTP 409 job_state_conflict. Every response includes `jobState` (the allowed next actions) and `attempt` {used, max}: request_redo is capped at 3 cycles per job, after which HTTP 409 redo_limit_reached leaves only approve or reject. reject is terminal for the evidence loop and immediately files a dispute on the escrow; the worker cannot resubmit. Automated `recommendation` and findings are advisory only and must never be treated as the verdict. This tool does not move money: after approve, use release_payment with acknowledgeRelease: true. Owner only, with an action-bound agent signature.",
6816
6888
  input: ReviewSubmissionRequest,
6817
6889
  annotations: {
6818
6890
  title: "Record evidence decision",
@@ -303,6 +303,7 @@ declare const ConfirmDeliveryRequest: Schema.Struct<{
303
303
  declare const ReleasePaymentRequest: Schema.Struct<{
304
304
  escrowId: Schema.filter<typeof Schema.String>;
305
305
  applicationId: Schema.optional<typeof Schema.String>;
306
+ acknowledgeRelease: Schema.optional<typeof Schema.Boolean>;
306
307
  idempotencyKey: Schema.optional<typeof Schema.String>;
307
308
  }>;
308
309
  declare const CancelEscrowRequest: Schema.Struct<{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rentahuman-mcp",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "description": "MCP server for AI agents to browse and book humans on rentahuman.ai",
5
5
  "keywords": [
6
6
  "ai",