{"$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-05T17:39:30.633Z","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob","markdownUrl":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob.md","server":{"slug":"ai-agentasy-cronjob","name":"agent-cronjob","registryName":"ai.agentasy/cronjob","description":"Scheduled, HMAC-signed, retried webhook triggers for AI agents. No account: self-register via tools.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"cronjob","type":"remote","identifier":"https://cronjob.agentasy.ai/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob","version":"0.0.1","transport":null,"scoredAt":"2026-11-05T01:33:13.726Z"},"score":{"total":24,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":24},{"date":"2026-11-04","total":65}]},"categories":[{"name":"Endpoint Security","score":60,"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 is enforced; there's no plaintext access path.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC is configured correctly; the domain's records validate against the full chain to the root."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.enforced","args":{}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.validated","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint returned HTTP 502."],"codes":[{"code":"transport.http_error","args":{"status":"502","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.","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":"cronjob","type":"remote","identifier":"https://cronjob.agentasy.ai/mcp","withdrawn":false,"score":24,"current":true,"url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob","markdownUrl":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob.md"}],"facts":[{"label":"Endpoint","value":"https://cronjob.agentasy.ai/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"0.0.1"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"create_job","title":"Create a job (start registration)","description":"Step 1. Register your webhook and schedule (no account, no API key). Returns job_id and a one-time setup_token, and POSTs a url_verification challenge to webhook_url. Your webhook must answer it (echo: reply 2xx {\"challenge\":\"<same>\"}) — then call claim_credentials. Or reply 2xx and call verify_challenge with the value (callback). Nothing triggers before verification. (REST: POST /v1/jobs)","inputs":[{"name":"catchup_policy","type":"string","required":false,"description":null},{"name":"catchup_window_sec","type":"integer","required":false,"description":null},{"name":"max_runs","type":null,"required":false,"description":"Complete after this many dispatched runs; null = unlimited."},{"name":"name","type":"string|null","required":false,"description":null},{"name":"outgoing_auth","type":null,"required":false,"description":"Optional header your webhook requires (e.g. a Grok routine webhook that needs Authorization). Sent on the url_verification POST and every trigger; never overrides the X-Cronjob-* headers."},{"name":"payload","type":"object","required":false,"description":"Sent unchanged in every trigger (≤ 8 KB)."},{"name":"retry_base_sec","type":"integer","required":false,"description":null},{"name":"retry_max_attempts","type":"integer","required":false,"description":null},{"name":"retry_max_backoff_sec","type":"integer","required":false,"description":null},{"name":"schedule","type":"object","required":true,"description":"Exactly one of {cron, timezone?}, {interval_sec}, {run_at}. Minimum spacing 60 s."},{"name":"signature_in_body","type":"boolean","required":false,"description":"Default false. true = every trigger body also carries cronjob_signature {version, timestamp, delivery_id, signatures[], signature} (HMAC over \"v1b:{timestamp}:{delivery_id}:\" + canonical JSON of the…"},{"name":"timeout_ms","type":"integer","required":false,"description":null},{"name":"verification_mode","type":"string","required":false,"description":"Informational; both answers work. Default echo."},{"name":"webhook_url","type":"string","required":true,"description":"Public https URL of your agent. It receives the challenge now and the signed triggers later."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":397},{"name":"verify_challenge","title":"Verify the challenge (callback mode)","description":"Step 2 (callback mode). Send back the challenge value your webhook received. On success the result holds hmac_secret and management_token — SHOWN ONCE, store them now. (REST: POST /v1/jobs/{id}/verify)","inputs":[{"name":"challenge","type":"string","required":true,"description":"The challenge value from the url_verification POST"},{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":92},{"name":"claim_credentials","title":"Poll verification / collect credentials","description":"Step 3. Poll verification state with the setup_token. The first call after the webhook is verified returns hmac_secret (signs triggers) and management_token (manages the job) — SHOWN ONCE, store them now; later calls say credentials: \"already_issued\". (REST: GET /v1/jobs/{id}/verification)","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"setup_token","type":"string","required":false,"description":"act_st_… setup token from create_job. Optional if the MCP HTTP request carries Authorization: Bearer <setup_token>."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"retry_challenge","title":"Re-send the challenge","description":"Re-send a fresh url_verification challenge to your webhook (at most 5 re-sends (6 challenges in total), at least 60 s apart). The previous challenge stops working. (REST: POST /v1/jobs/{id}/verification/retry)","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"setup_token","type":"string","required":false,"description":"act_st_… setup token from create_job. Optional if the MCP HTTP request carries Authorization: Bearer <setup_token>."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":111},{"name":"list_jobs","title":"List your jobs","description":"Status of every job you hold a management token for. There are no accounts, so pass each {job_id, management_token} pair (up to 20); a pair without management_token uses the Authorization header. (REST: GET /v1/jobs/{id} (once per job))","inputs":[{"name":"jobs","type":"array","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":74},{"name":"get_job","title":"Get a job","description":"Settings, status, next_run_at, run_count and credential prefixes of one job (webhook path masked). (REST: GET /v1/jobs/{id})","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":87},{"name":"update_job","title":"Change job settings","description":"Change a job in place. Currently only signature_in_body (true = triggers also carry cronjob_signature in the JSON body, for platforms that drop the X-Cronjob-* headers). Applies from the next attempt sent; returns the updated job. (REST: PATCH /v1/jobs/{id})","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."},{"name":"signature_in_body","type":"boolean","required":false,"description":"Default false. true = every trigger body also carries cronjob_signature {version, timestamp, delivery_id, signatures[], signature} (HMAC over \"v1b:{timestamp}:{delivery_id}:\" + canonical JSON of the…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":196},{"name":"pause_job","title":"Pause a job","description":"Stop triggering (idempotent). Schedule points while paused are not made up later. (REST: POST /v1/jobs/{id}/pause)","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":84},{"name":"resume_job","title":"Resume a job","description":"Resume a paused or disabled job from its next schedule point; resets consecutive_failures. (REST: POST /v1/jobs/{id}/resume)","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":84},{"name":"delete_job","title":"Delete a job","description":"Stop the job forever and revoke all its credentials. Cannot be undone. (REST: DELETE /v1/jobs/{id})","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":79},{"name":"get_deliveries","title":"Run history","description":"Trigger log, newest first: scheduled_at, first attempt time, delay, attempts, status and last response code of each run. since/until (ISO 8601) filter scheduled_at; page with next_cursor. (REST: GET /v1/jobs/{id}/runs)","inputs":[{"name":"cursor","type":"string","required":false,"description":null},{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"limit","type":"integer","required":false,"description":null},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."},{"name":"since","type":"string","required":false,"description":null},{"name":"status","type":"string","required":false,"description":null},{"name":"until","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":148},{"name":"get_run","title":"One run with every delivery attempt","description":"One run and each delivery attempt: sent_at, response status, duration, error and next retry. (REST: GET /v1/jobs/{id}/runs/{run_id})","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."},{"name":"run_id","type":"string","required":true,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":98},{"name":"get_stats","title":"Punctuality stats","description":"On-time rate, p50/p95 first-attempt delay and success rate over a window (default 24h). (REST: GET /v1/jobs/{id}/stats)","inputs":[{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."},{"name":"window","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":98},{"name":"rotate_secret","title":"Rotate the HMAC signing secret","description":"New hmac_secret (SHOWN ONCE, store it now). Until previous.expires_at (grace_sec, default 24 h) triggers carry two v1= signatures, new first. (REST: POST /v1/jobs/{id}/rotate-secret)","inputs":[{"name":"grace_sec","type":"integer","required":false,"description":null},{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":116},{"name":"rotate_token","title":"Rotate the management token","description":"New management_token (SHOWN ONCE, store it now). The old one stops working after grace_sec (default 0 = immediately). (REST: POST /v1/jobs/{id}/rotate-token)","inputs":[{"name":"grace_sec","type":"integer","required":false,"description":null},{"name":"job_id","type":"string","required":true,"description":"job_<ULID> returned by create_job"},{"name":"management_token","type":"string","required":false,"description":"act_mt_… management token. Optional if the MCP HTTP request carries Authorization: Bearer <management_token>."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":104}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T01:33:13.000Z","track":"remote","endpoint":"https://cronjob.agentasy.ai/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=agentasy.ai","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-10-05T08:55:33Z","notAfter":"2027-01-03T09:55:29Z","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":"secure","label":"Secure","name":"cronjob.agentasy.ai.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"ai.","outcome":"verified","label":"Verified"},{"zone":"agentasy.ai.","outcome":"verified","label":"Verified"},{"zone":"cronjob.agentasy.ai.","outcome":"verified","label":"Verified"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":502,"authorizationServers":[]},"httpsRedirect":{"outcome":"https_enforced","label":"HTTPS enforced","status":301},"transports":[{"transport":"streamable-http","outcome":"http_error","label":"HTTP error","status":502,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-11-04","recent":[{"id":"chg_01a1a956-b294-73fd-a625-568f9fa5173f","kind":"check.unverifiable","summary":"Authorization (fail → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a956-b294-73fd-a625-568f9fa5173f"},{"id":"chg_01a1a956-b295-72c2-ae0d-523b63d38e3a","kind":"check.verdict","summary":"Transport (pass → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a956-b295-72c2-ae0d-523b63d38e3a"},{"id":"chg_01a1a956-b295-7929-9c68-8237371ec47f","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a956-b295-7929-9c68-8237371ec47f"},{"id":"chg_01a1a956-b296-748b-b94b-fd6ad74e21c3","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a956-b296-748b-b94b-fd6ad74e21c3"},{"id":"chg_01a1a956-b296-7e1d-b05f-30900e79952e","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a956-b296-7e1d-b05f-30900e79952e"},{"id":"chg_01a1a956-b297-7c65-9993-bfc0fa791d2f","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a956-b297-7c65-9993-bfc0fa791d2f"},{"id":"chg_01a1a956-b2a2-7df5-8e8f-29744d6811b8","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a956-b2a2-7df5-8e8f-29744d6811b8"},{"id":"chg_01a1a956-b2a3-7b71-bb32-7a68a246c472","kind":"score.total_changed","summary":"Trust score (65 → 24)","materiality":"functional","direction":"regression","scoreDelta":-41,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a956-b2a3-7b71-bb32-7a68a246c472"},{"id":"chg_01a1a3e0-c823-7b29-9407-f5252edb4d5b","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-04","url":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob#chg-chg_01a1a3e0-c823-7b29-9407-f5252edb4d5b"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob/changelog.json"},"links":{"html":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob","markdown":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob.md","changelogJson":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob/changelog.json","changelogRss":"https://verifymcp.io/servers/ai-agentasy-cronjob/cronjob.xml","external":[{"label":"Remote endpoint","href":"https://cronjob.agentasy.ai/mcp"},{"label":"Website","href":"https://cronjob.agentasy.ai/"}]}}