rentahuman-mcp 3.2.1 → 3.4.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 +29 -1
- package/dist/serve.js +29 -3
- package/dist/types/index.d.ts +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -87,7 +87,7 @@ removes them from the preferred list.
|
|
|
87
87
|
|
|
88
88
|
- **create_taste_run**: Pay 1–100 vetted creative respondents to compare 2–6 artifacts. Pass `idempotencyKey`; when omitted, the tool derives a deterministic key from the parameters and sends it as `Idempotency-Key` so retries cannot double-charge.
|
|
89
89
|
- **get_taste_run**: Check live accepted-vote and outreach progress, then retrieve the winner, summary, quotes, and degraded flag after it closes.
|
|
90
|
-
- **create_qa_run_template**: Create a one-time or recurring human QA template for a URL, evidence mode, tester count, and wallet-funded budget. Set `cadence: "custom"` with `cadenceDays` from 1–30 for a custom interval. Pass a stable `idempotencyKey` when an external workflow may retry. `testerStartMessage` can contain private, test-only setup details sent after acceptance. Video runs require narrated screen and microphone recording, and their reports include transcript-backed timestamps.
|
|
90
|
+
- **create_qa_run_template**: Create a one-time or recurring human QA template for a URL, evidence mode, tester count, and wallet-funded budget. Set `cadence: "custom"` with `cadenceDays` from 1–30 for a custom interval. Pass a stable `idempotencyKey` when an external workflow may retry. `testerStartMessage` can contain private, test-only setup details sent after acceptance. Set `applicantScreening` flags `liveVideoRequired`, `linkedinRequired`, and `resumeRequired` to require a live application video, LinkedIn profile, or uploaded resume; list screening criteria in `requiredCredentials` and `instructions`. Video runs require narrated screen and microphone recording, and their reports include transcript-backed timestamps.
|
|
91
91
|
- **get_qa_run**: Get a QA run with its report, finding diff, escalation summaries, and allowlisted application submission evidence. Read `applications[].submission.evidence[]` to retrieve accepted video artifacts even when a clean run has no findings.
|
|
92
92
|
- **list_qa_runs**: List owned QA runs, optionally filtered by `templateId`.
|
|
93
93
|
- **stop_qa_run**: Stop one active owned QA run without pausing its recurring schedule. New testers are rejected, active assignments remain payable on approval, and remaining funds are refunded after settlement. History and evidence are retained. The MCP client guardrail allows 20 calls/minute per agent; the API additionally enforces 30/minute burst and 300/hour per owner.
|
|
@@ -211,9 +211,11 @@ worker (`escrow_recipient_mismatch`).
|
|
|
211
211
|
To target every eligible worker in one country, pass `location` with the ISO
|
|
212
212
|
country code and `isRemoteAllowed: false`, omitting `city` and `state`. The
|
|
213
213
|
same shape works with `update_bounty`. Platform-blocked countries are rejected.
|
|
214
|
+
To open one bounty to several countries, pass `supportedCountries` instead.
|
|
214
215
|
|
|
215
216
|
```text
|
|
216
217
|
location: { country: "US", isRemoteAllowed: false }
|
|
218
|
+
supportedCountries: ["US", "CA", "GB", "NZ", "AU"]
|
|
217
219
|
```
|
|
218
220
|
|
|
219
221
|
For ordinary accepted one-shot bounties, the worker marks the task complete by
|
|
@@ -307,6 +309,32 @@ Only workers whose profile country matches can apply or receive automatic
|
|
|
307
309
|
outreach. The country gate still applies when remote work is allowed. Include a
|
|
308
310
|
`city` for city-level targeting instead.
|
|
309
311
|
|
|
312
|
+
To recruit across several countries, pass `supportedCountries` with the ISO
|
|
313
|
+
codes (country names are recognized too). Omit `location.country`, or keep it
|
|
314
|
+
and make sure it appears in the list:
|
|
315
|
+
|
|
316
|
+
```json
|
|
317
|
+
{
|
|
318
|
+
"location": { "isRemoteAllowed": true },
|
|
319
|
+
"supportedCountries": ["US", "CA", "GB", "NZ", "AU"],
|
|
320
|
+
"identityRequired": true
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
The list is normalized to uppercase ISO codes and deduplicated; blocked or
|
|
325
|
+
unrecognized countries are rejected with a `400`. With `identityRequired`, the
|
|
326
|
+
list is enforced against the applicant's verified document country. Use
|
|
327
|
+
`isRemoteAllowed: true`: an on-site bounty (`isRemoteAllowed: false`) with a
|
|
328
|
+
location country is gated by that country alone and accepts no other list. On
|
|
329
|
+
`update_bounty`, send the full new list to change it. Omitting it leaves an
|
|
330
|
+
explicit multi-country list in place, so editing `location` alone never drops
|
|
331
|
+
it; legacy bounties that only mirror a country-only `location` keep deriving
|
|
332
|
+
that single country from `location`. An empty array is stored as an explicit
|
|
333
|
+
empty list; it never lifts a country-only or on-site country restriction
|
|
334
|
+
(remove `location.country` first), and a remote city location with a country
|
|
335
|
+
stays unrestricted as before. `aiManaged` bounties do not accept
|
|
336
|
+
`supportedCountries`.
|
|
337
|
+
|
|
310
338
|
#### Completion deadline (auto-reassign)
|
|
311
339
|
|
|
312
340
|
The bounty-level `deadline` is the application cutoff. At or after that time,
|
package/dist/serve.js
CHANGED
|
@@ -1326,6 +1326,7 @@ var agentCheckoutTools = [
|
|
|
1326
1326
|
var BOUNTY_PRICE_TYPES = ["fixed", "hourly"];
|
|
1327
1327
|
var BOUNTY_MIN_PRICE_USD = 3;
|
|
1328
1328
|
var MAX_EXCLUDED_PARTICIPANT_SOURCE_BOUNTIES = 1e3;
|
|
1329
|
+
var MAX_BOUNTY_SUPPORTED_COUNTRIES = 250;
|
|
1329
1330
|
var HUMANIZATION_FORMATS = ["text"];
|
|
1330
1331
|
var HUMANIZATION_TRANSFORMATIONS = [
|
|
1331
1332
|
"paraphrase",
|
|
@@ -1480,6 +1481,11 @@ var BountyLocationRequest = Schema5.Struct({
|
|
|
1480
1481
|
isRemoteAllowed: Schema5.optional(Schema5.Boolean)
|
|
1481
1482
|
});
|
|
1482
1483
|
var BOUNTY_LOCATION_DESCRIPTION = "Worker location target. Set country to an ISO country code without city or state to target every eligible worker in that country, including when remote work is allowed. Include city (and optionally state/country) for city-level targeting. Platform-blocked countries are rejected.";
|
|
1484
|
+
var BountySupportedCountriesRequest = Schema5.Array(
|
|
1485
|
+
Schema5.String.pipe(Schema5.minLength(1), Schema5.maxLength(100))
|
|
1486
|
+
).pipe(Schema5.maxItems(MAX_BOUNTY_SUPPORTED_COUNTRIES));
|
|
1487
|
+
var BOUNTY_SUPPORTED_COUNTRIES_CREATE_DESCRIPTION = 'Countries whose workers may see and apply, as ISO country codes (country names are also recognized), e.g. ["US", "CA", "GB", "NZ", "AU"]. Omit it to keep the location-derived policy: a country-only location restricts the bounty to that country, an on-site city location keeps its existing country gate, and other locations stay unrestricted. When location.country is set it must appear in this list, and on-site bounties (isRemoteAllowed false) with a location country accept only that one country; use isRemoteAllowed true for a remote multi-country bounty. Platform-blocked countries and unrecognized values are rejected. With identityRequired, the list is enforced against the verified document country. Not accepted on aiManaged bounties.';
|
|
1488
|
+
var BOUNTY_SUPPORTED_COUNTRIES_UPDATE_DESCRIPTION = 'Replace the eligible-country list with the full new list of ISO country codes (country names are also recognized), e.g. ["US", "CA", "GB", "NZ", "AU"]. Omitting it leaves an explicit multi-country list in place, so a location-only edit never drops it; legacy bounties that only mirror a country-only location keep deriving that single country from location. On-site bounties (isRemoteAllowed false) with a location country accept only that one country. An empty array is stored as an explicit empty list; it never lifts a country-only or on-site country restriction (remove location.country first), while a remote city location with a country stays unrestricted as before. When location.country is set it must appear in the list. Platform-blocked countries and unrecognized values are rejected.';
|
|
1483
1489
|
var LIFECYCLE_MESSAGES_DESCRIPTION = "Auto-sent to the doer in the bounty conversation on lifecycle transitions. Supports {{name}}, {{bountyTitle}}, {{deadline}}, {{reason}} interpolation. Accepted/submission templates are only ever delivered to accepted applicants.";
|
|
1484
1490
|
var LifecycleMessageTemplateSchema = Schema5.String.pipe(
|
|
1485
1491
|
Schema5.maxLength(BOUNTY_LIFECYCLE_TEMPLATE_MAX_LENGTH)
|
|
@@ -1627,6 +1633,11 @@ var CreateBountyRequest = Schema5.Struct({
|
|
|
1627
1633
|
location: Schema5.optional(BountyLocationRequest).annotations({
|
|
1628
1634
|
description: BOUNTY_LOCATION_DESCRIPTION
|
|
1629
1635
|
}),
|
|
1636
|
+
supportedCountries: Schema5.optional(
|
|
1637
|
+
BountySupportedCountriesRequest
|
|
1638
|
+
).annotations({
|
|
1639
|
+
description: BOUNTY_SUPPORTED_COUNTRIES_CREATE_DESCRIPTION
|
|
1640
|
+
}),
|
|
1630
1641
|
deadline: Schema5.optional(Schema5.String).annotations({
|
|
1631
1642
|
description: "Application cutoff (ISO 8601 format). At or after this time, the listing is removed from discovery and no new applications or direct uploads are accepted. Use completionWindowHours for a post-acceptance completion deadline."
|
|
1632
1643
|
}),
|
|
@@ -1892,6 +1903,11 @@ var UpdateBountyRequest = Schema5.Struct({
|
|
|
1892
1903
|
location: Schema5.optional(BountyLocationRequest).annotations({
|
|
1893
1904
|
description: BOUNTY_LOCATION_DESCRIPTION
|
|
1894
1905
|
}),
|
|
1906
|
+
supportedCountries: Schema5.optional(
|
|
1907
|
+
BountySupportedCountriesRequest
|
|
1908
|
+
).annotations({
|
|
1909
|
+
description: BOUNTY_SUPPORTED_COUNTRIES_UPDATE_DESCRIPTION
|
|
1910
|
+
}),
|
|
1895
1911
|
status: Schema5.optional(
|
|
1896
1912
|
Schema5.Literal("open", "in_review", "paused", "closed")
|
|
1897
1913
|
).annotations({
|
|
@@ -2383,7 +2399,7 @@ var CancelBountyRequest = BountyCancellationFeedbackRequest.pipe(
|
|
|
2383
2399
|
);
|
|
2384
2400
|
var createBountySpec = {
|
|
2385
2401
|
name: "create_bounty",
|
|
2386
|
-
description: `Create a one-shot task bounty for humans to apply to. Dry-run preview.fundingTotal is the total funding requirement before any existing wallet balance is applied; show that estimate to the operator before posting. Live pending_deposit responses include checkout_total, the exact hosted charge after wallet balance is applied, next to deposit_url. To target an entire country, pass location with an ISO country code and isRemoteAllowed=false while omitting city and state. Standard application bounties support application detail items via applicationDetails, including text questions, optional or required acknowledgment checkboxes, one-file uploads (allowedFileTypes: image, docx, pdf, txt, video, audio), and one required live_video field whose label is the script applicants record with the in-browser camera. For appearance-based bounties where the worker appears on camera or their presence is part of the deliverable (sign holding, UGC, sponsored posts, on-camera video, promo/GTM appearances), always include one required live_video field with a label asking the applicant to explain in two sentences why they are a good fit. Set liveCaptureRequirement to photo or video when accepted workers must capture new camera evidence after acceptance; neither camera-only workflow is cryptographic liveness verification. Do not ask for passwords, OTP/2FA codes, API keys, private keys, seed phrases, government IDs, bank/card details, exact home addresses, dates of birth, or other sensitive personal information. Blank rows are ignored; uploads are capped at 3 fields, acknowledgments at 5 fields, and live video at 1 field. Direct-review photo, video, or document collection bounties use submissionMode and matching upload settings instead of applicationDetails. lifecycleMessages can define auto-message templates for acceptance, rejection, and submission review transitions. Set completionWindowHours (any whole number of hours from 1 to 720, e.g. 36) to give confirmed workers a completion deadline: overdue seats are automatically released and reopened for other applicants (auto-reassign), workers can request extensions, and you approve/deny/grant them per worker. Pass optional \`idempotencyKey\` to make this safe to retry (a replayed key returns the original result instead of duplicating). Applicants are auto-reviewed by default (autoAccept, default true): deterministic checks always run and an AI review runs only for free-text screening answers \u2014 qualified applicants are accepted, clear mismatches rejected with a reason, uncertain cases left pending for manual review; pass autoAccept: false to review and accept every application yourself; on micCheckRequired bounties, set autoAcceptMinMicScore (1-5) to make the mic score a hard cutoff: applications below it are auto-rejected, at/above proceed toward acceptance, and unscored recordings stay pending. When omitted, the platform default 3.0 applies and lower scores only stay pending for manual review. To keep previous participants out, pass excludedParticipantSourceBountyIds with up to ${MAX_EXCLUDED_PARTICIPANT_SOURCE_BOUNTIES} ids of your OWN earlier bounties: any worker who was ever accepted on one of them cannot see or apply to the new bounty, and you can change the list later with update_bounty. AI-managed, QA, and taste run bounties, and never-funded drafts are rejected as sources. BETA: pass aiManaged: true to have the platform fully manage the bounty \u2014 automated recruiting, vetting, submission review, payment release, and a final report. Fixed price USD only, 1-50 spots. Poll the bounty's managed run or subscribe to run.report_ready for the finished work.`,
|
|
2402
|
+
description: `Create a one-shot task bounty for humans to apply to. Dry-run preview.fundingTotal is the total funding requirement before any existing wallet balance is applied; show that estimate to the operator before posting. Live pending_deposit responses include checkout_total, the exact hosted charge after wallet balance is applied, next to deposit_url. To target an entire country, pass location with an ISO country code and isRemoteAllowed=false while omitting city and state. To open one bounty to several countries, pass supportedCountries with the ISO codes (e.g. ["US", "CA", "GB", "NZ", "AU"]); when location.country is set it must be in that list, on-site bounties (isRemoteAllowed=false) accept only their location country, and with identityRequired the list is enforced against the verified document country. Standard application bounties support application detail items via applicationDetails, including text questions, optional or required acknowledgment checkboxes, one-file uploads (allowedFileTypes: image, docx, pdf, txt, video, audio), and one required live_video field whose label is the script applicants record with the in-browser camera. For appearance-based bounties where the worker appears on camera or their presence is part of the deliverable (sign holding, UGC, sponsored posts, on-camera video, promo/GTM appearances), always include one required live_video field with a label asking the applicant to explain in two sentences why they are a good fit. Set liveCaptureRequirement to photo or video when accepted workers must capture new camera evidence after acceptance; neither camera-only workflow is cryptographic liveness verification. Do not ask for passwords, OTP/2FA codes, API keys, private keys, seed phrases, government IDs, bank/card details, exact home addresses, dates of birth, or other sensitive personal information. Blank rows are ignored; uploads are capped at 3 fields, acknowledgments at 5 fields, and live video at 1 field. Direct-review photo, video, or document collection bounties use submissionMode and matching upload settings instead of applicationDetails. lifecycleMessages can define auto-message templates for acceptance, rejection, and submission review transitions. Set completionWindowHours (any whole number of hours from 1 to 720, e.g. 36) to give confirmed workers a completion deadline: overdue seats are automatically released and reopened for other applicants (auto-reassign), workers can request extensions, and you approve/deny/grant them per worker. Pass optional \`idempotencyKey\` to make this safe to retry (a replayed key returns the original result instead of duplicating). Applicants are auto-reviewed by default (autoAccept, default true): deterministic checks always run and an AI review runs only for free-text screening answers \u2014 qualified applicants are accepted, clear mismatches rejected with a reason, uncertain cases left pending for manual review; pass autoAccept: false to review and accept every application yourself; on micCheckRequired bounties, set autoAcceptMinMicScore (1-5) to make the mic score a hard cutoff: applications below it are auto-rejected, at/above proceed toward acceptance, and unscored recordings stay pending. When omitted, the platform default 3.0 applies and lower scores only stay pending for manual review. To keep previous participants out, pass excludedParticipantSourceBountyIds with up to ${MAX_EXCLUDED_PARTICIPANT_SOURCE_BOUNTIES} ids of your OWN earlier bounties: any worker who was ever accepted on one of them cannot see or apply to the new bounty, and you can change the list later with update_bounty. AI-managed, QA, and taste run bounties, and never-funded drafts are rejected as sources. BETA: pass aiManaged: true to have the platform fully manage the bounty \u2014 automated recruiting, vetting, submission review, payment release, and a final report. Fixed price USD only, 1-50 spots. Poll the bounty's managed run or subscribe to run.report_ready for the finished work.`,
|
|
2387
2403
|
input: CreateBountyRequest
|
|
2388
2404
|
};
|
|
2389
2405
|
var getBountySpec = {
|
|
@@ -2424,7 +2440,7 @@ var decideExtensionSpec = {
|
|
|
2424
2440
|
};
|
|
2425
2441
|
var updateBountySpec = {
|
|
2426
2442
|
name: "update_bounty",
|
|
2427
|
-
description: `Update ordinary one-shot bounty details. You can modify the title, description, price, application-cutoff deadline, location, requiredLinks, applicationDetails, lifecycleMessages, liveCaptureRequirement, reactivate hidden inactive bounties, and more. The deadline stops new applications and direct uploads; completionWindowHours controls post-acceptance completion timing. To target an entire country, pass location with an ISO country code and isRemoteAllowed=false while omitting city and state. Live capture and required-link requirements can only be changed before applications are received. applicationDetails may be changed after applications are received; existing applications keep their original answers, while future applications use the latest fields. applicationDetails are application detail items for standard application bounties only; blank rows are ignored, uploads are capped at 3 fields, acknowledgments at 5 fields, and camera-only live_video at 1 required field. lifecycleMessages can define auto-message templates for acceptance, rejection, and submission review transitions. Admin-only ongoing bounty settings are intentionally not exposed through MCP. You can also pause/unpause a bounty (status 'paused' stops new applications and outreach, including on a fully staffed bounty; status 'open' resumes it, and the resumed status is derived from its seats: open, partially_filled, or assigned when every seat is still filled), close an unassigned bounty and return its unused funding (status 'closed'), increase seats via spotsAvailable, keep pending applicants on fill via keepApplicantsOnFill, and change the auto-reassign completion deadline via completionWindowHours (any whole number of hours from 1 to 720; null disables; only affects seats confirmed after the edit), and toggle automatic applicant review via autoAccept (applications received while off stay pending; toggling on affects future applications only; ignored on aiManaged bounties) or adjust its mic-quality cutoff via autoAcceptMinMicScore (1-5 \u2014 applications scoring below your configured cutoff are auto-rejected, at/above proceed; null resets to the 3.0 default, below which applications only stay pending). The exclude-previous-participants list can be changed after posting: pass excludedParticipantSourceBountyIds with the full new list of up to ${MAX_EXCLUDED_PARTICIPANT_SOURCE_BOUNTIES} ids of your OWN earlier bounties (an empty array clears it); the same source rules as create_bounty apply, and a bounty can never exclude itself. Use cancel_bounty for cancellation and refund handling. Work completion and payment are system-managed from escrow and payout evidence; status 'completed' and 'paid' cannot be set directly.`,
|
|
2443
|
+
description: `Update ordinary one-shot bounty details. You can modify the title, description, price, application-cutoff deadline, location, requiredLinks, applicationDetails, lifecycleMessages, liveCaptureRequirement, reactivate hidden inactive bounties, and more. The deadline stops new applications and direct uploads; completionWindowHours controls post-acceptance completion timing. To target an entire country, pass location with an ISO country code and isRemoteAllowed=false while omitting city and state. To change which countries may apply, pass supportedCountries with the full new list of ISO codes; omitting it leaves an explicit multi-country list in place (legacy bounties that only mirror a country-only location keep deriving that country from location), an empty array is stored as an explicit empty list but never lifts a country-only or on-site country restriction, and on-site bounties accept only their location country. Live capture and required-link requirements can only be changed before applications are received. applicationDetails may be changed after applications are received; existing applications keep their original answers, while future applications use the latest fields. applicationDetails are application detail items for standard application bounties only; blank rows are ignored, uploads are capped at 3 fields, acknowledgments at 5 fields, and camera-only live_video at 1 required field. lifecycleMessages can define auto-message templates for acceptance, rejection, and submission review transitions. Admin-only ongoing bounty settings are intentionally not exposed through MCP. You can also pause/unpause a bounty (status 'paused' stops new applications and outreach, including on a fully staffed bounty; status 'open' resumes it, and the resumed status is derived from its seats: open, partially_filled, or assigned when every seat is still filled), close an unassigned bounty and return its unused funding (status 'closed'), increase seats via spotsAvailable, keep pending applicants on fill via keepApplicantsOnFill, and change the auto-reassign completion deadline via completionWindowHours (any whole number of hours from 1 to 720; null disables; only affects seats confirmed after the edit), and toggle automatic applicant review via autoAccept (applications received while off stay pending; toggling on affects future applications only; ignored on aiManaged bounties) or adjust its mic-quality cutoff via autoAcceptMinMicScore (1-5 \u2014 applications scoring below your configured cutoff are auto-rejected, at/above proceed; null resets to the 3.0 default, below which applications only stay pending). The exclude-previous-participants list can be changed after posting: pass excludedParticipantSourceBountyIds with the full new list of up to ${MAX_EXCLUDED_PARTICIPANT_SOURCE_BOUNTIES} ids of your OWN earlier bounties (an empty array clears it); the same source rules as create_bounty apply, and a bounty can never exclude itself. Use cancel_bounty for cancellation and refund handling. Work completion and payment are system-managed from escrow and payout evidence; status 'completed' and 'paid' cannot be set directly.`,
|
|
2428
2444
|
input: UpdateBountyRequest
|
|
2429
2445
|
};
|
|
2430
2446
|
var cancelBountySpec = {
|
|
@@ -3345,6 +3361,7 @@ var handleCreateBounty = (args) => Effect9.gen(function* () {
|
|
|
3345
3361
|
liveCaptureRequirement: params.liveCaptureRequirement || null,
|
|
3346
3362
|
category: params.category || "computer-gigs",
|
|
3347
3363
|
location: params.location || { isRemoteAllowed: true },
|
|
3364
|
+
supportedCountries: params.supportedCountries ?? null,
|
|
3348
3365
|
deadline: params.deadline || null,
|
|
3349
3366
|
estimatedHours: params.estimatedHours,
|
|
3350
3367
|
estimatedDurationUnit: params.estimatedDurationUnit || null,
|
|
@@ -3458,6 +3475,7 @@ var handleCreateBounty = (args) => Effect9.gen(function* () {
|
|
|
3458
3475
|
skillsNeeded: params.skillsNeeded || [],
|
|
3459
3476
|
category: params.category || "computer-gigs",
|
|
3460
3477
|
location: params.location || { isRemoteAllowed: true },
|
|
3478
|
+
...params.supportedCountries !== void 0 ? { supportedCountries: params.supportedCountries } : {},
|
|
3461
3479
|
deadline: params.deadline,
|
|
3462
3480
|
estimatedHours: params.estimatedHours,
|
|
3463
3481
|
priceType: params.priceType,
|
|
@@ -6327,6 +6345,11 @@ var QaChecklistItemRequest = Schema22.Struct({
|
|
|
6327
6345
|
Schema22.Array(QaInstructionMediaRequest).pipe(Schema22.maxItems(4))
|
|
6328
6346
|
)
|
|
6329
6347
|
});
|
|
6348
|
+
var QaApplicantScreeningRequest = Schema22.Struct({
|
|
6349
|
+
liveVideoRequired: Schema22.optional(Schema22.Boolean),
|
|
6350
|
+
linkedinRequired: Schema22.optional(Schema22.Boolean),
|
|
6351
|
+
resumeRequired: Schema22.optional(Schema22.Boolean)
|
|
6352
|
+
});
|
|
6330
6353
|
var CreateQaRunTemplateRequest = Schema22.Struct({
|
|
6331
6354
|
name: Schema22.String.pipe(Schema22.minLength(3), Schema22.maxLength(120)),
|
|
6332
6355
|
targetUrl: HttpUrl,
|
|
@@ -6365,6 +6388,9 @@ var CreateQaRunTemplateRequest = Schema22.Struct({
|
|
|
6365
6388
|
Schema22.lessThanOrEqualTo(20)
|
|
6366
6389
|
),
|
|
6367
6390
|
submissionMode: Schema22.Literal("photo", "video", "document"),
|
|
6391
|
+
applicantScreening: Schema22.optional(QaApplicantScreeningRequest).annotations({
|
|
6392
|
+
description: "Optional application requirements: liveVideoRequired records a live camera video, linkedinRequired requires a LinkedIn profile, and resumeRequired requires an uploaded PDF, DOCX, or TXT resume. All default to false. Screening compares submitted evidence with requiredCredentials and task instructions."
|
|
6393
|
+
}),
|
|
6368
6394
|
requiredCredentials: Schema22.optional(
|
|
6369
6395
|
Schema22.Array(
|
|
6370
6396
|
Schema22.String.pipe(Schema22.minLength(3), Schema22.maxLength(200))
|
|
@@ -6430,7 +6456,7 @@ var getTasteRunSpec = {
|
|
|
6430
6456
|
};
|
|
6431
6457
|
var createQaRunTemplateSpec = {
|
|
6432
6458
|
name: "create_qa_run_template",
|
|
6433
|
-
description: "Create and activate a one-time or recurring human QA template for a target URL. Set cadence to custom with cadenceDays from 1-30 for a custom interval. Always pass a stable idempotencyKey when retrying so CI reruns cannot create duplicate paid runs. Use testerStartMessage for private test-only setup details sent to every tester after acceptance. Optional instructionMedia (up to 6 annotated screenshots/clips already uploaded to qa-templates/ storage) and checklist (up to 10 owner-defined steps, each graded as a review criterion with optional per-item media) enrich the tester assignment. Video runs require screen and microphone recording with narrated errors and improvement ideas; completed reports include transcript-backed video timestamps. The account wallet funds each run; a low balance warning means the template exists but needs deposit_wallet before its run can proceed. Requires RENTAHUMAN_API_KEY.",
|
|
6459
|
+
description: "Create and activate a one-time or recurring human QA template for a target URL. Set cadence to custom with cadenceDays from 1-30 for a custom interval. Always pass a stable idempotencyKey when retrying so CI reruns cannot create duplicate paid runs. Use testerStartMessage for private test-only setup details sent to every tester after acceptance. Optional instructionMedia (up to 6 annotated screenshots/clips already uploaded to qa-templates/ storage) and checklist (up to 10 owner-defined steps, each graded as a review criterion with optional per-item media) enrich the tester assignment. Use applicantScreening.liveVideoRequired, applicantScreening.linkedinRequired, and applicantScreening.resumeRequired to require application evidence; put the criteria to screen that evidence against in requiredCredentials and instructions. Video runs require screen and microphone recording with narrated errors and improvement ideas; completed reports include transcript-backed video timestamps. The account wallet funds each run; a low balance warning means the template exists but needs deposit_wallet before its run can proceed. Requires RENTAHUMAN_API_KEY.",
|
|
6434
6460
|
input: CreateQaRunTemplateRequest
|
|
6435
6461
|
};
|
|
6436
6462
|
var getQaRunSpec = {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -61,6 +61,7 @@ declare const CreateBountyRequest: Schema.Struct<{
|
|
|
61
61
|
country: Schema.optional<Schema.filter<typeof Schema.String>>;
|
|
62
62
|
isRemoteAllowed: Schema.optional<typeof Schema.Boolean>;
|
|
63
63
|
}>>;
|
|
64
|
+
supportedCountries: Schema.optional<Schema.filter<Schema.Array$<Schema.filter<Schema.filter<typeof Schema.String>>>>>;
|
|
64
65
|
deadline: Schema.optional<typeof Schema.String>;
|
|
65
66
|
estimatedHours: Schema.refine<number, Schema.filter<typeof Schema.Number>>;
|
|
66
67
|
priceType: Schema.Literal<["fixed", "hourly"]>;
|
|
@@ -145,6 +146,7 @@ declare const UpdateBountyRequest: Schema.Struct<{
|
|
|
145
146
|
country: Schema.optional<Schema.filter<typeof Schema.String>>;
|
|
146
147
|
isRemoteAllowed: Schema.optional<typeof Schema.Boolean>;
|
|
147
148
|
}>>;
|
|
149
|
+
supportedCountries: Schema.optional<Schema.filter<Schema.Array$<Schema.filter<Schema.filter<typeof Schema.String>>>>>;
|
|
148
150
|
status: Schema.optional<Schema.Literal<["open", "in_review", "paused", "closed"]>>;
|
|
149
151
|
identityRequired: Schema.optional<typeof Schema.Boolean>;
|
|
150
152
|
excludedParticipantSourceBountyIds: Schema.optional<Schema.filter<Schema.Array$<typeof Schema.String>>>;
|
|
@@ -438,6 +440,11 @@ declare const CreateQaRunTemplateRequest: Schema.filter<Schema.Struct<{
|
|
|
438
440
|
payPerTesterCents: Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>;
|
|
439
441
|
testerCount: Schema.filter<Schema.filter<Schema.filter<typeof Schema.Number>>>;
|
|
440
442
|
submissionMode: Schema.Literal<["photo", "video", "document"]>;
|
|
443
|
+
applicantScreening: Schema.optional<Schema.Struct<{
|
|
444
|
+
liveVideoRequired: Schema.optional<typeof Schema.Boolean>;
|
|
445
|
+
linkedinRequired: Schema.optional<typeof Schema.Boolean>;
|
|
446
|
+
resumeRequired: Schema.optional<typeof Schema.Boolean>;
|
|
447
|
+
}>>;
|
|
441
448
|
requiredCredentials: Schema.optional<Schema.filter<Schema.Array$<Schema.filter<Schema.filter<typeof Schema.String>>>>>;
|
|
442
449
|
allowedCountries: Schema.optional<Schema.filter<Schema.Array$<Schema.refine<string, typeof Schema.String>>>>;
|
|
443
450
|
autoMode: Schema.optional<typeof Schema.Boolean>;
|