@hoststack.dev/mcp 0.23.0 → 0.24.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.
@@ -8,7 +8,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
8
  import { HostStack } from "@hoststack.dev/sdk";
9
9
 
10
10
  // src/version.ts
11
- var MCP_VERSION = true ? "0.23.0" : "0.0.0-dev";
11
+ var MCP_VERSION = true ? "0.24.0" : "0.0.0-dev";
12
12
  var USER_AGENT = `hoststack-mcp/${MCP_VERSION}`;
13
13
 
14
14
  // src/api-client.ts
@@ -4020,6 +4020,7 @@ defineTool({
4020
4020
  ' - type: "web_service" | "private_service" | "worker" | "cron_job" | "static_site".',
4021
4021
  " - docker_image (optional): pre-built image ref to deploy instead of building from source.",
4022
4022
  " - github_repo_id (optional): connect a previously-linked GitHub repo by numeric id.",
4023
+ " - git_repo_url (optional): a PUBLIC https git URL, for a repo that is not connected through GitHub. Private repos do not work here \u2014 they need a provider connection, because this field carries no credentials and embedding them in the URL is rejected. Mutually exclusive with github_repo_id and docker_image.",
4023
4024
  ' - branch (optional): git branch (default "main").',
4024
4025
  " - install_command / build_command / start_command (optional): build/run shell commands. start_command is required for web/private services without a docker_image.",
4025
4026
  " - cron_schedule (optional): cron expression \u2014 required for cron_job.",
@@ -4045,6 +4046,9 @@ defineTool({
4045
4046
  "Pre-built APPLICATION image ref. Mutually exclusive with github_repo_id. Not for databases \u2014 use create_database for postgres/redis/mysql/mariadb/mongodb."
4046
4047
  ),
4047
4048
  github_repo_id: z19.number().int().positive().optional().describe("Linked GitHub repo numeric id. Mutually exclusive with docker_image."),
4049
+ git_repo_url: z19.string().max(2048).optional().describe(
4050
+ "Public https git URL. No embedded credentials \u2014 private repos need a provider connection. Mutually exclusive with github_repo_id and docker_image."
4051
+ ),
4048
4052
  branch: z19.string().max(200).optional().describe('Git branch (default "main").'),
4049
4053
  install_command: z19.string().max(1e3).optional().describe("Install shell command."),
4050
4054
  build_command: z19.string().max(1e3).optional().describe("Build shell command."),
@@ -4076,6 +4080,7 @@ defineTool({
4076
4080
  };
4077
4081
  if (args2.docker_image !== void 0) input.dockerImage = args2.docker_image;
4078
4082
  if (args2.github_repo_id !== void 0) input.githubRepoId = args2.github_repo_id;
4083
+ if (args2.git_repo_url !== void 0) input.gitRepoUrl = args2.git_repo_url;
4079
4084
  if (args2.branch !== void 0) input.branch = args2.branch;
4080
4085
  if (args2.install_command !== void 0) input.installCommand = args2.install_command;
4081
4086
  if (args2.build_command !== void 0) input.buildCommand = args2.build_command;
@@ -4740,6 +4745,11 @@ defineTool({
4740
4745
  " - scale_cpu_threshold, scale_memory_threshold (optional): integer 10\u2013100 \u2014 autoscale trigger percentage.",
4741
4746
  " - scale_requests_per_sec_threshold (optional): integer 1\u201310000 \u2014 autoscale on request rate instead of (or alongside) CPU and memory. Pass null to stop scaling on request rate.",
4742
4747
  " - build_timeout_seconds (optional): integer 60\u20131800 \u2014 how long a build may run before it is killed. Raise it for a service whose build legitimately takes longer than the default; pass null to go back to the default.",
4748
+ " - plan (optional): move the service to a different size tier. This is the supported way to grow past the current tier's ceiling \u2014 memory_mb and cpu_shares are CLAMPED to the tier, so raising them alone does nothing once you are at the top of it. Memory and CPU apply to the running container where possible; disk grows on the next recreate. Changing tier changes what the service costs.",
4749
+ " - docker_image (optional): repoint an image-backed service at a different image. Takes effect on the next deploy \u2014 this writes the reference, it does not pull. Pass null to clear it.",
4750
+ " - cron_schedule (optional): the schedule for a cron_job service. Pass null to clear it.",
4751
+ ' - publish_path (optional): the directory a static_site publishes (e.g. "dist"). Pass null to clear it.',
4752
+ ' - runtime (optional): runtime hint ("node" | "bun" | "python" | \u2026), normally auto-detected from the repo. Set it when the detection is wrong.',
4743
4753
  ` - log_filter_rules (optional): list of { pattern, action } rules applied at read time \u2014 to get_service_logs (tail AND count) and to the dashboard's live stream alike. Pattern matches the message by case-insensitive substring, literally (a % or _ is not a wildcard); action is "drop" (filter out) or "downgrade" (flip stderr \u2192 stdout so it stops looking like an error). Stored lines are never altered, so removing a rule re-exposes everything it was hiding. Pass [] to clear all rules. Capped at 50 rules.`,
4744
4754
  "",
4745
4755
  "Returns: { service?: Service, config?: ServiceConfig } \u2014 whichever rows were touched.",
@@ -4782,6 +4792,15 @@ defineTool({
4782
4792
  scale_memory_threshold: z19.number().int().min(10).max(100).optional().describe("Autoscale memory trigger percentage (10\u2013100)."),
4783
4793
  scale_requests_per_sec_threshold: z19.number().int().min(1).max(1e4).nullable().optional().describe("Autoscale request-rate trigger (1\u201310000 req/s). null stops using it."),
4784
4794
  build_timeout_seconds: z19.number().int().min(60).max(1800).nullable().optional().describe("Kill a build that runs longer than this (60\u20131800s). null = default."),
4795
+ plan: z19.enum(SERVICE_PLANS).optional().describe(
4796
+ "Move to a different size tier. memory_mb and cpu_shares are clamped to the tier, so this is what raises the ceiling. Changes cost."
4797
+ ),
4798
+ docker_image: z19.string().max(500).nullable().optional().describe(
4799
+ "Repoint an image-backed service. Applies on the next deploy. null clears it."
4800
+ ),
4801
+ cron_schedule: z19.string().max(100).nullable().optional().describe("Cron expression for a cron_job service. null clears it."),
4802
+ publish_path: z19.string().max(500).nullable().optional().describe('Static-site output directory, e.g. "dist". null clears it.'),
4803
+ runtime: z19.string().max(50).optional().describe("Runtime hint (node/bun/python/\u2026). Normally auto-detected."),
4785
4804
  log_filter_rules: z19.array(
4786
4805
  z19.object({
4787
4806
  pattern: z19.string().min(1).max(200),
@@ -4805,6 +4824,10 @@ defineTool({
4805
4824
  if (args2.auto_deploy !== void 0) serviceUpdate["autoDeploy"] = args2.auto_deploy;
4806
4825
  if (args2.health_check_path !== void 0)
4807
4826
  serviceUpdate["healthCheckPath"] = args2.health_check_path;
4827
+ if (args2.plan !== void 0) serviceUpdate["plan"] = args2.plan;
4828
+ if (args2.cron_schedule !== void 0) serviceUpdate["cronSchedule"] = args2.cron_schedule;
4829
+ if (args2.publish_path !== void 0) serviceUpdate["publishPath"] = args2.publish_path;
4830
+ if (args2.runtime !== void 0) serviceUpdate["runtime"] = args2.runtime;
4808
4831
  const configUpdate = {};
4809
4832
  if (args2.health_check_enabled !== void 0)
4810
4833
  configUpdate["healthCheckEnabled"] = args2.health_check_enabled;
@@ -4840,6 +4863,7 @@ defineTool({
4840
4863
  configUpdate["scaleRequestsPerSecThreshold"] = args2.scale_requests_per_sec_threshold;
4841
4864
  if (args2.build_timeout_seconds !== void 0)
4842
4865
  configUpdate["buildTimeoutSeconds"] = args2.build_timeout_seconds;
4866
+ if (args2.docker_image !== void 0) configUpdate["dockerImage"] = args2.docker_image;
4843
4867
  if (args2.log_filter_rules !== void 0) {
4844
4868
  configUpdate["logFilterRules"] = args2.log_filter_rules;
4845
4869
  }