diff --git a/docs/command-reference/compatibility.md b/docs/command-reference/compatibility.md
index 141d4b3a..e69cbfc0 100644
--- a/docs/command-reference/compatibility.md
+++ b/docs/command-reference/compatibility.md
@@ -371,8 +371,8 @@ sidebar_position: 0
| | TOPK.COUNT | Fully supported | |
| | TOPK.LIST | Fully supported | |
| | TOPK.INFO | Fully supported | |
-| CF | CF.ADD | Unsupported | |
-| | CF.ADDNX | Unsupported | |
+| CF | CF.ADD | Fully supported | |
+| | CF.ADDNX | Fully supported | |
| | CF.COUNT | Unsupported | |
| | CF.DEL | Unsupported | |
| | CF.EXISTS | Unsupported | |
@@ -381,7 +381,7 @@ sidebar_position: 0
| | CF.INSERTNX | Unsupported | |
| | CF.LOADCHUNK | Unsupported | |
| | CF.MEXISTS | Unsupported | |
-| | CF.RESERVE | Unsupported | |
+| | CF.RESERVE | Fully supported | |
| | CF.SCANDUMP | Unsupported | |
| Cluster | ASKING | Unsupported | |
| | CLUSTER ADDSLOTS | Unsupported | |
diff --git a/docs/command-reference/cuckoo-filter/_category_.yml b/docs/command-reference/cuckoo-filter/_category_.yml
new file mode 100644
index 00000000..6a138f18
--- /dev/null
+++ b/docs/command-reference/cuckoo-filter/_category_.yml
@@ -0,0 +1,4 @@
+position: 1
+label: Cuckoo Filter
+link:
+ type: generated-index
diff --git a/docs/command-reference/cuckoo-filter/cf.add.md b/docs/command-reference/cuckoo-filter/cf.add.md
new file mode 100644
index 00000000..f05eb1bc
--- /dev/null
+++ b/docs/command-reference/cuckoo-filter/cf.add.md
@@ -0,0 +1,48 @@
+---
+description: Learn how to use the CF.ADD command to add an item to a Cuckoo filter in Dragonfly.
+---
+import PageTitle from '@site/src/components/PageTitle';
+
+# CF.ADD
+
+
+
+## Syntax
+
+ CF.ADD key item
+
+**Time complexity:** O(k + i), where k is the number of sub-filters and i is `MAXITERATIONS`
+
+**ACL categories:** @cuckoo
+
+Adds a single `item` to the Cuckoo filter at `key`.
+If `key` does not exist, a new filter is created with default parameters.
+
+Unlike [`CF.ADDNX`](./cf.addnx.md), duplicate insertions are allowed — the same item can be added multiple times and will occupy a separate slot each time.
+Use `CF.DEL` once per insertion to remove it.
+
+If the filter is full and expansion is disabled (`EXPANSION 0`), an error is returned.
+
+## Return
+
+[Integer reply](https://valkey.io/topics/protocol/#integers):
+
+- `1` if the item was successfully added.
+- `0` if the filter is full and could not be expanded.
+
+## Examples
+
+```shell
+dragonfly> CF.ADD cf Hello
+(integer) 1
+
+dragonfly> CF.ADD cf Hello
+(integer) 1
+
+dragonfly> CF.COUNT cf Hello
+(integer) 2
+```
+
+## See also
+
+[`CF.ADDNX`](./cf.addnx.md) | [`CF.RESERVE`](./cf.reserve.md)
diff --git a/docs/command-reference/cuckoo-filter/cf.addnx.md b/docs/command-reference/cuckoo-filter/cf.addnx.md
new file mode 100644
index 00000000..390b330b
--- /dev/null
+++ b/docs/command-reference/cuckoo-filter/cf.addnx.md
@@ -0,0 +1,49 @@
+---
+description: Learn how to use the CF.ADDNX command to add an item to a Cuckoo filter only if it does not already exist.
+---
+import PageTitle from '@site/src/components/PageTitle';
+
+# CF.ADDNX
+
+
+
+## Syntax
+
+ CF.ADDNX key item
+
+**Time complexity:** O(k + i), where k is the number of sub-filters and i is `MAXITERATIONS`
+
+**ACL categories:** @cuckoo
+
+Adds a single `item` to the Cuckoo filter at `key` only if it does not already exist.
+If `key` does not exist, a new filter is created with default parameters.
+
+Unlike [`CF.ADD`](./cf.add.md), this command checks for the item before inserting.
+Because Cuckoo filters can return false positives, `CF.ADDNX` may decline to insert
+an item that was never actually added.
+
+If the filter is full and expansion is disabled (`EXPANSION 0`), an error is returned.
+
+## Return
+
+[Integer reply](https://valkey.io/topics/protocol/#integers):
+
+- `1` if the item was successfully added.
+- `0` if the item already exists in the filter (or is a false positive match).
+
+## Examples
+
+```shell
+dragonfly> CF.ADDNX cf Hello
+(integer) 1
+
+dragonfly> CF.ADDNX cf Hello
+(integer) 0
+
+dragonfly> CF.ADDNX cf World
+(integer) 1
+```
+
+## See also
+
+[`CF.ADD`](./cf.add.md) | [`CF.RESERVE`](./cf.reserve.md)
diff --git a/docs/command-reference/cuckoo-filter/cf.reserve.md b/docs/command-reference/cuckoo-filter/cf.reserve.md
new file mode 100644
index 00000000..d0466c16
--- /dev/null
+++ b/docs/command-reference/cuckoo-filter/cf.reserve.md
@@ -0,0 +1,51 @@
+---
+description: Learn how to use the CF.RESERVE command to create a Cuckoo filter in Dragonfly.
+---
+import PageTitle from '@site/src/components/PageTitle';
+
+# CF.RESERVE
+
+
+
+## Syntax
+
+ CF.RESERVE key capacity [BUCKETSIZE bucketsize] [MAXITERATIONS maxiterations] [EXPANSION expansion]
+
+**Time complexity:** O(1)
+
+**ACL categories:** @cuckoo
+
+Creates a new Cuckoo filter at `key` with an initial capacity of at least `capacity` items.
+If `key` already exists, an error is returned.
+
+Unlike Bloom filters, Cuckoo filters support deletion of individual items.
+
+## Parameters
+
+| Parameter | Default | Description |
+|-----------------|---------|--------------------------------------------------------------------------------------------------------------------|
+| `key` | | The name of the filter. |
+| `capacity` | | Estimated number of items the filter should hold. Actual capacity is rounded up to the next power of two. |
+| `BUCKETSIZE` | `2` | Number of fingerprint slots per bucket. Higher values improve fill rate but increase false positive probability. |
+| `MAXITERATIONS` | `20` | Maximum number of cuckoo-displacement attempts before declaring the filter full. Must be between 1 and 65535. |
+| `EXPANSION` | `1` | When the filter is full, a new sub-filter of size `capacity * expansion` is created. `0` disables expansion. |
+
+## Return
+
+[Simple string reply](https://valkey.io/topics/protocol/#simple-strings): `OK` if the filter was created successfully.
+
+[Error reply](https://valkey.io/topics/protocol/#simple-errors): if `key` already exists, or a parameter is out of range.
+
+## Examples
+
+```shell
+dragonfly> CF.RESERVE cf 1000
+OK
+
+dragonfly> CF.RESERVE cf 1000
+(error) item exists
+
+dragonfly> CF.RESERVE cf_custom 10000 BUCKETSIZE 4 MAXITERATIONS 50 EXPANSION 2
+OK
+```
+