Replace scripts
Uploads or replaces a module Worker script.
PUT /v1/cloudflare/workers/scripts/{script}
| Address | https://api.hanzo.ai/v1/cloudflare/workers/scripts/{script} |
| Method | PUT |
| Operation | put_cloudflare_workers_scripts_by_script |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Uploads or replaces a module Worker script. It publishes to the org's OWN Cloudflare account under the name in the path, replacing whatever was there, and relays Cloudflare's result. The compatibility date, compatibility flags and bindings are packed into the multipart upload Cloudflare expects, beside the module source.
Requires ORG ADMIN — a Worker is arbitrary code on the org's own account and
domains — so a caller who is only an org member is refused 403. An empty source
is 400, as is a mainModule that is not a plain file name; 503 if the org has
never connected a Cloudflare token.
Request
6 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
script | path | string | yes | Script means two things on this route, and the document says so in both places it appears: the PATH segment names the Worker to publish, and the BODY field… |
bindings | body | any | — | Bindings are the resources the script can reach (KV, D1, R2, secrets, …), in Cloudflare's own binding vocabulary, passed through as written: this plane… |
compatibilityDate | body | string | — | CompatibilityDate pins which Workers runtime behaviour the script runs under, as a plain calendar date ("2024-01-01"). |
compatibilityFlags | body | string[] | — | CompatibilityFlags turn individual runtime behaviours on or off around that date ("nodejs_compat"), in Cloudflare's own flag vocabulary. |
mainModule | body | string | — | MainModule is the module file the runtime starts at. |
script | body | string | — | Script means two things on this route, and the document says so in both places it appears: the PATH segment names the Worker to publish, and the BODY field… |
Response
| Status | Body | Meaning |
|---|---|---|
200 | ok |
200 body — 1 field.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
(body) | body | any | yes |
Failure carries the platform error shape — see Errors.
Examples
hanzo cloudflare workers scripts set <script>import { Configuration, CloudflareApi } from 'hanzoai';
const api = new CloudflareApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.putCloudflareWorkersScriptsByScript({ script: 'script', bindings: "<bindings>", compatibilityDate: "<compatibilityDate>" });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import CloudflareApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = CloudflareApi(client).put_cloudflare_workers_scripts_by_script(script='script', bindings="<bindings>", compatibility_date="<compatibilityDate>")cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.CloudflareAPI.PutCloudflareWorkersScriptsByScript(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, cloudflare_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = cloudflare_api::put_cloudflare_workers_scripts_by_script(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.CloudflareApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new CloudflareApi(client).putCloudflareWorkersScriptsByScript();curl -X PUT https://api.hanzo.ai/v1/cloudflare/workers/scripts/<script> \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"bindings": "<bindings>",
"compatibilityDate": "<compatibilityDate>"
}'MCP reaches cloudflare through the cloudflare tool, which names its 33 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "list_cloudflare_d1_databases"
}
}
}'How is this guide?