@hoststack.dev/mcp 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -85,31 +85,45 @@ If `HOSTSTACK_API_KEY` is set in your shell, it gets baked into the snippet; oth
85
85
 
86
86
  ## Tool inventory
87
87
 
88
- 60 tools, grouped by resource:
89
-
90
- | Category | Read | Write |
91
- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
92
- | **projects** | `list_projects`, `get_project` | `create_project`, `update_project` |
93
- | **services** | `list_services`, `get_service`, `get_service_metrics`, `get_service_metrics_history`, `get_service_logs`, `get_service_logs_bulk` | `create_service`, `create_dev_environment`, `update_service`, `update_service_config`, `suspend_service`, `resume_service` |
94
- | **deploys** | `list_deploys`, `get_deploy`, `get_deploy_logs`, `diagnose_deploy` | `trigger_deploy`, `cancel_deploy` |
95
- | **environments** | `list_environments` | `create_environment`, `delete_environment`, `promote_deploy` |
96
- | **databases** | `list_databases`, `get_database`, `get_database_cluster`, `query_database` | `update_database`, `upgrade_database_to_ha` (use the dashboard for create/delete/credentials) |
97
- | **volumes** | `list_volumes` | `create_volume`, `update_volume`, `delete_volume` |
98
- | **domains** | `list_domains` | `add_domain`, `verify_domain`, `remove_domain` |
99
- | **dns** | `list_dns_zones`, `list_dns_records`, `get_dns_record` | `create_dns_record`, `update_dns_record`, `delete_dns_record` |
100
- | **env-vars** | `list_env_vars` | `set_env_var`, `delete_env_var`, `bulk_set_env_vars` |
101
- | **cron** | `list_cron_executions`, `get_cron_execution` | — |
102
- | **notifications** | `list_notification_channels` | `create_notification_channel`, `update_notification_channel`, `delete_notification_channel`, `test_notification_channel` |
103
- | **alerts** | `list_alerts` | — |
104
- | **activity-log** | `list_activity_log` | — |
105
- | **meta** | `get_me` | — |
88
+ 104 tools. The headings are the registry's own categories rather than a friendlier regrouping, so the build can diff this table against the registry and fail when the two disagree — which is how an earlier version of it came to advertise a total from three releases back and send agents to the dashboard for a `create_database` that had already shipped.
89
+
90
+ | Category | Read | Write |
91
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
92
+ | **projects** | `list_projects`, `get_project` | `create_project`, `update_project` |
93
+ | **services** | `list_services`, `get_service`, `get_service_metrics`, `get_service_metrics_history`, `list_dev_environments`, `list_templates` | `create_service`, `create_dev_environment`, `create_standalone_dev_environment`, `spin_up_dev_environment`, `resize_dev_environment`, `delete_dev_environment`, `update_service`, `update_service_config`, `suspend_service`, `resume_service`, `delete_service` |
94
+ | **logs** | `get_service_logs`, `get_service_logs_bulk` | — |
95
+ | **deploys** | `list_deploys`, `get_deploy`, `get_deploy_logs`, `diagnose_deploy` | `trigger_deploy`, `cancel_deploy` |
96
+ | **environments** | `list_environments` | `create_environment`, `delete_environment`, `promote_deploy` |
97
+ | **databases** | `list_databases`, `get_database`, `get_database_cluster`, `query_database` | `create_database`, `update_database`, `delete_database`, `suspend_database`, `resume_database`, `restart_database`, `upgrade_database_to_ha`, `upgrade_database_version` |
98
+ | **volumes** | `list_volumes` | `create_volume`, `update_volume`, `delete_volume` |
99
+ | **resource-links** | `list_managed_resources`, `list_service_resources` | `link_resource_to_service`, `unlink_resource_from_service` |
100
+ | **machines** | `list_machines`, `get_machine` | — |
101
+ | **domains** | `list_domains` | `add_domain`, `verify_domain`, `remove_domain` |
102
+ | **dns** | `list_dns_zones`, `list_dns_records`, `get_dns_record` | `create_dns_record`, `update_dns_record`, `delete_dns_record`, `resync_dns_record` |
103
+ | **env-vars** | `list_env_vars` | `set_env_var`, `delete_env_var`, `bulk_set_env_vars` |
104
+ | **cron** | `list_cron_executions`, `get_cron_execution` | — |
105
+ | **dev-tasks** | `list_dev_tasks`, `get_dev_task` | `create_dev_task`, `update_dev_task` |
106
+ | **alerts** | `list_alerts`, `list_notification_channels` | `create_notification_channel`, `update_notification_channel`, `delete_notification_channel`, `test_notification_channel` |
107
+ | **errors** | `list_error_issues`, `get_error_issue`, `list_ingest_keys` | `update_error_issue`, `fix_error_in_dev_box`, `create_ingest_key`, `delete_ingest_key` |
108
+ | **uptime** | `get_uptime_check` | `set_uptime_check`, `delete_uptime_check` |
109
+ | **analytics** | `list_analytics_sites`, `check_analytics_site`, `get_analytics_summary`, `get_analytics_overview` | `create_analytics_site`, `verify_site_domain`, `set_site_uptime_check` |
110
+ | **activity-log** | `list_activity_log` | — |
111
+ | **github** | — | `sync_github_repos` |
112
+ | **support** | — | `report_issue` |
113
+ | **meta** | `get_me`, `describe_mcp` | — |
114
+
115
+ `describe_mcp` returns the same inventory computed from the registry at call time. If this table and that tool ever disagree, the tool is right.
106
116
 
107
117
  A few design notes worth knowing as a caller:
108
118
 
109
119
  - **`set_env_var` / `delete_env_var` are key-based.** You don't need an env-var ID; the MCP looks up the existing var by key first, then patches or deletes by ID under the hood.
110
120
  - **`list_env_vars` masks secret values.** Anything stored with `is_secret: true` comes back as `••••••`. The masking happens server-side, so you can't accidentally leak a secret to the agent's context window.
111
121
  - **`get_service_logs` and `get_deploy_logs` are snapshots.** Streaming logs over MCP isn't supported — re-call the tool to get newer entries. Use the dashboard's `/dashboard/services/:id/logs` for live tails.
112
- - **No `delete_project` or `delete_service`.** Destructive cascades are dashboard-only — too risky for an agent to call. Creating is supported via `create_service` / `create_dev_environment`.
122
+ - **Databases are provisioned end-to-end.** `create_database` → `link_resource_to_service` → `trigger_deploy` is the whole managed-database flow, and the link injects `DATABASE_URL` / `REDIS_URL` / `MONGO_URL` on the next deploy — so the agent never handles a password. Credentials themselves stay in the dashboard; `query_database` runs read-only SQL without one.
123
+ - **One deliberate gap: the project cascade.** There is no `delete_project` — deleting a project takes every service, database, domain and volume under it with it, and that is a confirmation a person should give in the dashboard. Everything one level down an agent can do: `delete_service`, `delete_database`, `delete_volume` and `delete_environment` are all registered, so an agent asked to tear down what it created can.
124
+ - **Errors are grouped, and the grouping is the product.** `list_error_issues` returns one row per distinct problem, not one per event — the fingerprint is the exception class, the message with its variable parts removed, and the topmost frame in _your_ code rather than the framework's. Counts are exact; the stored occurrences behind them are samples. `fix_error_in_dev_box` is the one thing a hosted error tracker cannot do: it writes the exception, the marked stack and a real request into a task in the project's dev box, where the repository is already checked out.
125
+ - **Uptime checks are not health checks.** The deploy-time health check watches the container from inside the host and stops mattering once a deploy is live. `get_uptime_check` / `set_uptime_check` describe the other one: HostStack requesting the public URL from outside, which is what notices DNS, TLS and routing failures, and a service that accepts a connection and then answers nothing.
126
+ - **`list_machines` / `get_machine` are read-only.** Enrolling your own hardware needs a terminal on the machine itself (`hoststack machines add`), so there is no tool for it — what an agent needs is the other half, the id to pass as `machine` when it creates a service, database or dev box there.
113
127
  - **Telemetry, hosted only.** When you use `https://hoststack.dev/api/mcp`, we record one row per tool call (tool name, duration, ok/error, SHA-derived hash of input args — never the args themselves) for the analytics page and on-call alerts. Retained 30 days. The local stdio install records nothing.
114
128
 
115
129
  ## Environment variables