{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_jgfrwun6afw9","handle":"tlly","url":"https://wellknown.network/agents/tlly","links":{"self":"https://wellknown.network/agents/tlly/record.json","html":"https://wellknown.network/agents/tlly","markdown":"https://wellknown.network/agents/tlly/record.md","api":"https://wellknown.network/api/v1/agents/tlly","status":"https://wellknown.network/api/v1/agents/tlly/status","claim":"https://wellknown.network/agents/tlly/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/tlly/claim.json","badge":"https://wellknown.network/agents/tlly/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/tlly/history","tools":"https://wellknown.network/api/v1/agents/tlly/tools"},"ard":{"identifier":"urn:air:tlly.dev:server:tlly","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"tlly","summary":"Hosted dashboards and scheduled data jobs for AI agents, with thresholds, alerts and share links.","description":"Hosted dashboards and scheduled data jobs for AI agents, with thresholds, alerts and share links.","publisher":{"name":"dev.tlly","url":null},"homepage":"https://tlly.dev","repository":"https://github.com/FifthsegmentEng/tlly-mcp","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://tlly.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-30T21:44:41.899191Z","publishedAt":"2026-10-30T21:44:41.899191Z","registryName":"dev.tlly/tlly"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.992,"provenance":"derived"},{"slug":"automation.workflows","name":"Workflow Automation","confidence":0.977,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.554,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.525,"provenance":"derived"},{"slug":"security.secrets","name":"Secrets Management","confidence":0.51,"provenance":"derived"}],"categories":["ai","analytics","automation","commerce","communication","documents","productivity","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-11-02T18:23:43.134Z","lastProbedAt":"2026-11-02T18:23:43.134Z","statusComputedAt":"2026-11-02T18:27:51.919Z","reliability30d":{"probes":4,"successRate":1,"p50Ms":294,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":4,"ok":4,"authBoundaryOk":0,"serviceOk":4,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-11-02T18:23:43.134Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":307,"error":null,"detail":{"tools":[{"name":"create_dashboard","description":"Create a hosted dashboard; returns its public URL. Dashboard spec: {\"title\": str, \"description\"?: str, \"range\"?: \"1m\"|\"3m\"|\"6m\"|\"ytd\"|\"1y\"|\"2y\"|\"5y\"|\"10y\"|\"max\""},{"name":"update_dashboard","description":"Replace a dashboard's spec (URL stays the same). Every update is saved as a numbered version. With \"draft\": true it is saved without going live: viewers keep se"},{"name":"list_dashboard_versions","description":"List a dashboard's saved versions (newest first) with which one is live and a members-only preview URL for each."},{"name":"publish_dashboard_version","description":"Make a saved version of a dashboard the live one (also to roll back). The dashboard keeps its URL and visibility."},{"name":"rotate_dashboard_url","description":"Give a dashboard a new public URL and disable the old one at once (e.g. if a link leaked). Spec and data are unchanged."},{"name":"list_dashboards","description":"List dashboards with their URLs."},{"name":"delete_dashboard","description":"Delete a dashboard (series data is kept)."},{"name":"push_points","description":"Write dated values to a series (upsert by date). Use when you compute data yourself. Values are numbers, or short text labels for a text series (e.g. a rating o"},{"name":"get_series","description":"Read the latest points of a series."},{"name":"list_series","description":"List all series with their type (number or text), point counts and date ranges; text series also list their values."},{"name":"delete_series","description":"Delete all points of a series, or remove a derived series' definition."},{"name":"define_derived","description":"Create or replace a derived series, computed from other series every time it is read (always fresh, stores no points, counts toward the series limit). definitio"},{"name":"list_secrets","description":"List the names of the workspace's stored secrets (API keys for private sources) and the host each may be sent to. Use one in a job's url, headers or body as {{s"},{"name":"test_job","description":"Dry-run a job spec: fetch, extract and transform, return a preview. Saves nothing. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 mi"},{"name":"create_job","description":"Schedule a fetch job. It runs once immediately and the result is returned. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"req"},{"name":"import_once","description":"Fetch a job spec once and save the result, without scheduling it or using a job slot (\"cron\" is optional and ignored). Use for one-off dashboards whose data doe"},{"name":"update_job","description":"Replace a job's spec, or pause it with enabled=false. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"request\": {\"url\", \"metho"},{"name":"list_jobs","description":"List scheduled fetch jobs with their last run status and any error message."},{"name":"run_job_now","description":"Run a scheduled fetch job immediately, store any new points, and return the run result."},{"name":"delete_job","description":"Delete a job (its series data is kept)."},{"name":"get_status","description":"Health check: failing jobs, stale or empty panels, dashboards, storage usage. Call this to verify everything works."},{"name":"get_usage","description":"Storage usage against quotas (data points = values + annotations, series, dashboards, jobs) and the largest series. Check before large writes."},{"name":"add_annotations","description":"Attach short dated notes to a series (e.g. 'Policy rate raised to 4.5%'); shown as markers on charts. Single-line plain text, max 280 chars; one note per date ("},{"name":"list_annotations","description":"Read the latest annotations of a series."},{"name":"delete_annotations","description":"Delete annotations of a series on the given dates, or all of them if dates is omitted."},{"name":"set_alert_webhook","description":"Set or clear the workspace webhook URL for job-failure and dashboard status alerts (pass an empty url to clear). When events fire, tlly POSTs JSON to that URL ("},{"name":"set_panel_alert","description":"Set when one dashboard panel sends alert email and/or a webhook (colour change, threshold cross, or off). trigger: change (default), red, notgreen, above, below"},{"name":"set_stale_alert","description":"Configure when tlly sends stale-data alert email and webhooks because a series stopped updating. after: auto (from the job schedule and point spacing, at least "},{"name":"list_integration_skills","description":"List integration setup playbooks (Stripe, Shopify, Sheets, and the other sources tlly can read). A spreadsheet starts from the KPI template. Make a copy https:/"},{"name":"get_integration_skill","description":"Read one integration playbook by id: what to track, the minimum credential and scopes, the exact tlly job, and gotchas. google-sheets and json-api also return a"}],"toolCount":30,"toolsHash":"ab8faa251d31fa8a0340b50f3bed01c7a943bc7901a3d5d6c788e17a211afc96","serverName":"tlly","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-02T09:28:02.894Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":430,"error":null,"detail":{"tools":[{"name":"create_dashboard","description":"Create a hosted dashboard; returns its public URL. Dashboard spec: {\"title\": str, \"description\"?: str, \"range\"?: \"1m\"|\"3m\"|\"6m\"|\"ytd\"|\"1y\"|\"2y\"|\"5y\"|\"10y\"|\"max\""},{"name":"update_dashboard","description":"Replace a dashboard's spec (URL stays the same). Every update is saved as a numbered version. With \"draft\": true it is saved without going live: viewers keep se"},{"name":"list_dashboard_versions","description":"List a dashboard's saved versions (newest first) with which one is live and a members-only preview URL for each."},{"name":"publish_dashboard_version","description":"Make a saved version of a dashboard the live one (also to roll back). The dashboard keeps its URL and visibility."},{"name":"rotate_dashboard_url","description":"Give a dashboard a new public URL and disable the old one at once (e.g. if a link leaked). Spec and data are unchanged."},{"name":"list_dashboards","description":"List dashboards with their URLs."},{"name":"delete_dashboard","description":"Delete a dashboard (series data is kept)."},{"name":"push_points","description":"Write dated values to a series (upsert by date). Use when you compute data yourself. Values are numbers, or short text labels for a text series (e.g. a rating o"},{"name":"get_series","description":"Read the latest points of a series."},{"name":"list_series","description":"List all series with their type (number or text), point counts and date ranges; text series also list their values."},{"name":"delete_series","description":"Delete all points of a series, or remove a derived series' definition."},{"name":"define_derived","description":"Create or replace a derived series, computed from other series every time it is read (always fresh, stores no points, counts toward the series limit). definitio"},{"name":"list_secrets","description":"List the names of the workspace's stored secrets (API keys for private sources) and the host each may be sent to. Use one in a job's url, headers or body as {{s"},{"name":"test_job","description":"Dry-run a job spec: fetch, extract and transform, return a preview. Saves nothing. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 mi"},{"name":"create_job","description":"Schedule a fetch job. It runs once immediately and the result is returned. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"req"},{"name":"import_once","description":"Fetch a job spec once and save the result, without scheduling it or using a job slot (\"cron\" is optional and ignored). Use for one-off dashboards whose data doe"},{"name":"update_job","description":"Replace a job's spec, or pause it with enabled=false. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"request\": {\"url\", \"metho"},{"name":"list_jobs","description":"List scheduled fetch jobs with their last run status and any error message."},{"name":"run_job_now","description":"Run a scheduled fetch job immediately, store any new points, and return the run result."},{"name":"delete_job","description":"Delete a job (its series data is kept)."},{"name":"get_status","description":"Health check: failing jobs, stale or empty panels, dashboards, storage usage. Call this to verify everything works."},{"name":"get_usage","description":"Storage usage against quotas (data points = values + annotations, series, dashboards, jobs) and the largest series. Check before large writes."},{"name":"add_annotations","description":"Attach short dated notes to a series (e.g. 'Policy rate raised to 4.5%'); shown as markers on charts. Single-line plain text, max 280 chars; one note per date ("},{"name":"list_annotations","description":"Read the latest annotations of a series."},{"name":"delete_annotations","description":"Delete annotations of a series on the given dates, or all of them if dates is omitted."},{"name":"set_alert_webhook","description":"Set or clear the workspace webhook URL for job-failure and dashboard status alerts (pass an empty url to clear). When events fire, tlly POSTs JSON to that URL ("},{"name":"set_panel_alert","description":"Set when one dashboard panel sends alert email and/or a webhook (colour change, threshold cross, or off). trigger: change (default), red, notgreen, above, below"},{"name":"set_stale_alert","description":"Configure when tlly sends stale-data alert email and webhooks because a series stopped updating. after: auto (from the job schedule and point spacing, at least "},{"name":"list_integration_skills","description":"List integration setup playbooks (Stripe, Shopify, Sheets, and the other sources tlly can read). A spreadsheet starts from the KPI template. Make a copy https:/"},{"name":"get_integration_skill","description":"Read one integration playbook by id: what to track, the minimum credential and scopes, the exact tlly job, and gotchas. google-sheets and json-api also return a"}],"toolCount":30,"toolsHash":"ab8faa251d31fa8a0340b50f3bed01c7a943bc7901a3d5d6c788e17a211afc96","serverName":"tlly","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-02T01:25:03.851Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":271,"error":null,"detail":{"tools":[{"name":"create_dashboard","description":"Create a hosted dashboard; returns its public URL. Dashboard spec: {\"title\": str, \"description\"?: str, \"range\"?: \"1m\"|\"3m\"|\"6m\"|\"ytd\"|\"1y\"|\"2y\"|\"5y\"|\"10y\"|\"max\""},{"name":"update_dashboard","description":"Replace a dashboard's spec (URL stays the same). Every update is saved as a numbered version. With \"draft\": true it is saved without going live: viewers keep se"},{"name":"list_dashboard_versions","description":"List a dashboard's saved versions (newest first) with which one is live and a members-only preview URL for each."},{"name":"publish_dashboard_version","description":"Make a saved version of a dashboard the live one (also to roll back). The dashboard keeps its URL and visibility."},{"name":"rotate_dashboard_url","description":"Give a dashboard a new public URL and disable the old one at once (e.g. if a link leaked). Spec and data are unchanged."},{"name":"list_dashboards","description":"List dashboards with their URLs."},{"name":"delete_dashboard","description":"Delete a dashboard (series data is kept)."},{"name":"push_points","description":"Write dated values to a series (upsert by date). Use when you compute data yourself. Values are numbers, or short text labels for a text series (e.g. a rating o"},{"name":"get_series","description":"Read the latest points of a series."},{"name":"list_series","description":"List all series with their type (number or text), point counts and date ranges; text series also list their values."},{"name":"delete_series","description":"Delete all points of a series, or remove a derived series' definition."},{"name":"define_derived","description":"Create or replace a derived series, computed from other series every time it is read (always fresh, stores no points, counts toward the series limit). definitio"},{"name":"list_secrets","description":"List the names of the workspace's stored secrets (API keys for private sources) and the host each may be sent to. Use one in a job's url, headers or body as {{s"},{"name":"test_job","description":"Dry-run a job spec: fetch, extract and transform, return a preview. Saves nothing. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 mi"},{"name":"create_job","description":"Schedule a fetch job. It runs once immediately and the result is returned. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"req"},{"name":"import_once","description":"Fetch a job spec once and save the result, without scheduling it or using a job slot (\"cron\" is optional and ignored). Use for one-off dashboards whose data doe"},{"name":"update_job","description":"Replace a job's spec, or pause it with enabled=false. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"request\": {\"url\", \"metho"},{"name":"list_jobs","description":"List scheduled fetch jobs with their last run status and any error message."},{"name":"run_job_now","description":"Run a scheduled fetch job immediately, store any new points, and return the run result."},{"name":"delete_job","description":"Delete a job (its series data is kept)."},{"name":"get_status","description":"Health check: failing jobs, stale or empty panels, dashboards, storage usage. Call this to verify everything works."},{"name":"get_usage","description":"Storage usage against quotas (data points = values + annotations, series, dashboards, jobs) and the largest series. Check before large writes."},{"name":"add_annotations","description":"Attach short dated notes to a series (e.g. 'Policy rate raised to 4.5%'); shown as markers on charts. Single-line plain text, max 280 chars; one note per date ("},{"name":"list_annotations","description":"Read the latest annotations of a series."},{"name":"delete_annotations","description":"Delete annotations of a series on the given dates, or all of them if dates is omitted."},{"name":"set_alert_webhook","description":"Set or clear the workspace webhook URL for job-failure and dashboard status alerts (pass an empty url to clear). When events fire, tlly POSTs JSON to that URL ("},{"name":"set_panel_alert","description":"Set when one dashboard panel sends alert email and/or a webhook (colour change, threshold cross, or off). trigger: change (default), red, notgreen, above, below"},{"name":"set_stale_alert","description":"Configure when tlly sends stale-data alert email and webhooks because a series stopped updating. after: auto (from the job schedule and point spacing, at least "},{"name":"list_integration_skills","description":"List integration setup playbooks (Stripe, Shopify, Sheets, and the other sources tlly can read). A spreadsheet starts from the KPI template. Make a copy https:/"},{"name":"get_integration_skill","description":"Read one integration playbook by id: what to track, the minimum credential and scopes, the exact tlly job, and gotchas. google-sheets and json-api also return a"}],"toolCount":30,"toolsHash":"ab8faa251d31fa8a0340b50f3bed01c7a943bc7901a3d5d6c788e17a211afc96","serverName":"tlly","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-01T17:31:07.076Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":281,"error":null,"detail":{"tools":[{"name":"create_dashboard","description":"Create a hosted dashboard; returns its public URL. Dashboard spec: {\"title\": str, \"description\"?: str, \"range\"?: \"1m\"|\"3m\"|\"6m\"|\"ytd\"|\"1y\"|\"2y\"|\"5y\"|\"10y\"|\"max\""},{"name":"update_dashboard","description":"Replace a dashboard's spec (URL stays the same). Every update is saved as a numbered version. With \"draft\": true it is saved without going live: viewers keep se"},{"name":"list_dashboard_versions","description":"List a dashboard's saved versions (newest first) with which one is live and a members-only preview URL for each."},{"name":"publish_dashboard_version","description":"Make a saved version of a dashboard the live one (also to roll back). The dashboard keeps its URL and visibility."},{"name":"rotate_dashboard_url","description":"Give a dashboard a new public URL and disable the old one at once (e.g. if a link leaked). Spec and data are unchanged."},{"name":"list_dashboards","description":"List dashboards with their URLs."},{"name":"delete_dashboard","description":"Delete a dashboard (series data is kept)."},{"name":"push_points","description":"Write dated values to a series (upsert by date). Use when you compute data yourself. Values are numbers, or short text labels for a text series (e.g. a rating o"},{"name":"get_series","description":"Read the latest points of a series."},{"name":"list_series","description":"List all series with their type (number or text), point counts and date ranges; text series also list their values."},{"name":"delete_series","description":"Delete all points of a series, or remove a derived series' definition."},{"name":"define_derived","description":"Create or replace a derived series, computed from other series every time it is read (always fresh, stores no points, counts toward the series limit). definitio"},{"name":"list_secrets","description":"List the names of the workspace's stored secrets (API keys for private sources) and the host each may be sent to. Use one in a job's url, headers or body as {{s"},{"name":"test_job","description":"Dry-run a job spec: fetch, extract and transform, return a preview. Saves nothing. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 mi"},{"name":"create_job","description":"Schedule a fetch job. It runs once immediately and the result is returned. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"req"},{"name":"import_once","description":"Fetch a job spec once and save the result, without scheduling it or using a job slot (\"cron\" is optional and ignored). Use for one-off dashboards whose data doe"},{"name":"update_job","description":"Replace a job's spec, or pause it with enabled=false. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"request\": {\"url\", \"metho"},{"name":"list_jobs","description":"List scheduled fetch jobs with their last run status and any error message."},{"name":"run_job_now","description":"Run a scheduled fetch job immediately, store any new points, and return the run result."},{"name":"delete_job","description":"Delete a job (its series data is kept)."},{"name":"get_status","description":"Health check: failing jobs, stale or empty panels, dashboards, storage usage. Call this to verify everything works."},{"name":"get_usage","description":"Storage usage against quotas (data points = values + annotations, series, dashboards, jobs) and the largest series. Check before large writes."},{"name":"add_annotations","description":"Attach short dated notes to a series (e.g. 'Policy rate raised to 4.5%'); shown as markers on charts. Single-line plain text, max 280 chars; one note per date ("},{"name":"list_annotations","description":"Read the latest annotations of a series."},{"name":"delete_annotations","description":"Delete annotations of a series on the given dates, or all of them if dates is omitted."},{"name":"set_alert_webhook","description":"Set or clear the workspace webhook URL for job-failure and dashboard status alerts (pass an empty url to clear). When events fire, tlly POSTs JSON to that URL ("},{"name":"set_panel_alert","description":"Set when one dashboard panel sends alert email and/or a webhook (colour change, threshold cross, or off). trigger: change (default), red, notgreen, above, below"},{"name":"set_stale_alert","description":"Configure when tlly sends stale-data alert email and webhooks because a series stopped updating. after: auto (from the job schedule and point spacing, at least "},{"name":"list_integration_skills","description":"List integration setup playbooks (Stripe, Shopify, Sheets, and the other sources tlly can read). A spreadsheet starts from the KPI template. Make a copy https:/"},{"name":"get_integration_skill","description":"Read one integration playbook by id: what to track, the minimum credential and scopes, the exact tlly job, and gotchas. google-sheets and json-api also return a"}],"toolCount":30,"toolsHash":"ab8faa251d31fa8a0340b50f3bed01c7a943bc7901a3d5d6c788e17a211afc96","serverName":"tlly","capabilities":["prompts","resources","tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"create_dashboard","description":"Create a hosted dashboard; returns its public URL. Dashboard spec: {\"title\": str, \"description\"?: str, \"range\"?: \"1m\"|\"3m\"|\"6m\"|\"ytd\"|\"1y\"|\"2y\"|\"5y\"|\"10y\"|\"max\""},{"name":"update_dashboard","description":"Replace a dashboard's spec (URL stays the same). Every update is saved as a numbered version. With \"draft\": true it is saved without going live: viewers keep se"},{"name":"list_dashboard_versions","description":"List a dashboard's saved versions (newest first) with which one is live and a members-only preview URL for each."},{"name":"publish_dashboard_version","description":"Make a saved version of a dashboard the live one (also to roll back). The dashboard keeps its URL and visibility."},{"name":"rotate_dashboard_url","description":"Give a dashboard a new public URL and disable the old one at once (e.g. if a link leaked). Spec and data are unchanged."},{"name":"list_dashboards","description":"List dashboards with their URLs."},{"name":"delete_dashboard","description":"Delete a dashboard (series data is kept)."},{"name":"push_points","description":"Write dated values to a series (upsert by date). Use when you compute data yourself. Values are numbers, or short text labels for a text series (e.g. a rating o"},{"name":"get_series","description":"Read the latest points of a series."},{"name":"list_series","description":"List all series with their type (number or text), point counts and date ranges; text series also list their values."},{"name":"delete_series","description":"Delete all points of a series, or remove a derived series' definition."},{"name":"define_derived","description":"Create or replace a derived series, computed from other series every time it is read (always fresh, stores no points, counts toward the series limit). definitio"},{"name":"list_secrets","description":"List the names of the workspace's stored secrets (API keys for private sources) and the host each may be sent to. Use one in a job's url, headers or body as {{s"},{"name":"test_job","description":"Dry-run a job spec: fetch, extract and transform, return a preview. Saves nothing. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 mi"},{"name":"create_job","description":"Schedule a fetch job. It runs once immediately and the result is returned. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"req"},{"name":"import_once","description":"Fetch a job spec once and save the result, without scheduling it or using a job slot (\"cron\" is optional and ignored). Use for one-off dashboards whose data doe"},{"name":"update_job","description":"Replace a job's spec, or pause it with enabled=false. Job spec: {\"series\": name, \"cron\": \"m h dom mon dow\" (UTC, at most every 5 min),\n\"request\": {\"url\", \"metho"},{"name":"list_jobs","description":"List scheduled fetch jobs with their last run status and any error message."},{"name":"run_job_now","description":"Run a scheduled fetch job immediately, store any new points, and return the run result."},{"name":"delete_job","description":"Delete a job (its series data is kept)."},{"name":"get_status","description":"Health check: failing jobs, stale or empty panels, dashboards, storage usage. Call this to verify everything works."},{"name":"get_usage","description":"Storage usage against quotas (data points = values + annotations, series, dashboards, jobs) and the largest series. Check before large writes."},{"name":"add_annotations","description":"Attach short dated notes to a series (e.g. 'Policy rate raised to 4.5%'); shown as markers on charts. Single-line plain text, max 280 chars; one note per date ("},{"name":"list_annotations","description":"Read the latest annotations of a series."},{"name":"delete_annotations","description":"Delete annotations of a series on the given dates, or all of them if dates is omitted."},{"name":"set_alert_webhook","description":"Set or clear the workspace webhook URL for job-failure and dashboard status alerts (pass an empty url to clear). When events fire, tlly POSTs JSON to that URL ("},{"name":"set_panel_alert","description":"Set when one dashboard panel sends alert email and/or a webhook (colour change, threshold cross, or off). trigger: change (default), red, notgreen, above, below"},{"name":"set_stale_alert","description":"Configure when tlly sends stale-data alert email and webhooks because a series stopped updating. after: auto (from the job schedule and point spacing, at least "},{"name":"list_integration_skills","description":"List integration setup playbooks (Stripe, Shopify, Sheets, and the other sources tlly can read). A spreadsheet starts from the KPI template. Make a copy https:/"},{"name":"get_integration_skill","description":"Read one integration playbook by id: what to track, the minimum credential and scopes, the exact tlly job, and gotchas. google-sheets and json-api also return a"}],"package":null,"toolSurface":{"id":"ts_64ukguaaxgh3","endpointId":"ep_hupf6br2p53q","hash":"ab8faa251d31fa8a0340b50f3bed01c7a943bc7901a3d5d6c788e17a211afc96","toolCount":30,"serverName":"tlly","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-11-01T17:31:07.070Z","lastSeenAt":"2026-11-02T18:23:43.131Z","observations":4,"toolNames":["create_dashboard","update_dashboard","list_dashboard_versions","publish_dashboard_version","rotate_dashboard_url","list_dashboards","delete_dashboard","push_points","get_series","list_series","delete_series","define_derived","list_secrets","test_job","create_job","import_once","update_job","list_jobs","run_job_now","delete_job","get_status","get_usage","add_annotations","list_annotations","delete_annotations","set_alert_webhook","set_panel_alert","set_stale_alert","list_integration_skills","get_integration_skill"],"distinctSurfaces":1},"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.tlly/tlly","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.tlly%2Ftlly","firstSeenAt":"2026-11-01T15:22:16.075Z","fetchedAt":"2026-11-01T15:22:16.075Z","normalizedAt":"2026-11-01T15:22:16.075Z"}]},"firstSeenAt":"2026-11-01T15:22:16.075Z","updatedAt":"2026-11-02T18:29:14.652Z"}