{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T15:45:44.751Z","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats.md","server":{"slug":"io-usefulapi-cats-ats","name":"CATS MCP by usefulapi","registryName":"io.usefulapi/cats-ats","description":"Read CATS candidates, jobs and pipelines, and make explicitly confirmed recruiting changes.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"cats-ats","type":"remote","identifier":"https://cats-ats.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats","version":"1.7.3","transport":null,"scoredAt":"2026-11-05T15:03:07.132Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":18},{"date":"2026-10-31","total":65}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"cats-ats","type":"remote","identifier":"https://cats-ats.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats.md"}],"facts":[{"label":"Endpoint","value":"https://cats-ats.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.7.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"cats_get_site","title":"Get CATS site","description":"The CATS site (account) this API key belongs to: id, mode (recruiter or employer) and subdomain. GET /site.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":40},{"name":"cats_list_users","title":"List users","description":"List the CATS users (recruiters) with id, name, title and access level. Use the ids as owner or assignee. GET /users.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":87},{"name":"cats_list_candidates","title":"List candidates","description":"List candidates (personal data: name, emails, address, employer, skills, notes), one page at a time, max 100 per page. Use cats_search_candidates or cats_filter_candidates to find specific people. GET /candidates.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":102},{"name":"cats_get_candidate","title":"Get candidate","description":"One candidate by id (personal data). GET /candidates/{id}.","inputs":[{"name":"candidate_id","type":"integer","required":true,"description":"CATS candidate id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":36},{"name":"cats_search_candidates","title":"Search candidates","description":"Free-text search over candidates (name, email, skills, resume text...), paged. GET /candidates/search?query=.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"query","type":"string","required":true,"description":"Search text."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":90},{"name":"cats_filter_candidates","title":"Filter candidates","description":"Filter candidates by fields (read-only, although it is a POST): first_name, last_name, title, emails.primary, address.city/state/postal_code, country_code, current_employer, key_skills, notes, dates (date_created, date_modified), owner_id, is_hot... Each condition is {field, filter, value}; filters: exactly, contains, between {gte,lte}, greater_than, less_than, is_empty, geo_distance. Paged. POST /candidates/search.","inputs":[{"name":"conditions","type":"array","required":true,"description":"One or more conditions."},{"name":"match","type":"string","required":false,"description":"How several conditions combine: all = AND (default), any = OR."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":188},{"name":"cats_list_candidate_pipelines","title":"List a candidate's pipelines","description":"The jobs a candidate is in the pipeline for, with rating, workflow and current status id. GET /candidates/{id}/pipelines.","inputs":[{"name":"candidate_id","type":"integer","required":true,"description":"CATS candidate id."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":97},{"name":"cats_list_candidate_activities","title":"List a candidate's activities","description":"The activity log of a candidate (calls, meetings, notes, pipeline changes), paged. GET /candidates/{id}/activities.","inputs":[{"name":"candidate_id","type":"integer","required":true,"description":"CATS candidate id."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":96},{"name":"cats_list_candidate_tasks","title":"List a candidate's tasks","description":"Tasks attached to a candidate. GET /candidates/{id}/tasks.","inputs":[{"name":"candidate_id","type":"integer","required":true,"description":"CATS candidate id."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":82},{"name":"cats_list_candidate_attachments","title":"List a candidate's attachments (metadata)","description":"File names, sizes and whether each file is a resume, for a candidate's attachments. Metadata only: file contents are never downloaded. GET /candidates/{id}/attachments.","inputs":[{"name":"candidate_id","type":"integer","required":true,"description":"CATS candidate id."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":104},{"name":"cats_list_jobs","title":"List jobs","description":"List job orders with title, location, company, recruiter, status and workflow ids, dates. Paged. GET /jobs.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":80},{"name":"cats_get_job","title":"Get job","description":"One job order by id, with its description. GET /jobs/{id}.","inputs":[{"name":"job_id","type":"integer","required":true,"description":"CATS job id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":37},{"name":"cats_search_jobs","title":"Search jobs","description":"Free-text search over job orders, paged. GET /jobs/search?query=.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"query","type":"string","required":true,"description":"Search text."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":81},{"name":"cats_list_job_pipelines","title":"List a job's pipeline","description":"The candidates in the pipeline of a job: pipeline id, candidate id, rating and current status id. Paged. GET /jobs/{id}/pipelines.","inputs":[{"name":"job_id","type":"integer","required":true,"description":"CATS job id."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":101},{"name":"cats_list_job_statuses","title":"List job statuses","description":"The statuses a job order can have (Active, OnHold, Closed...). GET /jobs/statuses.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":77},{"name":"cats_list_pipelines","title":"List pipelines","description":"List candidate-to-job pipelines (candidate id, job id, rating, workflow id, status id), paged. GET /pipelines.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":83},{"name":"cats_get_pipeline","title":"Get pipeline","description":"One pipeline (a candidate on a job) by id. GET /pipelines/{id}.","inputs":[{"name":"pipeline_id","type":"integer","required":true,"description":"CATS pipeline id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":40},{"name":"cats_filter_pipelines","title":"Filter pipelines","description":"Filter pipelines by id, candidate_id, job_id, status_id, rating, date_created or date_modified (read-only, although it is a POST). Each condition is {field, filter, value}. Paged. POST /pipelines/search.","inputs":[{"name":"conditions","type":"array","required":true,"description":"One or more conditions."},{"name":"match","type":"string","required":false,"description":"How several conditions combine: all = AND (default), any = OR."},{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":137},{"name":"cats_get_pipeline_status_history","title":"Get pipeline status history","description":"The status changes of a pipeline over time (status, who, when). GET /pipelines/{id}/statuses.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"pipeline_id","type":"integer","required":true,"description":"CATS pipeline id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":92},{"name":"cats_list_workflows","title":"List pipeline workflows","description":"The pipeline workflows (sets of statuses such as Contacted, Interviewing, Offered). GET /pipelines/workflows.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":79},{"name":"cats_list_workflow_statuses","title":"List workflow statuses","description":"The statuses of one pipeline workflow (id, title, prerequisites, triggers). Use the ids with cats_change_pipeline_status. GET /pipelines/workflows/{id}/statuses.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"workflow_id","type":"integer","required":true,"description":"Workflow id, from cats_list_workflows or a pipeline's workflow_id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":114},{"name":"cats_list_companies","title":"List companies","description":"List client companies (name, address, website, owner), paged. GET /companies.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":74},{"name":"cats_get_company","title":"Get company","description":"One company by id. GET /companies/{id}.","inputs":[{"name":"company_id","type":"integer","required":true,"description":"CATS company id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":32},{"name":"cats_search_companies","title":"Search companies","description":"Free-text search over companies, paged. GET /companies/search?query=.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"query","type":"string","required":true,"description":"Search text."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":81},{"name":"cats_list_contacts","title":"List contacts","description":"List client contacts (personal data: name, title, emails, company), paged. GET /contacts.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":76},{"name":"cats_get_contact","title":"Get contact","description":"One client contact by id (personal data). GET /contacts/{id}.","inputs":[{"name":"contact_id","type":"integer","required":true,"description":"CATS contact id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":36},{"name":"cats_search_contacts","title":"Search contacts","description":"Free-text search over client contacts, paged. GET /contacts/search?query=.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."},{"name":"query","type":"string","required":true,"description":"Search text."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":81},{"name":"cats_list_tasks","title":"List tasks","description":"List tasks (description, priority 1-5, due date, assignee, completion, the record it is about), paged. GET /tasks.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":86},{"name":"cats_get_task","title":"Get task","description":"One task by id. GET /tasks/{id}.","inputs":[{"name":"task_id","type":"integer","required":true,"description":"CATS task id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":32},{"name":"cats_list_activities","title":"List activities","description":"The site-wide activity log (calls, emails logged, meetings, notes) with the record each is about, paged. GET /activities.","inputs":[{"name":"page","type":"integer","required":false,"description":"Page number, from 1 (default 1). Pass the previous reply's next_page."},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-100 (default 25)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":84},{"name":"cats_add_candidate_activity","title":"Add an activity (note) to a candidate","description":"WRITE: Requires confirm:true. log an activity (a call, meeting, note...) on a candidate's record. It only records the entry in CATS: no email/SMS-send request is made, even for type 'email' or 'text_message'. Creates a new entry each time (not idempotent). POST /candidates/{id}/activities.","inputs":[{"name":"candidate_id","type":"integer","required":true,"description":"CATS candidate id."},{"name":"confirm","type":"boolean","required":true,"description":"Confirm this change to the CATS account."},{"name":"date","type":"string","required":false,"description":"When it happened (ISO 8601); default now."},{"name":"notes","type":"string","required":true,"description":"The note text."},{"name":"regarding_job_id","type":"integer","required":false,"description":"The job order this activity is about; omit for a general activity."},{"name":"type","type":"string","required":true,"description":"Activity type; use 'other' for a plain note."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":178},{"name":"cats_create_task","title":"Create a task","description":"WRITE: Requires confirm:true. create a task in CATS, optionally about a candidate, contact, company or job and assigned to a user. Creates a new task each time (not idempotent); CATS may notify the assignee. POST /tasks.","inputs":[{"name":"about_id","type":"integer","required":false,"description":"Id of that record."},{"name":"about_type","type":"string","required":false,"description":"Kind of record the task is about; omit for a general task. Needs about_id."},{"name":"assigned_to_id","type":"integer","required":false,"description":"CATS user id of the assignee (see cats_list_users)."},{"name":"confirm","type":"boolean","required":true,"description":"Confirm this change to the CATS account."},{"name":"date_due","type":"string","required":false,"description":"Due date (ISO 8601); omit for ASAP."},{"name":"description","type":"string","required":true,"description":"What has to be done."},{"name":"priority","type":"integer","required":false,"description":"1 (lowest) to 5."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":182},{"name":"cats_change_pipeline_status","title":"Move a candidate to another pipeline status","description":"WRITE: Requires confirm:true. change the status of a pipeline (move a candidate to another stage of a job's workflow, e.g. Interviewing, Offered, Rejected). Get the pipeline id from cats_list_candidate_pipelines and the status id from cats_list_workflow_statuses. Requires confirm:true. Requests that status triggers (which can e-mail people or change records) be suppressed: every trigger attached to the target status is sent with fire=false. CATS remains responsible for enforcing its trigger semantics; independently configured webhooks may still run. The change is recorded in the pipeline's status history. POST /pipelines/{id}/status.","inputs":[{"name":"confirm","type":"boolean","required":true,"description":"Confirm this change to the CATS account."},{"name":"pipeline_id","type":"integer","required":true,"description":"CATS pipeline id."},{"name":"status_id","type":"integer","required":true,"description":"The status to move to; must belong to the pipeline's workflow."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":188},{"name":"cats_create_candidate","title":"Create a candidate","description":"WRITE: Requires confirm:true. create one candidate record (personal data) with name, optional contact details and notes. Refuses when CATS finds a duplicate (check_duplicate=true, the default). Creates a new record each time (not idempotent); no email-send request is made to the candidate and no login is created. POST /candidates.","inputs":[{"name":"check_duplicate","type":"boolean","required":false,"description":"Refuse to create when a duplicate exists (default true)."},{"name":"city","type":"string","required":false,"description":null},{"name":"confirm","type":"boolean","required":true,"description":"Confirm this change to the CATS account."},{"name":"country_code","type":"string","required":false,"description":"ISO 3166 two-letter country code."},{"name":"current_employer","type":"string","required":false,"description":null},{"name":"email","type":"string","required":false,"description":"Primary e-mail address (stored only, never mailed)."},{"name":"first_name","type":"string","required":true,"description":null},{"name":"key_skills","type":"string","required":false,"description":null},{"name":"last_name","type":"string","required":true,"description":null},{"name":"notes","type":"string","required":false,"description":null},{"name":"owner_id","type":"integer","required":false,"description":"CATS user id of the record owner."},{"name":"phone","type":"string","required":false,"description":"Phone number with country code."},{"name":"phone_type","type":"string","required":false,"description":"Phone type (default mobile)."},{"name":"postal_code","type":"string","required":false,"description":null},{"name":"source","type":"string","required":false,"description":"Where the candidate came from."},{"name":"state","type":"string","required":false,"description":null},{"name":"title","type":"string","required":false,"description":"Current job title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":273}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:03:07.000Z","track":"remote","endpoint":"https://cats-ats.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"cats-ats.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-31","recent":[{"id":"chg_01a19628-ff7b-7075-8e69-5f94d0ac2c28","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a19628-ff7b-7075-8e69-5f94d0ac2c28"},{"id":"chg_01a19628-ff7c-71a3-bf81-7c8d8f006903","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a19628-ff7c-71a3-bf81-7c8d8f006903"},{"id":"chg_01a19628-ff7c-7d38-ad24-812135898c0f","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a19628-ff7c-7d38-ad24-812135898c0f"},{"id":"chg_01a19628-ff7e-7c13-8094-feae37d6d4d6","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a19628-ff7e-7c13-8094-feae37d6d4d6"},{"id":"chg_01a19628-ff7f-7213-bf67-66885ba26de6","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a19628-ff7f-7213-bf67-66885ba26de6"},{"id":"chg_01a19628-ff7f-7bbb-abb2-cdef38ce79b0","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a19628-ff7f-7bbb-abb2-cdef38ce79b0"},{"id":"chg_01a19628-ff80-71a8-9521-a545ef5331dc","kind":"score.total_changed","summary":"Trust score (65 → 18)","materiality":"functional","direction":"regression","scoreDelta":-47,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a19628-ff80-71a8-9521-a545ef5331dc"},{"id":"chg_01a193fa-83c9-7132-ae1c-372ee4929573","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a193fa-83c9-7132-ae1c-372ee4929573"},{"id":"chg_01a1919e-2600-7501-9230-803e875d1322","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats#chg-chg_01a1919e-2600-7501-9230-803e875d1322"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats","markdown":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-cats-ats/cats-ats.xml","external":[{"label":"Remote endpoint","href":"https://cats-ats.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/cats-ats/"}]}}