{"base_url":"https://www.s5jobs.com/api/v1","auth":{"type":"bearer","header":"Authorization: Bearer <token>","obtain":"Call register_account once, then use the returned token until it expires (3h). Use request_login_token to refresh."},"handover":{"error_code":"AWAITING_HUMAN","webhook_events":["human_required","human_resolved"],"signature_header":"x-jobsite-signature"},"tools":[{"type":"function","function":{"name":"register_account","description":"Register an agency or job seeker; emails a 6-digit code to exchange via verify_code for a Bearer token.","parameters":{"type":"object","properties":{"legalName":{"type":"string","minLength":1},"contactName":{"type":"string","minLength":1},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string"},"address":{"type":"string"},"country":{"type":"string","minLength":1},"password":{"type":"string","minLength":8},"agreedToTerms":{"type":"boolean"}},"required":["legalName","contactName","email","country","password"],"additionalProperties":false}},"metadata":{"method":"POST","path":"/auth/register","requestKind":"body","requiresAuth":false,"audience":"either"}},{"type":"function","function":{"name":"request_login_code","description":"Email a fresh 6-digit sign-in code to your registered address; exchange it via verify_code.","parameters":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["email"],"additionalProperties":false}},"metadata":{"method":"POST","path":"/auth/login","requestKind":"body","requiresAuth":false,"audience":"either"}},{"type":"function","function":{"name":"verify_code","description":"Exchange the emailed 6-digit code for a Bearer token (3-hour TTL).","parameters":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"code":{"type":"string","pattern":"^\\d{6}$"}},"required":["email","code"],"additionalProperties":false}},"metadata":{"method":"POST","path":"/auth/verify-code","requestKind":"body","requiresAuth":false,"audience":"either"}},{"type":"function","function":{"name":"whoami","description":"Return the currently-authenticated user and tenant.","parameters":{"type":"object","properties":{}}},"metadata":{"method":"GET","path":"/auth/me","requestKind":null,"requiresAuth":true,"audience":"either"}},{"type":"function","function":{"name":"browse_jobs","description":"Search every published job across the platform; no account required. Returns compact rows — use view_job for full detail.","parameters":{"type":"object","properties":{"keyword":{"type":"string"},"location":{"type":"string"},"workMode":{"type":"string","enum":["remote","onsite","hybrid"]},"employmentType":{"type":"string","enum":["full_time","part_time","contract","temporary","internship"]},"salaryMin":{"type":"number","exclusiveMinimum":0},"salaryMax":{"type":"number","exclusiveMinimum":0},"experienceLevel":{"type":"string","enum":["entry","mid","senior","lead","executive"]},"skills":{"type":"string"},"country":{"type":"string"},"postedAfter":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"page":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"pageSize":{"default":5,"type":"integer","minimum":1,"maximum":50}},"required":["page","pageSize"],"additionalProperties":false}},"metadata":{"method":"GET","path":"/jobs/public","requestKind":"query","requiresAuth":false,"audience":"either"}},{"type":"function","function":{"name":"view_job","description":"Fetch full detail for a single published job by id; no account required.","parameters":{"type":"object","properties":{"jobId":{"type":"string","description":"Path parameter — jobId"}},"required":["jobId"]}},"metadata":{"method":"GET","path":"/jobs/public/{jobId}","requestKind":null,"requiresAuth":false,"audience":"either"}},{"type":"function","function":{"name":"create_job","description":"Create a draft job posting; title and description are content-moderated.","parameters":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"jobReference":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","minLength":1,"maxLength":10000},"employmentType":{"type":"string","enum":["full_time","part_time","contract","temporary","internship"]},"workMode":{"type":"string","enum":["remote","onsite","hybrid"]},"country":{"type":"string","minLength":2,"maxLength":100},"location":{"type":"string","maxLength":255},"clientName":{"type":"string","maxLength":255},"salaryMin":{"type":"number","exclusiveMinimum":0},"salaryMax":{"type":"number","exclusiveMinimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"skills":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"experienceLevel":{"type":"string","enum":["entry","mid","senior","lead","executive"]},"education":{"type":"string","maxLength":255},"closingDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"applicationNotes":{"type":"string","maxLength":5000}},"required":["title","jobReference","description","employmentType","workMode","country"],"additionalProperties":false}},"metadata":{"method":"POST","path":"/jobs","requestKind":"body","requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"update_job","description":"Update one of your jobs; locked while payment is pending, and title/description edits re-trigger moderation.","parameters":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"jobReference":{"type":"string","minLength":1,"maxLength":100},"description":{"type":"string","minLength":1,"maxLength":10000},"employmentType":{"type":"string","enum":["full_time","part_time","contract","temporary","internship"]},"workMode":{"type":"string","enum":["remote","onsite","hybrid"]},"country":{"type":"string","minLength":2,"maxLength":100},"location":{"type":"string","maxLength":255},"clientName":{"type":"string","maxLength":255},"salaryMin":{"type":"number","exclusiveMinimum":0},"salaryMax":{"type":"number","exclusiveMinimum":0},"currency":{"type":"string","minLength":3,"maxLength":3},"skills":{"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"experienceLevel":{"type":"string","enum":["entry","mid","senior","lead","executive"]},"education":{"type":"string","maxLength":255},"closingDate":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"applicationNotes":{"type":"string","maxLength":5000},"jobId":{"type":"string","description":"Path parameter — jobId"}},"additionalProperties":false,"required":["jobId"]}},"metadata":{"method":"PATCH","path":"/jobs/{jobId}","requestKind":"body","requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"get_job","description":"Fetch full detail for one of your tenant's jobs.","parameters":{"type":"object","properties":{"jobId":{"type":"string","description":"Path parameter — jobId"}},"required":["jobId"]}},"metadata":{"method":"GET","path":"/jobs/{jobId}","requestKind":null,"requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"list_my_jobs","description":"List all jobs owned by your tenant, any status.","parameters":{"type":"object","properties":{}}},"metadata":{"method":"GET","path":"/jobs","requestKind":null,"requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"search_jobs","description":"Search your tenant's own published jobs; returns compact rows — use get_job for full detail.","parameters":{"type":"object","properties":{"keyword":{"type":"string"},"location":{"type":"string"},"workMode":{"type":"string","enum":["remote","onsite","hybrid"]},"employmentType":{"type":"string","enum":["full_time","part_time","contract","temporary","internship"]},"salaryMin":{"type":"number","exclusiveMinimum":0},"salaryMax":{"type":"number","exclusiveMinimum":0},"experienceLevel":{"type":"string","enum":["entry","mid","senior","lead","executive"]},"skills":{"type":"string"},"country":{"type":"string"},"postedAfter":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"page":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991},"pageSize":{"default":5,"type":"integer","minimum":1,"maximum":50}},"required":["page","pageSize"],"additionalProperties":false}},"metadata":{"method":"GET","path":"/jobs/search","requestKind":"query","requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"pay_for_job","description":"Start Stripe Checkout for a 30-day listing; the first 10 posts per tenant are free.","parameters":{"type":"object","properties":{"jobId":{"type":"string","description":"Path parameter — jobId"}},"required":["jobId"]}},"metadata":{"method":"POST","path":"/jobs/{jobId}/pay","requestKind":null,"requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"publish_job","description":"Publish a paid job so candidates can apply.","parameters":{"type":"object","properties":{"jobId":{"type":"string","description":"Path parameter — jobId"}},"required":["jobId"]}},"metadata":{"method":"POST","path":"/jobs/{jobId}/publish","requestKind":null,"requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"list_applications_for_job","description":"List applications to one of your jobs; optional `decision` filter (pending, shortlisted, manually_validated, rejected).","parameters":{"type":"object","properties":{"jobId":{"type":"string","description":"Path parameter — jobId"}},"required":["jobId"]}},"metadata":{"method":"GET","path":"/jobs/{jobId}/applications","requestKind":null,"requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"get_application","description":"Fetch one application including the candidate's CV as markdown.","parameters":{"type":"object","properties":{"jobId":{"type":"string","description":"Path parameter — jobId"},"applicationId":{"type":"string","description":"Path parameter — applicationId"}},"required":["jobId","applicationId"]}},"metadata":{"method":"GET","path":"/jobs/{jobId}/applications/{applicationId}","requestKind":null,"requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"shortlist_applications","description":"Shortlist up to 5 applications for a job.","parameters":{"type":"object","properties":{"applicationIds":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1}},"jobId":{"type":"string","description":"Path parameter — jobId"}},"required":["applicationIds","jobId"],"additionalProperties":false}},"metadata":{"method":"POST","path":"/jobs/{jobId}/applications/shortlist","requestKind":"body","requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"score_application","description":"Score a candidate 1-5 against the job with a short private matchReason; then shortlist or reject.","parameters":{"type":"object","properties":{"matchScore":{"type":"integer","minimum":1,"maximum":5},"matchReason":{"type":"string","minLength":1,"maxLength":1000},"jobId":{"type":"string","description":"Path parameter — jobId"},"applicationId":{"type":"string","description":"Path parameter — applicationId"}},"required":["matchScore","jobId","applicationId"],"additionalProperties":false}},"metadata":{"method":"POST","path":"/jobs/{jobId}/applications/{applicationId}/score","requestKind":"body","requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"reject_application","description":"Reject an application with a polite, specific reason that is shown to the candidate.","parameters":{"type":"object","properties":{"rejectionReason":{"type":"string","minLength":10,"maxLength":1000},"jobId":{"type":"string","description":"Path parameter — jobId"},"applicationId":{"type":"string","description":"Path parameter — applicationId"}},"required":["rejectionReason","jobId","applicationId"],"additionalProperties":false}},"metadata":{"method":"POST","path":"/jobs/{jobId}/applications/{applicationId}/reject","requestKind":"body","requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"mark_application_validated","description":"Mark a shortlisted application as validated after a human reviewer has signed off.","parameters":{"type":"object","properties":{"jobId":{"type":"string","description":"Path parameter — jobId"},"applicationId":{"type":"string","description":"Path parameter — applicationId"}},"required":["jobId","applicationId"]}},"metadata":{"method":"POST","path":"/jobs/{jobId}/applications/{applicationId}/manually-validate","requestKind":null,"requiresAuth":true,"audience":"poster"}},{"type":"function","function":{"name":"submit_application","description":"Apply to a published job; requires a registered account.","parameters":{"type":"object","properties":{"applicantName":{"type":"string","minLength":1,"maxLength":255},"applicantEmail":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"applicantPhone":{"type":"string","maxLength":20},"coverNote":{"type":"string","maxLength":5000},"jobId":{"type":"string","minLength":1}},"required":["applicantName","applicantEmail","jobId"],"additionalProperties":false}},"metadata":{"method":"POST","path":"/applications","requestKind":"body","requiresAuth":true,"audience":"seeker"}},{"type":"function","function":{"name":"list_my_applications","description":"List applications you've submitted, each with the publisher's decision so far.","parameters":{"type":"object","properties":{}}},"metadata":{"method":"GET","path":"/applications","requestKind":null,"requiresAuth":true,"audience":"seeker"}},{"type":"function","function":{"name":"configure_handover_webhook","description":"Register the webhook URL for human-handover events; the webhookSecret is returned once.","parameters":{"type":"object","properties":{}}},"metadata":{"method":"PATCH","path":"/tenants/me","requestKind":null,"requiresAuth":true,"audience":"either"}}]}