Skip to content

Commit 9873446

Browse files
authored
Merge branch 'production' into kathayl-patch-20
2 parents 6ac84b3 + 0d3ba74 commit 9873446

File tree

51 files changed

+700
-196
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+700
-196
lines changed

public/__redirects

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,6 +1429,7 @@
14291429
/stream/reference/faq/ /stream/faq/ 301
14301430
/stream/platform/ /stream/changelog/ 301
14311431
/stream/reference/ /stream/faq/ 301
1432+
/stream/examples/wordpress/ /stream/examples/ 301
14321433

14331434
# style guide
14341435

src/content/docs/agents/model-context-protocol/mcp-servers-for-cloudflare.mdx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,25 @@ import { Render } from "~/components"
1212

1313
Cloudflare runs a catalog of managed remote MCP Servers which you can connect to using OAuth on clients like [Claude](https://modelcontextprotocol.io/quickstart/user), [Windsurf](https://docs.windsurf.com/windsurf/cascade/mcp), our own [AI Playground](https://playground.ai.cloudflare.com/) or any [SDK that supports MCP](https://github.com/cloudflare/agents/tree/main/packages/agents/src/mcp).
1414

15-
These MCP servers allow your MCP Client to read configurations from your account, process information, make suggestions based on data, and even make those suggested changes for you. All of these actions can happen across Cloudflare's many services including application development, security and performance.
15+
These MCP servers allow your MCP Client to read configurations from your account, process information, make suggestions based on data, and even make those suggested changes for you. All of these actions can happen across Cloudflare's many services including application development, security and performance. They support both the `streamble-http` transport via `/mcp` and the `sse` transport (deprecated) via `/sse`.
1616

1717
| Server Name | Description | Server URL |
1818
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------- |
19-
| [Documentation server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/docs-vectorize) | Get up to date reference information on Cloudflare | `https://docs.mcp.cloudflare.com/sse` |
20-
| [Workers Bindings server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/workers-bindings) | Build Workers applications with storage, AI, and compute primitives | `https://bindings.mcp.cloudflare.com/sse` |
21-
| [Workers Builds server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/workers-builds) | Get insights and manage your Cloudflare Workers Builds | `https://builds.mcp.cloudflare.com/sse` |
22-
| [Observability server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/workers-observability) | Debug and get insight into your application's logs and analytics | `https://observability.mcp.cloudflare.com/sse` |
23-
| [Radar server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/radar) | Get global Internet traffic insights, trends, URL scans, and other utilities | `https://radar.mcp.cloudflare.com/sse` |
24-
| [Container server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/sandbox-container) | Spin up a sandbox development environment | `https://containers.mcp.cloudflare.com/sse` |
25-
| [Browser rendering server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/browser-rendering) | Fetch web pages, convert them to markdown and take screenshots | `https://browser.mcp.cloudflare.com/sse` |
26-
| [Logpush server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/logpush) | Get quick summaries for Logpush job health | `https://logs.mcp.cloudflare.com/sse` |
27-
| [AI Gateway server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/ai-gateway) | Search your logs, get details about the prompts and responses | `https://ai-gateway.mcp.cloudflare.com/sse` |
28-
| [AI Search server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/autorag) | List and search documents on your AI Searchs | `https://autorag.mcp.cloudflare.com/sse` |
29-
| [Audit Logs server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/auditlogs) | Query audit logs and generate reports for review | `https://auditlogs.mcp.cloudflare.com/sse` |
30-
| [DNS Analytics server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/dns-analytics) | Optimize DNS performance and debug issues based on current set up | `https://dns-analytics.mcp.cloudflare.com/sse` |
31-
| [Digital Experience Monitoring server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/dex-analysis) | Get quick insight on critical applications for your organization | `https://dex.mcp.cloudflare.com/sse` |
32-
| [Cloudflare One CASB server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/cloudflare-one-casb) | Quickly identify any security misconfigurations for SaaS applications to safeguard users & data | `https://casb.mcp.cloudflare.com/sse` |
33-
| [GraphQL server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/graphql/) | Get analytics data using Cloudflare’s GraphQL API | `https://graphql.mcp.cloudflare.com/sse` |
19+
| [Documentation server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/docs-vectorize) | Get up to date reference information on Cloudflare | `https://docs.mcp.cloudflare.com/mcp` |
20+
| [Workers Bindings server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/workers-bindings) | Build Workers applications with storage, AI, and compute primitives | `https://bindings.mcp.cloudflare.com/mcp` |
21+
| [Workers Builds server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/workers-builds) | Get insights and manage your Cloudflare Workers Builds | `https://builds.mcp.cloudflare.com/mcp` |
22+
| [Observability server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/workers-observability) | Debug and get insight into your application's logs and analytics | `https://observability.mcp.cloudflare.com/mcp` |
23+
| [Radar server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/radar) | Get global Internet traffic insights, trends, URL scans, and other utilities | `https://radar.mcp.cloudflare.com/mcp` |
24+
| [Container server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/sandbox-container) | Spin up a sandbox development environment | `https://containers.mcp.cloudflare.com/mcp` |
25+
| [Browser rendering server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/browser-rendering) | Fetch web pages, convert them to markdown and take screenshots | `https://browser.mcp.cloudflare.com/mcp` |
26+
| [Logpush server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/logpush) | Get quick summaries for Logpush job health | `https://logs.mcp.cloudflare.com/mcp` |
27+
| [AI Gateway server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/ai-gateway) | Search your logs, get details about the prompts and responses | `https://ai-gateway.mcp.cloudflare.com/mcp` |
28+
| [AI Search server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/autorag) | List and search documents on your AI Searchs | `https://autorag.mcp.cloudflare.com/mcp` |
29+
| [Audit Logs server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/auditlogs) | Query audit logs and generate reports for review | `https://auditlogs.mcp.cloudflare.com/mcp` |
30+
| [DNS Analytics server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/dns-analytics) | Optimize DNS performance and debug issues based on current set up | `https://dns-analytics.mcp.cloudflare.com/mcp` |
31+
| [Digital Experience Monitoring server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/dex-analysis) | Get quick insight on critical applications for your organization | `https://dex.mcp.cloudflare.com/mcp` |
32+
| [Cloudflare One CASB server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/cloudflare-one-casb) | Quickly identify any security misconfigurations for SaaS applications to safeguard users & data | `https://casb.mcp.cloudflare.com/mcp` |
33+
| [GraphQL server](https://github.com/cloudflare/mcp-server-cloudflare/tree/main/apps/graphql/) | Get analytics data using Cloudflare’s GraphQL API | `https://graphql.mcp.cloudflare.com/mcp` |
3434

3535
Check our [GitHub page](https://github.com/cloudflare/mcp-server-cloudflare) to know how to use Cloudflare's remote MCP servers with different MCP clients.
3636

src/content/docs/browser-rendering/rest-api/pdf-endpoint.mdx

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ curl -X POST https://api.cloudflare.com/client/v4/accounts/<acccountID>/browser-
8989
--output "invoice.pdf"
9090
```
9191

92+
:::note[Request size limits]
93+
The PDF endpoint accepts request bodies up to 50 MB. Requests larger than this will fail with `Error: request entity too large`.
94+
:::
95+
9296
## Advanced usage
9397

9498
:::note[Looking for more parameters?]
@@ -138,6 +142,58 @@ curl -X POST https://api.cloudflare.com/client/v4/accounts/<acccountID>/browser-
138142
--output "cloudflare.pdf"
139143
```
140144

145+
### Customize page headers and footers
146+
147+
You can customize page headers and footers with HTML templates using the `headerTemplate` and `footerTemplate` options. Enable `displayHeaderFooter` to include them in your output. This example generates an A5 PDF with a branded header, a footer message, and page numbering.
148+
149+
```bash
150+
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/pdf' \
151+
-H 'Authorization: Bearer <apiToken>' \
152+
-H 'Content-Type: application/json' \
153+
-d '{
154+
"url": "https://example.com",
155+
"pdfOptions": {
156+
"format": "a5",
157+
"headerTemplate": "<div style=\"font-size: 10px; text-align: center; width: 100%; padding: 5px;\"><span>brand name</span></div>",
158+
"displayHeaderFooter": true,
159+
"footerTemplate": "<div style=\"color: lightgray; border-top: solid lightgray 1px; font-size: 10px; padding-top: 5px; text-align: center; width: 100%;\"><span>This is a test message</span> - <span class=\"pageNumber\"></span></div>",
160+
"margin": {
161+
"top": "70px",
162+
"bottom": "70px"
163+
}
164+
}
165+
}' \
166+
--output "header-footer.pdf"
167+
```
168+
169+
### Include dynamic placeholders from page metadata
170+
171+
You can include dynamic placeholders such as `title`, `date`, `pageNumber`, and `totalPages` in the header or footer to display metadata on each page. This example produces an A4 PDF with a company-branded header, current date and title, and page numbering in the footer.
172+
173+
```bash
174+
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/pdf' \
175+
-H 'Authorization: Bearer <apiToken>' \
176+
-H 'Content-Type: application/json' \
177+
-d '{
178+
"url": "https://news.ycombinator.com",
179+
"pdfOptions": {
180+
"format": "a4",
181+
"landscape": false,
182+
"printBackground": true,
183+
"preferCSSPageSize": true,
184+
"displayHeaderFooter": true,
185+
"scale": 1.0,
186+
"headerTemplate": "<div style=\"width: 100%; font-size: 10px; padding: 10px; text-align: center;\"><div style=\"border-bottom: 1px solid #ddd;\"><span style=\"color: #666;\">Company Name</span> | <span class=\"date\"></span> | <span class=\"title\"></span></div></div>",
187+
"footerTemplate": "<div style=\"width: 100%; font-size: 10px; padding: 10px; text-align: center;\"><div style=\"border-top: 1px solid #ddd;\">Page <span class=\"pageNumber\"></span> of <span class=\"totalPages\"></span></div></div>",
188+
"margin": {
189+
"top": "100px",
190+
"bottom": "80px",
191+
"right": "30px",
192+
"left": "30px"
193+
},
194+
"timeout": 30000
195+
}
196+
141197
<Render
142198
file="setting-custom-user-agent"
143199
product="browser-rendering"

src/content/docs/cloudflare-for-platforms/cloudflare-for-saas/domain-support/remove-custom-hostnames.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ If they update their [`CNAME` record](/cloudflare-for-platforms/cloudflare-for-s
2222

2323
If the custom hostname is in a **Moved** state for seven days, it will transition into a **Deleted** state.
2424

25+
You should remove a customer's custom hostname from your zone if they decide to churn. This is especially important if your end customers are using Cloudflare because if the churned customer changes the DNS target to point away from your SaaS zone but you have not removed it, the custom hostname will continue to route to your service. This is a result of the [custom hostname priority logic](/ssl/reference/certificate-and-hostname-priority/#hostname-priority).
26+
2527
## Domains not using Cloudflare
2628

2729
If your customer's domain is not using Cloudflare, you must remove a customer's custom hostname from your zone if they decide to churn.
2830

29-
This is especially important if your end customers are using Cloudflare because if the custom hostname changes the DNS target to point away from your SaaS zone, the custom hostname will continue to route to your service. This is a result of the [custom hostname priority logic](/ssl/reference/certificate-and-hostname-priority/#hostname-priority).
30-
3131
<Tabs syncKey="dashPlusAPI"> <TabItem label="Dashboard">
3232

3333
<Render file="delete-custom-hostname-dash" product="cloudflare-for-platforms" />

src/content/docs/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/enforce-mtls.mdx

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,84 @@ In the API documentation, refer to [SSL properties of a custom hostname](/api/re
276276

277277
</Details>
278278

279+
<Details header="Restrict cipher suites for custom hostname with custom certificate">
280+
281+
In the API documentation, refer to [SSL properties of a custom hostname](/api/resources/custom_hostnames/methods/edit/). In the case of a custom hostname with custom certificate, you must include the custom certificate in the [Edit Custom Hostname PATCH call](/api/resources/custom_hostnames/methods/edit/), with the `settings` specifications where you must include `type` and `method` within the `ssl` object, as explained below.
282+
283+
1. Make a `GET` request to the [Custom Hostname Details](/api/resources/custom_hostnames/methods/get/) endpoint to check what are the current values for `ssl.type` and `ssl.method`.
284+
285+
<APIRequest
286+
path="/zones/{zone_id}/custom_hostnames/{custom_hostname_id}"
287+
method="GET"
288+
/>
289+
290+
```json title="Response example" collapse={5-16, 21-40} ""method": "http"," ""type": "dv","
291+
"success": true,
292+
"result": {
293+
"id": "<CUSTOM_HOSTNAME_ID>",
294+
"ssl": {
295+
"id": "<CERTIFICATE_ID>",
296+
"bundle_method": "ubiquitous",
297+
"certificate_authority": "<CERTIFICATE_AUTHORITY>",
298+
"custom_certificate": "",
299+
"custom_csr_id": "",
300+
"custom_key": "",
301+
"expires_on": "",
302+
"hosts": [
303+
"app.example.com",
304+
"*.app.example.com"
305+
],
306+
"issuer": "",
307+
"method": "http",
308+
"settings": {},
309+
"signature": "SHA256WithRSA",
310+
"type": "dv",
311+
"uploaded_on": "2020-02-06T18:11:23.531995Z",
312+
"validation_errors": [
313+
{
314+
"message": "SERVFAIL looking up CAA for app.example.com"
315+
}
316+
],
317+
"validation_records": [
318+
{
319+
"emails": [
320+
321+
322+
],
323+
"http_body": "ca3-574923932a82475cb8592200f1a2a23d",
324+
"http_url": "http://app.example.com/.well-known/pki-validation/ca3-da12a1c25e7b48cf80408c6c1763b8a2.txt",
325+
"txt_name": "_acme-challenge.app.example.com",
326+
"txt_value": "810b7d5f01154524b961ba0cd578acc2"
327+
}
328+
],
329+
"wildcard": false
330+
},
331+
}
332+
```
333+
334+
2. After you take note of these values, make a `PATCH` request to the [Edit Custom Hostname](/api/resources/custom_hostnames/methods/edit/) endpoint, providing both the list of authorized cipher suites and the same `type` and `method` values that you obtained from the previous step, but also the `custom_certificate` and `custom_key`.
335+
336+
<APIRequest
337+
path="/zones/{zone_id}/custom_hostnames/{custom_hostname_id}"
338+
method="PATCH"
339+
json={{
340+
ssl: {
341+
method: "http",
342+
type: "dv",
343+
custom_certificate: "<CERTIFICATE_STRING>",
344+
custom_key: "<CERTIFICATE_PRIVATE_KEY>",
345+
settings: {
346+
"ciphers": ["ECDHE-ECDSA-AES128-GCM-SHA256","ECDHE-RSA-AES128-GCM-SHA256"],
347+
"min_tls_version": "1.2"
348+
}
349+
}
350+
}}
351+
/>
352+
353+
</Details>
354+
355+
356+
279357
## Alerts for mutual TLS certificates
280358

281359
You can configure alerts to receive notifications before your mutual TLS certificates expire.

0 commit comments

Comments
 (0)