{"$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-05T23:38:54.766Z","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr.md","server":{"slug":"io-usefulapi-talenthr","name":"TalentHR MCP by usefulapi","registryName":"io.usefulapi/talenthr","description":"Read employees, leave, recruiting and reports; book or decide leave and add applicant notes.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"talenthr","type":"remote","identifier":"https://talenthr.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr","version":"1.7.3","transport":null,"scoredAt":"2026-11-05T15:04:08.615Z"},"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":65},{"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":"talenthr","type":"remote","identifier":"https://talenthr.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr.md"}],"facts":[{"label":"Endpoint","value":"https://talenthr.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":"talenthr_list_employees","title":"List employees (directory)","description":"List the company's employees from the TalentHR directory with name, e-mail, job title, department, division, location, employment status, manager id, hire date and phone. Paged (limit max 100): use next_offset to continue. Filter by location, department, division or employment status (emp_state) with `filter`; get the ids from talenthr_get_directory_filters. Use `custom_fields` to add extra field slugs (from the company's custom fields). Returns personal data; summarize only what the user asked for.","inputs":[{"name":"custom_fields","type":"string","required":false,"description":"Comma-separated custom field slugs to include, e.g. address,city,custom-field-001."},{"name":"filter","type":"string","required":false,"description":"Filter: key=comma-separated ids, keys separated by ';', e.g. location=36;emp_state=1,2,3. Valid keys and ids come from talenthr_get_directory_filters."},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-100 (default 10)."},{"name":"offset","type":"integer","required":false,"description":"Row offset, 0-based (default 0). Use next_offset from the previous reply."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":238},{"name":"talenthr_get_directory_filters","title":"Get directory filters","description":"List the valid filter options (departments, divisions, locations, employment statuses) with their ids, to build the `filter` argument of talenthr_list_employees and talenthr_get_calendar.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":50},{"name":"talenthr_get_employee","title":"Get an employee","description":"Get one employee's profile: birth date, hire and termination date, personal e-mail, work phone, address, nationality, gender, job title, department, division, location, role, seniority and custom fields. Contains sensitive personal data (it can include the SSN); only fetch it when the user asked about that person.","inputs":[{"name":"employee_id","type":"integer","required":true,"description":"The employee id (from talenthr_list_employees)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":95},{"name":"talenthr_get_employee_job","title":"Get an employee's job history","description":"Get one employee's job information: employment status history, manager records, job records (title, department, location over time), compensation records and benefits. Compensation is sensitive; only fetch it when the user asked.","inputs":[{"name":"employee_id","type":"integer","required":true,"description":"The employee id (from talenthr_list_employees)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":71},{"name":"talenthr_get_organization_chart","title":"Get the organization chart","description":"List all current employees with their manager (reports_to_employee_id), job title and role, to answer who reports to whom.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":37},{"name":"talenthr_list_departments","title":"List departments","description":"List all departments of the company with their ids (the ids are what talenthr_list_employees filters and employee records refer to).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":37},{"name":"talenthr_list_divisions","title":"List divisions","description":"List all divisions of the company with their ids (the ids are what talenthr_list_employees filters and employee records refer to).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":37},{"name":"talenthr_list_locations","title":"List locations","description":"List all locations (with address and remote flag) of the company with their ids (the ids are what talenthr_list_employees filters and employee records refer to).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":43},{"name":"talenthr_list_job_titles","title":"List job titles","description":"List all job titles of the company with their ids (the ids are what talenthr_list_employees filters and employee records refer to).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":38},{"name":"talenthr_list_time_off_types","title":"List time off types","description":"List the time off types (vacation, sick leave, ...) with id, yearly budget, whether approval is needed and whether it is paid. The id is needed to book a request with talenthr_create_time_off_request.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":57},{"name":"talenthr_list_employee_time_off_requests","title":"List an employee's time off requests","description":"List one employee's time off requests (dates, type, days, approved or pending, canceled). Paged: use next_offset to continue. A request with approved=null is still pending.","inputs":[{"name":"employee_id","type":"integer","required":true,"description":"The employee id (from talenthr_list_employees)."},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-100 (default 10)."},{"name":"offset","type":"integer","required":false,"description":"Row offset, 0-based (default 0). Use next_offset from the previous reply."},{"name":"sort","type":"string","required":false,"description":"Column to sort by: id, timeoff_type_name, created_at."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":134},{"name":"talenthr_get_employee_time_off_budgets","title":"Get an employee's time off balances","description":"Get one employee's time off budgets per type and cycle: budget, original budget, used days and accrual figures, i.e. how many days they have left. Optionally limit to the current cycle (active) or one cycle id.","inputs":[{"name":"active","type":"boolean","required":false,"description":"true = only the currently active time off cycle."},{"name":"employee_id","type":"integer","required":true,"description":"The employee id (from talenthr_list_employees)."},{"name":"time_off_cycle_id","type":"integer","required":false,"description":"Limit to one time off cycle id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":115},{"name":"talenthr_get_calendar","title":"Get the time off calendar","description":"Who is off when: employees with their time off requests and the holidays for a date range. Without end_date the range runs to the end of the start month (max 2 years). Without a filter it includes every employee (also terminated). Filter with keys time_off (pending, approved), department, division, location, emp_state and time_off_type (e.g. time_off=pending,approved;department=6), or one employee with employee_id.","inputs":[{"name":"employee_id","type":"integer","required":false,"description":"Only this employee's calendar."},{"name":"end_date","type":"string","required":false,"description":"Last day, yyyy-mm-dd (default: end of the start month)."},{"name":"filter","type":"string","required":false,"description":"Filter: key=comma-separated ids, keys separated by ';', e.g. location=36;emp_state=1,2,3. Valid keys and ids come from talenthr_get_directory_filters."},{"name":"start_date","type":"string","required":true,"description":"First day, yyyy-mm-dd."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":199},{"name":"talenthr_list_holidays","title":"List holidays","description":"List the company holidays of a year (current year by default) with date and who they apply to.","inputs":[{"name":"year","type":"integer","required":false,"description":"Year, e.g. 2026 (default: this year)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":52},{"name":"talenthr_list_benefits","title":"List benefits","description":"List the company's benefits with category, cost, dates and who they are required for. Optional `filter` with keys location, department, division, job_title, emp_state and employee (e.g. location=36;emp_state=1,2).","inputs":[{"name":"filter","type":"string","required":false,"description":"Filter: key=comma-separated ids, keys separated by ';', e.g. location=36;emp_state=1,2,3. Valid keys and ids come from talenthr_get_directory_filters."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":110},{"name":"talenthr_get_employee_benefits","title":"Get an employee's benefits","description":"List the benefits one employee has (category, cost, start and end date).","inputs":[{"name":"employee_id","type":"integer","required":true,"description":"The employee id (from talenthr_list_employees)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":47},{"name":"talenthr_list_assets","title":"List company assets","description":"List the company's assets (laptops, phones, subscriptions, memberships) with status, category, serial number, cost, purchase and warranty dates. Paged: use next_offset to continue. `search` matches name, description or category; `filter` takes status and category ids (e.g. status=1,2;category=19).","inputs":[{"name":"filter","type":"string","required":false,"description":"Filter: key=comma-separated ids, keys separated by ';', e.g. location=36;emp_state=1,2,3. Valid keys and ids come from talenthr_get_directory_filters."},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-100 (default 10)."},{"name":"offset","type":"integer","required":false,"description":"Row offset, 0-based (default 0). Use next_offset from the previous reply."},{"name":"order","type":"string","required":false,"description":"Sort direction."},{"name":"search","type":"string","required":false,"description":null},{"name":"sort","type":"string","required":false,"description":"Column to sort by: created_at, name, category, location, department, division, used_by, serial_number, warranty_end_date."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":221},{"name":"talenthr_get_employee_assets","title":"Get an employee's assets","description":"List the assets (inventory and memberships) assigned to one employee. Paged: use next_offset to continue.","inputs":[{"name":"employee_id","type":"integer","required":true,"description":"The employee id (from talenthr_list_employees)."},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-100 (default 10)."},{"name":"offset","type":"integer","required":false,"description":"Row offset, 0-based (default 0). Use next_offset from the previous reply."},{"name":"order","type":"string","required":false,"description":"Sort direction."},{"name":"sort","type":"string","required":false,"description":"Column to sort by: assing_date, name, category, type, serial_number."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"talenthr_list_job_positions","title":"List job positions","description":"List the company's job positions (open and closed) with title, status, location, department, publish date and the hiring steps. The id is used to list a position's applicants.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":48},{"name":"talenthr_list_job_position_applicants","title":"List applicants of a job position","description":"List the applicants of one job position with contact data, current hiring step and whether they are disqualified. Paged: use next_offset to continue. `search` matches first name, last name and e-mail.","inputs":[{"name":"job_position_id","type":"integer","required":true,"description":"The job position id (from talenthr_list_job_positions)."},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-100 (default 10)."},{"name":"offset","type":"integer","required":false,"description":"Row offset, 0-based (default 0). Use next_offset from the previous reply."},{"name":"order","type":"string","required":false,"description":"Sort direction."},{"name":"search","type":"string","required":false,"description":null},{"name":"sort","type":"string","required":false,"description":"Column to sort by: name, created_at."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":153},{"name":"talenthr_list_applicants","title":"List all applicants","description":"List every candidate across all job positions with contact data and the number of applications. Paged: use next_offset to continue. `search` matches first name, last name and e-mail; `starred_only` returns only the starred candidates (the talent pool).","inputs":[{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-100 (default 10)."},{"name":"offset","type":"integer","required":false,"description":"Row offset, 0-based (default 0). Use next_offset from the previous reply."},{"name":"order","type":"string","required":false,"description":"Sort direction."},{"name":"search","type":"string","required":false,"description":null},{"name":"sort","type":"string","required":false,"description":"Column to sort by: name, created_at."},{"name":"starred_only","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":149},{"name":"talenthr_get_applicant","title":"Get an applicant","description":"Get one candidate with contact data, description, CV info and all applications with the hiring step each one is in. The application ids are used by talenthr_create_applicant_note.","inputs":[{"name":"applicant_id","type":"integer","required":true,"description":"The applicant id (from talenthr_list_applicants)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":66},{"name":"talenthr_get_headcount_report","title":"Get the headcount report","description":"Headcount per month over a period (total and optionally grouped by gender, location, department, division, ...), plus the current headcount.","inputs":[{"name":"end_date","type":"string","required":false,"description":"Custom range end, yyyy-mm-dd."},{"name":"filter","type":"string","required":false,"description":"Filter: key=comma-separated ids, keys separated by ';', e.g. location=36;emp_state=1,2,3. Valid keys and ids come from talenthr_get_directory_filters."},{"name":"group_by","type":"string","required":false,"description":"Break the headcount down by this dimension."},{"name":"period","type":"string","required":false,"description":"Reporting period: l12m (last 12 months) or a 4-digit year (the current or the previous calendar year). Alternatively pass start_date and end_date (max 36 months)."},{"name":"start_date","type":"string","required":false,"description":"Custom range start, yyyy-mm-dd (use with end_date instead of period)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":188},{"name":"talenthr_get_hires_leaves_report","title":"Get the hires and leaves report","description":"Hires, terminations and attrition rate per month over a period.","inputs":[{"name":"end_date","type":"string","required":false,"description":"Custom range end, yyyy-mm-dd."},{"name":"filter","type":"string","required":false,"description":"Filter: key=comma-separated ids, keys separated by ';', e.g. location=36;emp_state=1,2,3. Valid keys and ids come from talenthr_get_directory_filters."},{"name":"period","type":"string","required":false,"description":"Reporting period: l12m (last 12 months) or a 4-digit year (the current or the previous calendar year). Alternatively pass start_date and end_date (max 36 months)."},{"name":"start_date","type":"string","required":false,"description":"Custom range start, yyyy-mm-dd (use with end_date instead of period)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":160},{"name":"talenthr_get_time_off_report","title":"Get the time off report","description":"Approved, non-canceled time off summarized per month and per weekday, split by time off type, for a period.","inputs":[{"name":"end_date","type":"string","required":false,"description":"Custom range end, yyyy-mm-dd."},{"name":"filter","type":"string","required":false,"description":"Filter: key=comma-separated ids, keys separated by ';', e.g. location=36;emp_state=1,2,3. Valid keys and ids come from talenthr_get_directory_filters."},{"name":"period","type":"string","required":false,"description":"Reporting period: l12m (last 12 months) or a 4-digit year (the current or the previous calendar year). Alternatively pass start_date and end_date (max 36 months)."},{"name":"start_date","type":"string","required":false,"description":"Custom range start, yyyy-mm-dd (use with end_date instead of period)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":167},{"name":"talenthr_list_time_tracking_entries","title":"List time tracking entries","description":"List time tracking entries across all employees (start, end, duration, tags) for a period or date range. Paged: use next_offset to continue. working_now=true lists only running timers. Needs a key whose user may see everyone's time tracking.","inputs":[{"name":"end_date","type":"string","required":false,"description":"Range end, yyyy-mm-dd."},{"name":"filter","type":"string","required":false,"description":"Filter: key=comma-separated ids, keys separated by ';', e.g. location=36;emp_state=1,2,3. Valid keys and ids come from talenthr_get_directory_filters."},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-100 (default 10)."},{"name":"offset","type":"integer","required":false,"description":"Row offset, 0-based (default 0). Use next_offset from the previous reply."},{"name":"order","type":"string","required":false,"description":"Sort direction."},{"name":"period","type":"string","required":false,"description":"Preset period (default today when no dates are given). Alternatively pass start_date and end_date (max 36 months)."},{"name":"search","type":"string","required":false,"description":null},{"name":"sort","type":"string","required":false,"description":"Column to sort by: time, started_at, ended_at, name, tag, location."},{"name":"start_date","type":"string","required":false,"description":"Range start, yyyy-mm-dd."},{"name":"working_now","type":"boolean","required":false,"description":"true = only entries that are running right now."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":271},{"name":"talenthr_create_time_off_request","title":"Book a time off request","description":"WRITE: book a time off request for an employee (talenthr_list_time_off_types gives the type id). Unless preapproved=true, TalentHR automatically E-MAILS THE EMPLOYEE'S MANAGER to approve or reject it. preapproved=true auto-approves it when the key's user is allowed to (so no manager decides): only use it when the user explicitly said the time off is already approved. Dates must be within one year from today and inside a time off cycle. Optionally give amount_options (days per date: 1, 0.5, 0 for non-working days; every date from start to end needs a value); when omitted TalentHR works it out. Cannot be undone through this server.","inputs":[{"name":"amount_options","type":"object","required":false,"description":"Per-day amounts keyed by yyyy-mm-dd, e.g. {\"2026-11-02\":1,\"2026-11-03\":0.5}. Must cover every date from start_date to end_date."},{"name":"employee_id","type":"integer","required":true,"description":"The employee id (from talenthr_list_employees)."},{"name":"end_date","type":"string","required":true,"description":"Last day off (inclusive), yyyy-mm-dd."},{"name":"note","type":"string","required":false,"description":"Note for the approver (max 255 characters)."},{"name":"preapproved","type":"boolean","required":false,"description":"true = auto-approve (no manager e-mail decision). Default false."},{"name":"start_date","type":"string","required":true,"description":"First day off, yyyy-mm-dd."},{"name":"timeoff_type_id","type":"integer","required":true,"description":"Time off type id (from talenthr_list_time_off_types)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":323},{"name":"talenthr_reply_time_off_request","title":"Approve or reject a time off request","description":"WRITE: approve (accept=true) or reject (accept=false) a pending time off request. TalentHR automatically E-MAILS THE EMPLOYEE the decision. A request that was already answered or canceled cannot be answered again. Only do this when the user explicitly asked for that decision on that request (find ids with talenthr_list_employee_time_off_requests or talenthr_get_calendar).","inputs":[{"name":"accept","type":"boolean","required":true,"description":"true = approve, false = reject."},{"name":"employee_id","type":"integer","required":true,"description":"The id of the employee who made the request."},{"name":"time_off_request_id","type":"integer","required":true,"description":"The time off request id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":134},{"name":"talenthr_create_applicant_note","title":"Add a note to a job application","description":"WRITE: add an internal note to a job application (visible to the hiring team in TalentHR; no one is e-mailed). Needs the job position id and the application id (talenthr_get_applicant lists an applicant's applications with their job_position_id). Notes cannot be edited or deleted through this server.","inputs":[{"name":"application_id","type":"integer","required":true,"description":"The application id (from talenthr_get_applicant)."},{"name":"job_position_id","type":"integer","required":true,"description":"The job position id of the application."},{"name":"note_text","type":"string","required":true,"description":"The note text (max 30000 characters)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":127}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:04:08.000Z","track":"remote","endpoint":"https://talenthr.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":"talenthr.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_01a19a4a-f4cb-759b-ade1-1d8e50be44a5","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19a4a-f4cb-759b-ade1-1d8e50be44a5"},{"id":"chg_01a19a4a-f4cc-7e83-9e26-6ff9e091d701","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19a4a-f4cc-7e83-9e26-6ff9e091d701"},{"id":"chg_01a19a4a-f4cf-713e-9fc5-676d77ad56ef","kind":"check.unverifiable","summary":"Stability (0.03 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19a4a-f4cf-713e-9fc5-676d77ad56ef"},{"id":"chg_01a19a4a-f4cf-7cc5-9f53-0ade6019275d","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19a4a-f4cf-7cc5-9f53-0ade6019275d"},{"id":"chg_01a19a4a-f4dd-76ee-a4ae-b592b5fc936a","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19a4a-f4dd-76ee-a4ae-b592b5fc936a"},{"id":"chg_01a19a4a-f4df-7127-bdfe-69a87c0ec3da","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19a4a-f4df-7127-bdfe-69a87c0ec3da"},{"id":"chg_01a19a4a-f4df-7600-a8a6-2361e8bf8584","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19a4a-f4df-7600-a8a6-2361e8bf8584"},{"id":"chg_01a19a4a-f4e2-7dda-93dc-84d2e54600cd","kind":"score.total_changed","summary":"Trust score (65 → 18)","materiality":"functional","direction":"regression","scoreDelta":-47,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19a4a-f4e2-7dda-93dc-84d2e54600cd"},{"id":"chg_01a19525-b99a-71a3-8450-916a348a0274","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr#chg-chg_01a19525-b99a-71a3-8450-916a348a0274"},{"id":"chg_01a193fd-bc08-7be5-a4a2-3348003de119","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-talenthr/talenthr#chg-chg_01a193fd-bc08-7be5-a4a2-3348003de119"},{"id":"chg_01a190a5-8023-7bd2-8266-417d1e561980","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-talenthr/talenthr#chg-chg_01a190a5-8023-7bd2-8266-417d1e561980"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr","markdown":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-talenthr/talenthr.xml","external":[{"label":"Remote endpoint","href":"https://talenthr.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/talenthr/"}]}}