- Brand
- Unknown
- Category
- Pending
- Primary Subcategory
- Job Search Aggregators & Job Boards
Integration details
Description
BlueSkil connects skilled trades workers and employers. Find job opportunities, review posting details, manage your profile, track applications, and reply in existing conversations. Employers can review applicants and prepare and publish their own job drafts after confirmation. Some consequential actions open BlueSkil for completion. Connect your BlueSkil account to use your existing permissions; available workflows depend on your role and access.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Job Search Aggregators & Job Boards
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account optional
- First tracked
- 2026-10-29
- Tool count
- 39
- Market
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for BlueSkil
Get updates when BlueSkil’s Discoverability Score or category rank changes.
Competing in ChatGPT Job Search Aggregators & Job Boards
View Category39 tools agents can invoke
Analyze a cover letter against a specific job, producing an EMPLOYER-side screening analysis. Use this when an employer wants to: - Screen an application's cover letter quickly - See a cover letter's strengths and red flags at a glance - Get a screening recommendation before a deeper review Returns a screening analysis with: - A summary of the letter - Strengths and red flags - Enthusiasm and professionalism scores - Key quotes from the letter - A screening recommendation (high-priority, review, or low-priority) - A confidence level There is NO 0-100 overall score, NO relevance score, and NO keyword matching. Each call consumes the user's monthly AI quota. May be unavailable when the GenUI feature flag is off in non-production environments. Example: "Analyze this cover letter for job ID abc123" Uses part of the user’s monthly BlueSkil AI quota.
genui_analyze_cover_letter
Apply for a job posting. Requires seeker role. IMPORTANT: This is a consequential action that submits a real job application. Always confirm with the user before applying. Use this when the user wants to: - Apply for a specific job posting - Submit an application with a cover letter - Express interest in a position Required information: - Job ID (from search results or job details) - Cover letter or application message Example: "Apply for job job_123 with this cover letter: I have 2 years of experience..." Note: the real gate is an apply-eligible seeker profile, not merely the seeker role — the profile must carry a trade and a city/state. If the application is refused for eligibility, the fix is to complete the profile in the BlueSkil app. On success the result is visible in the user’s BlueSkil app — keep your reply short and point there for the detail.
applications_create
Block another user, so they can no longer message or interact with you. Use this when the user wants to: - Stop someone contacting them - Block a person they have had a bad experience with Blocking is immediate and reversible with ugc_unblock_user. It stops new contact and hides the person from discovery — it does NOT delete existing message or application history, and company job content stays visible with attribution redacted.
ugc_block_user
Check whether the caller has finished BlueSkil onboarding after confirming in the app. Call this when the user returns from the confirmation link instead of telling them to check the app. When state is ready, say the profile is complete and offer first matches (or the first job draft for an employer). When still awaiting confirmation, relay that they need to finish in BlueSkil.
onboarding_status
Check whether the connected BlueSkil account has accepted the current content policy. Use this when a content action was refused and the reason may be an outstanding policy acceptance. Returns the current version, whether that account has accepted it, and — when it has not — which account must accept and the remedy to relay: "sign in as <email> and accept the guidelines". The destination is informational and does not bind the grant owner. ACCEPTING the policy is not available here — that is a consent action the named account takes in the app themselves.
ugc_policy_status
Report the caller's latest precomputed seeker-profile health score, and whether the profile is eligible for job matching. Use this when the user asks: - "How complete is my profile?" - "Has my profile been scored yet?" - "Why am I not getting matched?" Job seekers only. Reads the most recent precomputed health score; it does not recompute one or return suggested improvements. A brand-new profile may have no score yet, and this says so. `matchingEligibility` carries the same descriptor as the seeker-profile API: `eligible`, the stored `profileCompleteness`, the `minProfileCompleteness` threshold, and a `reason` when not eligible.
profile_health
Delete a job posting permanently. Requires employer or employee role and ownership. IMPORTANT: This is a destructive action that cannot be undone. Always confirm with the user before deleting. Use this when the user wants to: - Remove a job posting that is no longer needed - Delete a position that has been filled - Clean up old or duplicate postings On success the result is visible in the user’s BlueSkil app — keep your reply short and point there for the detail.
jobs_delete
Get detailed profile information for a specific candidate by ID. Use this when the user wants to: - View full details of a candidate from search results - Check a candidate's skills and experience - Review certifications and education Requires employer or employee role with live company membership, AND an unexpired seeker-profile access grant for THIS candidate — without that grant the call is refused. Returns first name, bio, location (city, state), skills, years of experience, certifications, education, availability, and preferred work types. There is no work-history field, and contact info (email, phone, last name) is withheld.
candidates_get
Get public information about a specific company. Use this when the user wants to: - View a company's basic details - Check where a company is based before applying to its jobs - Confirm a company is active Returns ONLY: id, name, description, location (city, state, postalCode, country), industry, and status. Does NOT return the company's jobs or members — use jobs_search to find its postings. Billing details, precise coordinates, street address, and timestamps are stripped by design.
companies_get
Get the public details of a specific job posting by ID. Use this when the user wants to: - View full details of a specific job - Get more information about a job from search results - Check requirements, benefits, or the job description Returns a public projection of the job (24 whitelisted fields): title, description, trade/category/type, experience level, skills and requiredSkills, requirements, responsibilities, benefits, pay (payRate or salaryMin/salaryMax/salaryType), isRemote, the JOB's status (e.g. active, closed), application deadline, start/end dates, and a coarse location (city, state, postalCode, country). Company info is companyId and companyName only — use companies_get for more. Does NOT return any application status — nothing here says whether the caller applied. Internal ids, precise coordinates, and timestamps are deliberately stripped.
jobs_get
Get detailed information about a specific application. Use this when the user wants to: - View details of a specific application - Check the status of an application - Read back the cover letter they sent Returns: id, jobId, jobTitle, jobCategory, companyId, companyName, status, coverLetter. Does NOT return the employer's private notes, who reviewed it, screening internals, or timestamps — an advertised field that the response withholds is a silent lie to the model, which then tells the user something it never received.
applications_get
Get the current user's profile information. Use this when the user wants to: - View their own profile - Check their active role (seeker, employer, employee) - See their account details Returns name, email, phone number, profile photo, which of seeker/employer/employee are active, the current role context and active company id. Does NOT return profile completion, company associations or settings — the response is deliberately minimised (#2525), and the description said otherwise until r2.
profile_get
Enhance and improve an existing job description using AI. Use this when an employer wants to: - Improve a poorly-written job description - Add missing sections or details - Make the description more engaging and professional - Improve SEO and readability scores Takes the current description and generates an enhanced version with: - Better structure and formatting - More engaging language - Complete sections (responsibilities, requirements, benefits) - Tracked changes showing what was improved Returns the enhanced description with before/after quality scores. location and payRange are optional, but when omitted the generator has no location or pay context to work with — results are better when you provide them. Each call consumes the user's monthly AI quota. May be unavailable when the GenUI feature flag is off in non-production environments. Example: "Enhance this job description: 'We need an electrician. Must have experience. Good pay.'" Uses part of the user’s monthly BlueSkil AI quota.
genui_enhance_job_description
List the applications received for one of the caller's company's job postings. Use this when the user wants to: - See who applied to a specific job - Review candidates before changing an application's status The caller must be an active member of the company that posted the job, and must be its owner, assigned to it, or an owner or manager of that company. Applicant details are limited to what an employer needs to decide: no email address, no phone number, no screening notes. Details beyond a first name appear only for applicants whose profile access has been granted.
applications_list_for_job
List the people the user has blocked. Returns each blocked person's display name and when they were blocked. Use the cursor to page; omit it for the first page.
ugc_blocked_list
List companies the user has access to (owns or works for). Use this when the user wants to: - See all companies they're associated with - Check which companies they own or work for - Browse company information Returns { summary, companies, returned, truncated, nextOffset }. "returned" is the number of rows in this response, not how many companies you belong to; when "truncated" is true, pass "nextOffset" back as "offset" to fetch the next page. #3020 leftover: per-user memberships are bounded; assistant protocol still uses nextOffset. Each row: id, name, description, location (city/state/postalCode/country only), industry, status. The caller's ROLE in the company is not included — it was advertised and never returned.
companies_list
List conversations for the current user. Use this when the user wants to: - See their message inbox - View all conversations - Check for unread messages - Browse conversation history Returns conversations with the other participant, unread count, and lastMessage — which carries the FULL text of the last message, not a truncated preview. Note: unreadOnly filters the fetched page after the limit is applied, so fewer than "limit" conversations may be returned even when more unread conversations exist — raise the limit to see more.
messages_list_conversations
List recent job applications for the current user. Use this when the user wants to: - See all jobs they've applied for - Check application statuses - Review past applications - Filter applications by status The status filter accepts every state an application can be in: pending, submitted, reviewed, shortlisted, interviewing, offered, accepted, rejected, withdrawn, cancelled, expired. Omit it to see everything. Returns { summary, applications, returned, truncated, nextOffset }. "returned" is the number of rows in this response, not the user's lifetime application count; when "truncated" is true, pass "nextOffset" back as "offset" to fetch the next page. #3020 leftover: this MCP wire still speaks nextOffset; REST uses "after". Each row: id, jobId, jobTitle, jobCategory, companyId, companyName, status. No submission date — timestamps are withheld — and no cover letter; use applications_get for one application's.
applications_list
List the job postings belonging to the caller's company, across every status. Use this when the user wants to: - See what jobs they have open - Check a paused, draft or closed posting - Find out how many people have applied to each Owners, managers, and staff with the manage-jobs permission see every posting. Other staff see only the postings they own or are assigned to. Unlike jobs_search — which is the PUBLIC index and only surfaces discoverable postings — this returns the company's own postings whatever their status.
jobs_list_mine
List the matches the platform has already computed. Use this when the user wants to browse rather than hear a summary: - A job seeker: "show me my matches" — recommended jobs - An employer: "who matched the Henderson job?" — matched candidates for one job Employers must supply a jobId and must be able to read that job's pipeline. Rows are match REFERENCES, not details. For a seeker each row is jobId, companyId, score, distance, matchedAt, and status — no job title or description; follow up with jobs_get for the job itself. For an employer each row is candidateId, score, distance, matchedAt, and status — no profile detail; use candidates_get for a specific candidate, which enforces the access grant that protects it. Each row also carries matchReasons (a short, plain-language list of why the backend judged it a match) and explanationSource ("llm" when AI-authored, else the reasons are omitted). These are advisory explanation only — they do not change which matches appear or their order.
matches_list
Mark a conversation as read. Use this when the user wants to: - Clear unread count for a conversation - Mark messages as read - Clean up inbox Marks all messages in the conversation as read.
messages_mark_read
Prepare to publish one of the user's OWN job DRAFTS from BlueSkil. Requires employer or employee role. Drafts only: a paused or closed job is reactivated in the BlueSkil app, never from here. Call this with the draft's jobId and the draftRevision that jobs_create returned (or that the user reviewed). It verifies the draft is unchanged, reports whether the company's free posting allowance permits publishing, and returns a proposalId + confirmationHash to pass to jobs_publish. Nothing is published by this call. The result's summary states that confirming makes the job PUBLIC and where it appears — read it to the user before calling jobs_publish. If the allowance is used up, the result carries a handoff to the in-app review page instead of a proposal: relay that as the next step, never as a failure, and never suggest buying anything.
jobs_publish_prepare
Publish the user's OWN job draft after they confirmed it. Requires employer or employee role. Call jobs_publish_prepare first, read its summary to the user, and pass back its proposalId and confirmationHash unchanged once they confirm. Publication is public and immediate: the job appears in BlueSkil job search and in matching for seekers in range. Repeating the same confirmation returns the already-published job; a changed draft is refused. On success the result is visible in the user’s BlueSkil app — keep your reply short and point there for the detail.
jobs_publish
Get messages from a specific conversation. Use this when the user wants to: - Read messages in a conversation - View conversation history - Check message thread Returns conversation details and messages in chronological order.
messages_get_conversation
Capture a new job DRAFT for review in BlueSkil. Requires employer or employee role. This tool never publishes a job. It returns a revision-bound BlueSkil link where the employer reviews and publishes the exact draft. Retrying the same operationKey with the same details returns the same draft; changing details under that key is refused. Use this when the user (as an employer) wants to: - Start a draft apprenticeship opening from free text - Continue review and publication in the BlueSkil app Required information: - Job title (e.g., "Electrician Apprentice", "Plumbing Helper") - Trade category - Job description and responsibilities - Location (city, state, ZIP) - Pay rate (hourly or salary) - Experience level required Supply free-text trade and skill labels. BlueSkil resolves canonical taxonomy IDs and location coordinates server-side. Never supply canonical IDs. For project drafts, supply startDate, endDate (after startDate), and maxContractors (1-20). On success the result is visible in the user’s BlueSkil app — keep your reply short and point there for the detail.
jobs_create
Search for job candidates matching specific skills, experience, and location. Use this when an employer wants to: - Find candidates with specific skills (e.g., "Find electricians with OSHA 30") - Search for candidates near a location - Match candidates against a specific job posting - Find candidates with certain experience levels Examples: - "Find plumbers in Seattle with 3+ years experience" - "Search for electricians with commercial wiring experience" - "Find candidates matching my HVAC technician job" - "Show me entry-level welders near Denver" Candidate views are metered MONTHLY by subscription tier: 5 views/month on free, 50 on premium, resetting at the start of each calendar month. Each candidate returned counts as one view, a search that returns nobody costs nothing, and results are trimmed to whatever allowance is left. Returns candidates with first name, location (city, state), skills, years of experience, certifications, bio, a match score, and match reasoning, plus search metadata. Contact info is never included.
candidates_search
Search for skilled trades apprenticeship jobs. Use this when the user wants to: - Find jobs near a specific location - Look for jobs in a specific trade (electrical, plumbing, HVAC, etc.) - Browse available apprenticeship opportunities Examples: - "Find electrician jobs in San Francisco" - "Show me entry-level plumbing apprenticeships" - "Are there HVAC jobs near Boston?" - "Search for carpentry jobs within 50 miles of Denver" How the inputs are applied: location (when it can be geocoded) is a real distance filter; trade and experienceLevel are folded into the free-text search query, NOT applied as hard filters — results may include other trades or levels. Returns { summary, jobs, returned, truncated, searchMetadata }. "returned" is the number of rows in this response; it is NOT how many jobs exist, and no total is available from this tool. "truncated" true means THESE MAY NOT BE ALL THE MATCHES — either more matched than fit, or the search examined only the newest postings and older matches were never checked. It is true on a short page too, so never infer completeness from a small "returned". Narrow the search (trade, experienceLevel, location, radius) to surface different ones. Each job row: id, title, description, company name, type, pay (payRate or salaryMin/salaryMax/salaryType), and location (city, state, distance). No requirements field — use jobs_get for a job's full details.
jobs_search
Reply in a conversation the user already participates in. IMPORTANT: This sends a real message to another person, immediately and irreversibly. Only use when explicitly requested, and only into an EXISTING conversation — this tool cannot start a new conversation or message someone the user has no conversation with (find the conversation with messages_list_conversations first). Use this when the user wants to: - Reply to a conversation - Answer a recruiter, employer or candidate they are already talking to Provide a fresh operationKey per intended message; retrying with the same key never sends twice. Example: "Reply to the recruiter that Tuesday works for me" On success the result is visible in the user’s BlueSkil app — keep your reply short and point there for the detail.
messages_send
Prepare a new BlueSkil account from details the user supplied in this conversation. This stores a short-lived proposal only. The user must open BlueSkil, authenticate, confirm the captured profile, company or job draft, and accept the linked legal documents before any account, company, job, or profile is completed.
onboarding_start
Start a report about content or a person that violates BlueSkil's guidelines. Use this when the user wants to report harassment, spam, inappropriate content, or another policy violation. This does NOT file the report: it opens the report screen in the BlueSkil app for the exact thing being reported, and the user reviews, chooses a reason, and submits it there themselves. Calling this returns a link, not a completed action: tell the user plainly that it is not done yet, and where to finish it in BlueSkil.
ugc_report_start
Start changing the status of an application. This tool changes nothing itself: it returns a link to the Applications screen in the BlueSkil app, where the employer who owns the job opens the application and sets the new status. Use this when the user (as an employer) wants to: - Extend an offer to a candidate ('offered') - Reject an application - Mark an application for review, shortlist, or move to interviewing Only the employer who owns the job can change an application's status. An employer cannot set 'accepted'. On a single-hire job, accepting an offer is the APPLICANT's action — the employer's move is 'offered'. On a PROJECT job, staffing a contractor is the employer's action — start it with 'applications_contractor_hire_start' (#2976). It is a separate tool rather than a status value here because staffing a slot is not a review step: it creates an engagement and consumes one of a fixed number of slots. Calling this returns a link, not a completed action: tell the user plainly that it is not done yet, and where to finish it in BlueSkil.
applications_update_status
Start staffing a contractor onto a PROJECT job. This tool staffs nobody itself: it returns a link, and the employer accepts the application in the BlueSkil app. Use this when the employer wants to: - Hire an applicant onto a project - Fill one of the project's slots - Confirm a contractor for multi-hire work Staffing is an outcome decision about a named person that also creates an engagement and consumes a slot, and nothing on this surface can give either back — so the employer finishes it in BlueSkil, as a safety report is. Applies to PROJECT jobs, where staffing is the employer's move. On a single-hire job accepting belongs to the APPLICANT, and the employer's move is 'offered' through 'applications_update_status' — but that distinction is enforced in the app when the human completes it, not here. Calling this returns a link, not a completed action: tell the user plainly that it is not done yet, and where to finish it in BlueSkil.
applications_contractor_hire_start
Summarise what has changed for the caller since they last checked. Use this when the user asks: - "Anything new for me?" - "What's happened since yesterday?" - "Any updates on BlueSkil?" Answers in the caller's current role. A job seeker hears about new matches, application status changes and unread messages; an employer hears about new applications on their company's jobs and unread messages. A brand-new seeker account with no matches yet is told to complete their profile — never an empty digest that sounds like they already had activity. An established account with nothing in the window is told nothing has changed, rather than padded. Note: the new-applications count requires owner or manager scope on the company. An employee — or a caller whose company scope cannot be resolved — gets newApplications: null and a summary saying the count is not visible to their role. That is NOT the same as zero, and must not be relayed as "nothing new".
whats_new
Switch the user's active role context (seeker, employer, or employee). Use this when the user wants to: - Switch between job seeker and employer modes - Change their active context - Access different features based on role Example: "Switch to employer mode" or "I want to act as a job seeker now" The user must have the target role capability enabled.
profile_switch_role
Unblock a user you previously blocked. Use this when the user wants to undo a block. Unblocking does not restore any conversation that was hidden while the block was in place.
ugc_unblock_user
Update an existing job posting. Requires employer or employee role and ownership of the job. Use this when the user wants to: - Edit the job title or description - Change the pay rate - Pause or close a job Only title, description, payRate, status, requiredCertifications, requiredLicenses, requiredSchedules and requiredAvailability can be changed here. Status is restricted to paused or closed: assistants cannot publish or reactivate jobs. Edits to requirements, benefits, or any other field are rejected — make those changes in the BlueSkil app. IMPORTANT: User must own this job posting to update it. On success the result is visible in the user’s BlueSkil app — keep your reply short and point there for the detail.
jobs_update
Update the current user's profile information. Use this when the user wants to: - Update their first or last name - Change their phone number - Set a new profile image URL - Build or amend their seeker profile in conversation For seeker fields, send free-text trade, skills, and a coarse city/state address. BlueSkil canonicalizes taxonomy and geocodes location server-side; never supply canonical IDs, coordinates, geohashes, completeness, or embedding fields. The write happens immediately through BlueSkil's normal profile boundary. The response then discloses the source-bound taxonomy/location matches and a freshly derived onboarding-state envelope. Same-field concurrent edits are last-write- wins; disjoint fields are merge-safe. On success the result is visible in the user’s BlueSkil app — keep your reply short and point there for the detail.
profile_update
Withdraw an application. Requires seeker role and ownership of the application. Use this when the user wants to: - Withdraw from a position they applied for - Cancel an application - Remove themselves from consideration IMPORTANT: withdrawal is FINAL. The application is kept and marked withdrawn — it is not deleted — so the applicant keeps their history and the employer keeps an audit trail. The applicant CANNOT reapply to the same job afterwards. On success the result is visible in the user’s BlueSkil app — keep your reply short and point there for the detail.
applications_withdraw
Generate a professional job description from basic job information using AI. Use this when an employer wants to: - Create a job posting but doesn't know how to write a good description - Generate a professional description from minimal inputs - Get a well-structured job description with all important sections Required inputs: - Job title - Experience level (entry, mid, senior) - Location (city, state) - Pay range (min, max, period) Optional inputs for better results: - Trade category - Required certifications - Preferred skills - Company description - Benefits Returns a generated description with quality scores (SEO, readability, word count) and improvement suggestions. Each call consumes the user's monthly AI quota. May be unavailable when the GenUI feature flag is off in non-production environments. Example: "Generate a job description for a Journeyman Electrician in San Francisco paying $30-40/hour" Uses part of the user’s monthly BlueSkil AI quota.
genui_generate_job_description
BlueSkil ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve BlueSkil's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are BlueSkil alternatives on ChatGPT?
As of 2026-10-29, BlueSkil competes with Indeed Job Search, JobLoop, Account Executive Jobs, AI Applyd, ai.jobs, AIApply, AmbitionBox, Apna Jobs and 95 more in ChatGPT Job Search Aggregators & Job Boards, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.