diff --git a/.changeset/metal-bees-pretend.md b/.changeset/metal-bees-pretend.md
new file mode 100644
index 000000000..cfc54280b
--- /dev/null
+++ b/.changeset/metal-bees-pretend.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/mdx': patch
+---
+
+Document MDXLayoutProps utility type
diff --git a/packages/integrations/mdx/README.md b/packages/integrations/mdx/README.md
index 856127098..00132db26 100644
--- a/packages/integrations/mdx/README.md
+++ b/packages/integrations/mdx/README.md
@@ -203,15 +203,16 @@ title: 'My Blog Post'
---
```
-Then, you can retrieve all other frontmatter properties from your layout via the `frontmatter` property, and render your MDX using the default [``](https://docs.astro.build/en/core-concepts/astro-components/#slots):
+Then, you can retrieve all other frontmatter properties from your layout via the `frontmatter` property, and render your MDX using the default [``](https://docs.astro.build/en/core-concepts/astro-components/#slots). See [layout props](#layout-props) for a complete list of props available.
```astro
---
// src/layouts/BaseLayout.astro
-const { frontmatter } = Astro.props;
+const { frontmatter, url } = Astro.props;
---
+
{frontmatter.title}
@@ -222,6 +223,48 @@ const { frontmatter } = Astro.props;
```
+You can set a layout’s [`Props` type](/en/guides/typescript/#component-props) with the `MDXLayoutProps` helper.
+
+:::note
+`MDXLayoutProps` is the same as the `MarkdownLayoutProps` utility type with `rawContent()` and `compiledContent()` removed (since these are not available for `.mdx` files). Feel free to **use `MarkdownLayoutProps` instead** when sharing a layout across `.md` and `.mdx` files.
+:::
+
+```astro ins={2,4-9}
+---
+// src/layouts/BaseLayout.astro
+import type { MDXLayoutProps } from 'astro';
+
+type Props = MDXLayoutProps<{
+ // Define frontmatter props here
+ title: string;
+ author: string;
+ date: string;
+}>;
+
+// Now, `frontmatter`, `url`, and other MDX layout properties
+// are accessible with type safety
+const { frontmatter, url } = Astro.props;
+---
+
+
+
+ {frontmatter.title}
+
+
+ {frontmatter.title}
+
+
+
+```
+
+#### Layout props
+
+All [exported properties](#exported-properties) are available from `Astro.props` in your layout, **with two key differences:**
+- Heading information (i.e. `h1 -> h6` elements) is available via the `headings` array, rather than a `getHeadings()` function.
+- `file` and `url` are _also_ available as nested `frontmatter` properties (i.e. `frontmatter.url` and `frontmatter.file`). This is consistent with Astro's Markdown layout properties.
+
+Astro recommends using the `MDXLayoutProps` type (see previous section) to explore all available properties.
+
#### Importing layouts manually
You may need to pass information to your layouts that does not (or cannot) exist in your frontmatter. In this case, you can import and use a [`` component](https://docs.astro.build/en/core-concepts/layouts/) like any other component: