Jobsite for developers and coding agents
Last updated: 2026-11-04
Three ways in: a free MCP server that needs no account, a signed-in MCP server for a company's own records, and a read-only REST API with an OpenAPI 3.1 description. Agents can read this page as markdown.
Free MCP server (no sign-in)
Add https://jobsitecerts.com/api/mcp/public to any MCP client as a custom connector. No account, no key. It reads no company's records: verbatim OSHA and state regulation text with citations, the OSHA 1904 recordability decision tree, the toolbox-talk library in English and Spanish, OSHA news, and how Jobsite works. Requests are limited to 60 a minute from one network address. It can also start a sample-data workspace and return a one-time claim link.
| Free tool | What it does |
|---|---|
Search the Jobsite product guidelookup_jobsite_docs | Look up how Jobsite (this product) works — features, UI navigation, terminology, account / billing, worker-side experience, what counts as a 'group' vs 'crew', etc. Use this for any 'how do I…' / 'where do I find…' / 'what does X mean in Jobsite' question. Returns matching sections from the curated product guide. NOT for OSHA / regulatory questions (use search_law_corpus) and NOT for a company's own records (its workers, certificates, jobs). If a returned section is flagged todo:true, the topic is in scope but not yet documented — say so rather than inventing an answer. |
Search Jobsite articlessearch_articles | Search Jobsite's published marketing content — blog articles, head-to-head COMPETITOR COMPARISON pages (e.g. 'Jobsite vs Procore', 'Jobsite vs SiteDocs', 'Jobsite vs SafetyCulture'), and pillar guides. Use this whenever the user asks how Jobsite compares to a competitor ('how are you better than Procore', 'Jobsite vs SafetyCulture', 'why pick you over X'), or asks for a published article on a construction-safety topic. Returns matching articles with a relevant excerpt and a link to the full page. This is DISTINCT from lookup_jobsite_docs (product how-to) and search_law_corpus (OSHA regulatory text). If nothing matches, say you don't have an article on it rather than inventing a comparison. |
Search the regulation corpussearch_law_corpus | Search the VERBATIM authority corpus behind Jobsite's training: 29 CFR regulation text (per-section, with citations), the CA/WA/OR state rules for heat illness and wildfire smoke, plus OSHA interpretations and NIOSH/CDC/EPA technical guidance the training cites. Use this when the user asks what an authority ACTUALLY SAYS — exact rule language, a specific citation ('what does 1926.501 require'), trigger heights, employer duties — and quote the returned text with its citation heading and jurisdiction. EVERY match carries an `authority` field: T1 is binding law, T2 is an agency interpretation and T3 is technical guidance. READ IT BEFORE YOU CHARACTERISE THE MATCH — quote a T2/T3 match as what that agency recommends or says, NEVER as what a regulation requires, and never call it a rule. It returns the source text itself, not a paraphrase of it — prefer it whenever the user wants what the rule says. The corpus spans the topics Jobsite trains on plus the authorities they cite, NOT all of 29 CFR: an empty result means 'not in the corpus', never 'no such rule exists'. |
Search regulatory newssearch_regulatory_news | Search recent regulatory / safety news from the Federal Register (filtered to OSHA) and the OSHA news RSS feed. Use for questions about recent rule changes, enforcement memos, or news that might affect a training course's content (e.g. 'any silica updates this year', 'recent fall protection rulemaking'). Returns titles, agencies, dates, URLs, and short summaries — pure pass-through, nothing is persisted. Prefer specific multi-word queries built around an OSHA topic or standard ('respirable silica §1926.1153', 'lockout tagout enforcement', 'fall protection 1926.501'). NOT for tenant-data questions; NOT for general OSHA reference (use search_law_corpus for established standards). |
OSHA recordability checkosha_recordability_check | Runs Jobsite's deterministic OSHA 29 CFR 1904 decision tree on the facts of an injury or illness: returns the proposed 300-log classification (or the questions still needed), the rationale with verbatim 1904 quotes, and any report-to-OSHA deadline (8 or 24 hours). Map the story to the answers; leave out anything not known — unknowns come back as questions, never guesses. Reads and writes no records. |
Get a toolbox talkget_toolbox_talk | A ready-to-deliver construction toolbox talk from Jobsite's library of nearly 300 talks, in English or Spanish: title, talking points, a discussion question, duration, and the OSHA standards it is built on. Find one by topic or hazard in plain words ("trenching", "heat", "ladder setup") or by standard number ("1926.501"), or fetch one by talk_number. Returns the best match plus up to five other matching titles. |
Training a trade needs, from Jobsite's inventorytraining_required_for | What training Jobsite's requirements inventory assigns a construction trade in a US state, optionally for roles the worker also holds (supervisor, competent person, forklift operator, scaffold erector and others). Every obligation comes from Jobsite's inventory, never from general knowledge, and carries its citation and the regulation text quoted verbatim: quote it as given. Each row's kind matters and must be kept: a mandate is an unconditional legal training duty; a condition applies only when the condition it names exists on the job; a policy is training Jobsite assigns without a legal mandate there, with its basis stated. A not-found answer means "not in Jobsite's requirements inventory", never "no training required". The inventory holds federal OSHA rows plus California, Washington, Oregon and Nevada rows. search_law_corpus returns the full text of any cited rule. |
Check a worker's shared certificateverify_certificate | Check a certificate, or a whole certificate wallet, that a worker shared from Jobsite as a link (https://jobsitecerts.com/w/…). Returns the holder's name, each credential with its issuer, issue and expiry dates, current status (current, expiring soon, expired or revoked), and its basis: earned in Jobsite training, an outside credential the employer recorded, or an employer record Jobsite has not verified. Only works with a link the worker made; it never looks a person up by name, and an expired or revoked link returns not found. |
Start a sample Jobsite workspacestart_jobsite_workspace | Create a new Jobsite workspace that holds only sample data (a sample crew, jobs and safety records; nothing real) for the person you are helping, so they can try Jobsite without setting anything up. Returns a one-time claim link to give them: opening it lets them create their login (or sign in) and own the workspace. The link expires in 7 days, and an unclaimed workspace is then deleted. Exploring the sample data is free; adding real workers needs a Jobsite plan. Takes no personal details. Limited to 3 workspaces a day per network address. Optional: company_name, focus (safety or home services) and the company's trade. |
Signed-in MCP server (OAuth)
Server URL https://jobsitecerts.com/api/mcp. A manager approves the connection once (OAuth 2.1 with PKCE); the assistant then acts as that manager, in one company, behind their permissions. The full tool list, what it never does, and the safety model are on the connector page (markdown). Clients without MCP sign-in can send an API key as a bearer token instead.
REST read API
Base URL https://jobsitecerts.com/api/v1. Machine-readable spec (OpenAPI 3.1): /api/v1/openapi.json. Authenticate with Authorization: Bearer jsk_live_…. The company is the one that owns the key, never a parameter, and the API is read-only. GET /api/v1 confirms a key and lists the collections it can read.
Paging: limit (1–200, default 50) and offset. A filter a collection does not honour, or any unknown parameter, is refused with a 400 naming it and listing the accepted parameters, never ignored.
| Collection | Scope | Filters | Extra permission to mint the scope |
|---|---|---|---|
jobs | read:jobs | job_id, status | none |
rfis | read:rfis | job_id, status | none |
change_orders | read:change_orders | job_id, status | none |
pay_apps | read:pay_apps | job_id, status | none |
daily_logs | read:daily_logs | job_id | none |
submittals | read:submittals | job_id, status | none |
inspections | read:inspections | job_id, status | none |
workers | read:workers | job_id, status | none |
certifications | read:certifications | job_id, status, expiring_within_days | training.view |
incidents | read:incidents | job_id, status | training.view |
bills | read:bills | job_id, status, due_within_days, vendor_id | ap.bills.manage |
Errors: 401 missing or invalid key, 402 the plan does not include integrations, 403 missing_scope:read:<collection>, 404 unknown_collection, 400 a refused parameter, 429 rate_limited, 500 read_failed.
curl -H "Authorization: Bearer jsk_live_…" https://jobsitecerts.com/api/v1/jobsGetting a key
A manager creates one in Jobsite under Integrations ▸ API & agent access: label it, pick the collections it may read, set an expiry. The secret is shown once. To grant a scope, the person creating the key must hold its permission: certifications and incidents need “View training / compliance”; bills need “Manage bills (capture, code, submit, withdraw, void; the bills inbox address)”.
For agents
- /developers.md and /mcp.md — markdown copies of these pages
- /api/v1/openapi.json — the OpenAPI 3.1 spec
- /llms.txt — the site index for AI crawlers