apply_to_vacancy
ChatGPTApply to an employer listing found with browse_employers / get_employer (whatever hiring track the employer posted under). Job-seeker-only write tool: it works while assistant messaging is enabled in the user's cabinet (on by default; the user can turn it off there). This opens the application thread with the user's message; the application carries the contact details and primary resume from the user's profile, and may be moderated before the employer sees it. One active application per listing: applying again after a withdrawal reactivates the earlier application with the new message. The employerId is the listing id from browse_employers / get_employer. Returns the application.
browse_employers
ChatGPTSearch public employer/vacancy listings (who is hiring). Filters: hiring track (jobType), category (ids from list_categories), location, employment type, work format, required spoken languages, relocation and hourly rate. Each result carries the listing's public card fields without contact details; get_employer returns one listing with the contact phone the employer published.
create_my_listing
ChatGPTUse this when the user wants to publish their own listing on Skilcrew: an offer of services for one-off tasks (oneOff), or a profile for a permanent or IT job search. Job-seeker-only write tool: it works while assistant posting is enabled in the user's cabinet (on by default; the user can turn it off there). The listing is moderated before it appears in Skilcrew search. Category ids come from list_categories for the same jobType. A permanent or IT listing needs a profession and the city where the user lives (currentCity) unless the profile already has one. Plan limits apply: when the user has no free listing slot the call fails with a plan-limit error. Text fields are plain UTF-8; \uXXXX escape sequences are rejected. Returns the created listing and its moderation status.
get_application_messages
ChatGPTRead the hiring-chat messages for one of the user's submitted applications, together with the thread status (active / withdrawn). Paginated: page=1 is the newest page (default page size 50, max 100).
get_conversation_messages
ChatGPTRead messages in one of the user's direct conversations from the /messages channel (service chats, and hiring chats a recruiter opened with the user), paginated. Messages may carry contact cards shared in that thread.
get_employer
ChatGPTFetch one public employer/vacancy listing by id. Returns the listing's public card fields and the employer's contact phone when they have published it.
get_listing_texts
ChatGPTShow the country-specific texts of one of the user's own listings: what a visitor from each country reads instead of the listing's main description, and whether it has passed moderation yet. Use this to see which texts a listing already has: list_my_listings shows only the original description, never these texts. listingId is the number shown on the listing card. Without "countries" the answer is a one-line summary per country (which countries have a text, its status and length) and no text bodies: a listing can carry a text for every country, and all of them at once do not fit in one answer. Full texts come back for the countries named in "countries".
get_my_plan
ChatGPTShow the user's current plan and its feature gates (listing limit, price list, video intro, ad card, request feed, etc.).
get_my_quota
ChatGPTShow the user's listing quota: used, limit and tier.
list_categories
ChatGPTList the service category tree (id, name, parentId, jobType). Filter by jobType: "oneOff", "permanent" or "it".
list_country_languages
ChatGPTWhich language a listing text should be in, country by country: one recommended language per country (the one most people there read) plus the other languages that also work there. Use this to plan the translations of a listing. With listingId the answer covers exactly the countries that listing reaches, minus its home country (the original text is shown there), with textStatus on the countries that already have a text; without listingId it is the full reference of every country Skilcrew serves. Countries come grouped by language: one translation per language covers every country in its group. The language reference itself is static and holds no personal data; with listingId the answer also reflects the reach and text statuses of the user's own listing.
list_domain_suggestions
ChatGPTList the industry/domain dictionary (English, alphabetical): the canonical names for free-text industries.
list_job_feed
ChatGPTBrowse the open service-request feed: one-off jobs that clients posted. Requires a job-seeker plan with the request-feed feature; without it the backend returns an explanatory error.
list_my_applications
ChatGPTList the applications the user submitted to vacancies, with the employer name/job type and the application status (active or withdrawn). Each item echoes the contact details the user attached to it (their own name, phone, email, social links). The hiring chat of an application is in get_application_messages.
list_my_inbox
ChatGPTService requests sent to the user's categories in the last 24h: their live leads.
list_my_listings
ChatGPTList the user's own job-seeker listings: the cards they publish so employers and clients can find them.
list_my_requests
ChatGPTService requests the user posted, including the contact details they attached to them (their own name, phone, email, social).
list_service_conversations
ChatGPTList the user's one-off service chats (the /messages channel), separate from hiring application chats. Paginated with page/limit (max 100 per page).
list_skill_suggestions
ChatGPTList the IT skill dictionary: canonical names for free-text skills, e.g. for describing the user's skills in an application message (browse_employers has no skills filter).
message_provider
ChatGPTStart a one-off service conversation with a provider (the /messages channel, separate from hiring application chats). Job-seeker-only write tool (requires assistant messaging enabled). The jobSeekerId is the provider listing id from search_providers. Returns the conversation: an existing thread with that provider is reused, otherwise a new one is created; reply_in_conversation continues it by its id.
reply_in_conversation
ChatGPTReply in an existing direct conversation the user takes part in (the /messages channel; usually a service chat from list_service_conversations). Job-seeker-only write tool (requires assistant messaging enabled). Returns the sent message.
reply_to_application
ChatGPTReply in one of the user's submitted application threads (a vacancy they applied to). Job-seeker-only write tool (requires assistant messaging enabled). The applicationId comes from list_my_applications. Returns the sent message.
reply_to_service_request
ChatGPTSubmit the user's reply to an open service request (one-off job a client posted). Job-seeker-only write tool (requires assistant messaging enabled). One active reply per request: replying again after a withdrawal reactivates the earlier reply with the new message. The reply carries the contact details from the user's profile (name, phone, email, social links). The requestId comes from list_my_inbox / list_job_feed. Returns the reply.
search_providers
ChatGPTSearch one-off service providers: people offering one-off services (plumbers, tutors, movers, …) the user can hire directly. Filters: category (ids from list_categories with jobType "oneOff") and service-zone location (regionCode → cityKey); paginated. Each result carries the listing's public card fields without contact details; message_provider takes the listing id as jobSeekerId and is how a provider is reached. Do not use this for permanent or IT vacancies: browse_employers covers those.
set_listing_countries
ChatGPTSet which countries one of the user's own listings reaches: its home country only, every country, or a specific list. This is how a listing becomes international. Job-seeker-only write tool: it works while assistant posting is enabled in the user's cabinet (on by default; the user can turn it off there). listingId is the number shown on the listing card; a number the user names is the listing id itself. International reach takes a paid plan slot: one slot covers one listing no matter how many countries, and running out fails with a plan-limit error. The call replaces the previous reach with the list it carries; "home" drops every other country and frees the paid slot. A country text (set_listing_texts) is kept only for a country the listing reaches.
set_listing_texts
ChatGPTWrite the listing text shown to visitors from specific countries: this is how a listing gets translated. One listing, one card, N country texts. Job-seeker-only write tool (requires assistant posting enabled). There is no machine translator behind this: each text is stored as written. One entry holds one translation, and its countryCodes list every country that reads it. The key is the country, not the language: each country gets the language its readers actually use. The call adds to and updates the existing texts: countries it does not mention keep their text, so translating into one more country leaves the others intact; removeCountries deletes texts. Every text goes to moderation first (status "review") and is not visible in search until approved; until then that country sees the listing's main description. A text is kept only for a country the listing already reaches; the others are discarded and come back in skippedOutOfReach. Up to 20 entries per call (the schema cap); calls with about 5 entries are the most reliable, because large batches tend to break while the call is still being generated. Texts are plain UTF-8; \uXXXX escape sequences are rejected. The answer does not quote the texts back: it returns one compact line per country written (countryCode, status, chars) and names in otherCountries the countries that already had a text this call did not touch; get_listing_texts returns any text in full.
whoami
ChatGPTShow the signed-in job seeker's name, account type, plan and listing quota. Use this to check which Skilcrew account is connected and that it is a job-seeker account.