",
+ },
+ ]);
+ };
+
+ const loginWithIframe = async (credentialBundle: string) => {
+ await authIframeClient?.loginWithAuthBundle(credentialBundle); // Creates a read write session using a credential bundle returned from OTP Auth, Oauth, or Create Read Write session activities
+ };
+
+ return (
+
+
+
+
+ );
+}
+
+export default ExampleComponent;
+```
+
+## Components
+
+All components require **Next.js 13+** with the [/app directory structure](https://nextjs.org/docs/app) to leverage server actions. Before using components be sure to Import Turnkey's default styles in your `layout.tsx` or equivalent entry point:
+
+```tsx
+import "@turnkey/sdk-react/styles";
+```
+
+### Authentication
+
+The `Auth` component provides a complete authentication solution with support for various login methods.
+
+#### Example
+
+```tsx
+import { Auth } from "@turnkey/sdk-react";
+import { toast } from "sonner";
+
+function AuthPage() {
+ const handleAuthSuccess = () => {
+ console.log("Auth successful!");
+ };
+
+ const handleAuthError = (errorMessage: string) => {
+ toast.error(errorMessage);
+ };
+
+ const authConfig = {
+ emailEnabled: true,
+ passkeyEnabled: true,
+ phoneEnabled: false,
+ googleEnabled: true,
+ appleEnabled: false,
+ facebookEnabled: false,
+ sessionLengthSeconds: 3600, //1 hour r/w session
+ };
+
+ const configOrder = ["socials", "email", "phone", "passkey"];
+
+ return (
+
+ );
+}
+
+export default AuthPage;
+```
+
+### Wallet Import and Export
+
+#### Import Wallet Example
+
+```tsx
+import { Import } from "@turnkey/sdk-react";
+import { toast } from "sonner";
+
+function ImportWallet() {
+ const handleImportSuccess = () => {
+ toast.success("Wallet successfully imported!");
+ };
+
+ const handleImportError = (errorMessage: string) => {
+ toast.error(errorMessage);
+ };
+
+ return (
+
+ );
+}
+
+export default ImportWallet;
+```
+
+#### Export Wallet Example
+
+```tsx
+import { Export } from "@turnkey/sdk-react";
+import { toast } from "sonner";
+
+function ExportWallet() {
+ const walletId = "your-wallet-id";
+
+ const handleExportSuccess = () => {
+ toast.success("Wallet successfully exported!");
+ };
+
+ const handleExportError = (errorMessage: string) => {
+ toast.error(errorMessage);
+ };
+
+ return (
+
+ );
+}
+
+export default ExportWallet;
+```
+
+## Theming with `TurnkeyThemeProvider`
+
+Customize Turnkey components using CSS variables with the `TurnkeyThemeProvider`.
+
+#### Example
+
+```tsx
+import { TurnkeyThemeProvider } from "@turnkey/sdk-react";
+
+const customTheme = {
+ "--text-primary": "#333333",
+ "--button-bg": "#4c48ff",
+ "--button-hover-bg": "#3b38e6",
+};
+
+export default function App() {
+ return (
+
+
+
+ );
+}
+```
+
+## Code Examples
+
+For detailed examples and advanced use cases, refer to our documentation [here](https://docs.turnkey.com/)
+
+## Documents
+
+- [React](React/readme)
+
+
+## Modules
+
+- [index](index/readme)
diff --git a/sdks/sdk-server/documents/docs/readme.mdx b/sdks/sdk-server/documents/docs/readme.mdx
new file mode 100644
index 00000000..f77f60f4
--- /dev/null
+++ b/sdks/sdk-server/documents/docs/readme.mdx
@@ -0,0 +1,356 @@
+---
+title: "Docs"
+mode: wide
+---
+
+## Overview
+
+It exposes a ready-made API client class which manages the process of constructing requests to the Turnkey API and authenticating them with a valid API key. Furthermore, it exposes API proxies that forward requests from your application's client that need to be signed by parent organizations API key.
+
+Use the [`@turnkey/sdk-server`](https://www.npmjs.com/package/@turnkey/sdk-server) package to handle server-side interactions for applications that interact with the Turnkey API.
+
+## Installation
+
+
+
+```bash npm
+npm install @turnkey/sdk-server
+```
+
+```bash Yarn
+yarn add @turnkey/sdk-server
+```
+
+
+
+## Initializing
+
+```js
+import { Turnkey } from "@turnkey/sdk-server";
+
+const turnkey = new Turnkey({
+ defaultOrganizationId: process.env.TURNKEY_ORGANIZATION_ID,
+ apiBaseUrl: "https://api.turnkey.com",
+ apiPrivateKey: process.env.TURNKEY_API_PRIVATE_KEY,
+ apiPublicKey: process.env.TURNKEY_API_PUBLIC_KEY,
+});
+```
+
+#### Parameters
+
+
+
+An object containing configuration settings for the Server Client.
+
+
+
+
+
+The root organization that requests will be made from unless otherwise specified
+
+
+
+
+The base URL that API requests will be sent to (use [https://api.turnkey.com](https://api.turnkey.com) when making requests to Turnkey's API)
+
+
+
+
+The API Private Key to sign requests with (this will normally be the API Private Key to your root organization)
+
+
+
+
+The API Public Key associated with the configured API Private Key above
+
+
+## Creating Clients
+
+Calls to Turnkey's API must be signed with a valid credential (often referred to in the docs as [stamping](https://docs-git-omkar-sdk-docs-turnkey.vercel.app/api-overview/stamps)) from the user initiating the API call. When using the Server SDK, the user initiating the API call is normally your root organization, and the API call is authenticated with the API keypair you create on the Turnkey dashboard.
+
+#### `apiClient()`
+
+The `apiClient` method returns an instance of the `TurnkeyApiClient` which will sign requests with the injected `apiPrivateKey`, and `apiPublicKey` credentials.
+
+```js
+const apiClient = turnkey.apiClient();
+const walletsResponse = await apiClient.getWallets();
+
+// this will sign the request with the configured api credentials
+```
+
+## Creating API Proxies
+
+There are certain actions that are initiated by users, but require the activity to be signed by the root organization itself. Examples of this include the initial creation of the user `subOrganization` or sending an email to a user with a login credential as part of an `emailAuth` flow.
+
+These can be implemented in your backend by creating an `apiClient` and handling requests from your browser application at different routes, but we have also provided a convenience method for doing this by having allowing a single `apiProxy` to handle requests at a single route and automatically sign specific user actions with the root organization's credentials.
+
+#### expressProxyHandler()
+
+The `expressProxyHandler()` method creates a proxy handler designed as a middleware for Express applications. It provides an API endpoint that forwards requests to the Turnkey API server.
+
+```js
+const turnkeyProxyHandler = turnkey.expressProxyHandler({
+ allowedMethods: ["createSubOrganization", "emailAuth", "getSubOrgIds"],
+});
+
+app.post("/apiProxy", turnkeyProxyHandler);
+
+// this will sign requests made with the client-side `serverSign` function with the root organization's API key for the allowedMethods in the config
+```
+
+#### 2. nextProxyHandler()
+
+The `nextProxyHandler()` method creates a proxy handler designed as a middleware for Next.js applications. It provides an API endpoint that forwards requests to the Turnkey API server.
+
+```js
+// Configure the Next.js handler with allowed methods
+const turnkeyProxyHandler = turnkey.nextProxyHandler({
+ allowedMethods: ["createSubOrganization", "emailAuth", "getSubOrgIds"],
+});
+
+export default turnkeyProxyHandler;
+
+// this will sign requests made with the client-side `serverSign` function with the root organization's API key for the allowedMethods in the config
+```
+
+## TurnkeyServerClient
+
+The `@turnkey/sdk-server` exposes NextJS Server Actions. These server actions can be used to facilitate implementing common authentication flows.
+
+### `sendOtp()`
+
+Initiate an OTP authentication flow for either an `EMAIL` or `SMS`.
+
+```typescript
+import { server } from "@turnkey/sdk-server";
+
+const initAuthResponse = await server.sendOtp({
+ suborgID: suborgId!,
+ otpType,
+ contact: value,
+ ...(emailCustomization && { emailCustomization }),
+ ...(sendFromEmailAddress && { sendFromEmailAddress }),
+ ...(customSmsMessage && { customSmsMessage }),
+ userIdentifier: authIframeClient?.iframePublicKey!,
+});
+
+if (initAuthResponse && initAuthResponse.otpId) {
+ // proceed to verifyOtp
+} else {
+ // error handling
+}
+```
+
+#### Parameters
+
+
+ An object containing the parameters to initiate an `EMAIL` or `SMS` OTP
+ authentication flow.
+
+
+
+ The ID of the sub organization for the given request.
+
+
+
+ The type of OTP request, either `EMAIL` or `SMS`.
+
+
+
+ The contact information (email or phone number) where the OTP will be sent.
+
+
+
+ Use to customize the SMS message.
+
+
+
+ IP Address, iframePublicKey, or other unique identifier used for rate
+ limiting.
+
+
+### `verifyOtp()`
+
+Verify the OTP Code sent to the user via `EMAIL` or `SMS`. If verification is successful, a Session is returned which is used to log in with.
+
+```typescript
+import { server } from "@turnkey/sdk-server";
+
+const authSession = await server.verifyOtp({
+ suborgID: suborgId,
+ otpId,
+ otpCode: otp,
+ targetPublicKey: authIframeClient!.iframePublicKey!,
+ sessionLengthSeconds,
+});
+
+if (authSession?.token) {
+ // log in with Session
+ await authIframeClient!.loginWithSession(authSession);
+ // call onValidateSuccess callback
+ await onValidateSuccess();
+} else {
+ // error handling
+}
+```
+
+#### Parameters
+
+
+ An object containing the parameters to verify an OTP authentication attempt.
+
+
+
+ The ID of the sub organization for the given request.
+
+
+
+ The ID for the given OTP request. This ID is returned in the `SendOtpResponse`
+ from `sendOtp()`.
+
+
+
+ The OTP Code sent to the user.
+
+
+
+ The public key of the target user.
+
+
+
+ Specify the length of the session in seconds. Defaults to 900 seconds or 15
+ minutes.
+
+
+### `oauth()`
+
+Complete an OAuth authentication flow once the OIDC Token has been obtained from the OAuth provider.
+
+```typescript
+import { server } from "@turnkey/sdk-server";
+
+const oauthSession = await server.oauth({
+ suborgID: suborgId!,
+ oidcToken: credential,
+ targetPublicKey: authIframeClient?.iframePublicKey!,
+ sessionLengthSeconds: authConfig.sessionLengthSeconds,
+});
+
+if (oauthSession && oauthSession.token) {
+ // log in with Session
+ await authIframeClient!.loginWithSession(oauthSession);
+ // call onAuthSuccess callback
+ await onAuthSuccess();
+} else {
+ // error handling
+}
+```
+
+#### Parameters
+
+
+ An object containing the parameters to complete an OAuth authentication flow.
+
+
+
+ The ID of the sub organization for the given request.
+
+
+
+ The OIDC (OpenID Connect) Token issued by the OAuth provider which contains
+ basic profile information about the user.
+
+
+
+ The public key of the target user.
+
+
+
+ Specify the length of the session in seconds. Defaults to 900 seconds or 15
+ minutes.
+
+
+### `sendCredential()`
+
+Send a login credential to a user's email address.
+
+```typescript
+import { server } from "@turnkey/sdk-server";
+
+const sendCredentialResponse = await server.sendCredential({
+ email,
+ targetPublicKey: authIframeClient?.iframePublicKey!,
+ organizationId: suborgId!,
+ ...(apiKeyName && { apiKeyName }),
+ ...(sendFromEmailAddress && { sendFromEmailAddress }),
+ ...(sessionLengthSeconds && { sessionLengthSeconds }),
+ ...(invalidateExisting && { invalidateExisting }),
+ ...(emailCustomization && { emailCustomization }),
+ ...(sendFromEmailAddress && { sendFromEmailAddress }),
+});
+```
+
+#### Parameters
+
+
+ An object containing the parameters to send a login credential via email.
+
+
+
+ The email address provided by the user.
+
+
+
+ The public key of the target user.
+
+
+
+ The ID of the sub organization for the given request.
+
+
+
+ The name of the API Key.
+
+
+
+ IP Address, iframePublicKey, or other unique identifier used for rate
+ limiting.
+
+
+
+ Specify the length of the session in seconds. Defaults to 900 seconds or 15
+ minutes.
+
+
+
+ Invalidate all pre-existing sessions. Defaults to `false`.
+
+
+
+ An option to customize the email.
+
+
+
+ Provide a custom email address which will be used as the sender of the email.
+
diff --git a/sdks/sdk-server/index/ApiKeyStamper/readme.mdx b/sdks/sdk-server/index/ApiKeyStamper/readme.mdx
new file mode 100644
index 00000000..be7ec99f
--- /dev/null
+++ b/sdks/sdk-server/index/ApiKeyStamper/readme.mdx
@@ -0,0 +1,62 @@
+---
+title: "ApiKeyStamper"
+mode: wide
+---
+
+# Class: ApiKeyStamper
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:17
+
+Stamper to use with `@turnkey/http`'s `TurnkeyClient`
+
+## Constructors
+
+### Constructor
+
+> **new ApiKeyStamper**(`config`): `ApiKeyStamper`
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:20
+
+#### Parameters
+
+##### config
+
+[`TApiKeyStamperConfig`](../TApiKeyStamperConfig/readme)
+
+#### Returns
+
+`ApiKeyStamper`
+
+## Properties
+
+### apiPrivateKey
+
+> **apiPrivateKey**: `string`
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:19
+
+***
+
+### apiPublicKey
+
+> **apiPublicKey**: `string`
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:18
+
+## Methods
+
+### stamp()
+
+> **stamp**(`payload`): `Promise`\<\{ `stampHeaderName`: `string`; `stampHeaderValue`: `string`; \}\>
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:21
+
+#### Parameters
+
+##### payload
+
+`string`
+
+#### Returns
+
+`Promise`\<\{ `stampHeaderName`: `string`; `stampHeaderValue`: `string`; \}\>
diff --git a/sdks/sdk-server/index/DEFAULT_APTOS_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_APTOS_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..85ebe867
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_APTOS_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_APTOS_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_APTOS\_ACCOUNTS
+
+> `const` **DEFAULT\_APTOS\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:475](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L475)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2PKH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2PKH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..142c3547
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2PKH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_MAINNET_P2PKH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_MAINNET\_P2PKH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_MAINNET\_P2PKH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:65](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L65)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2SH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2SH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..d9491b3d
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2SH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_MAINNET_P2SH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_MAINNET\_P2SH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_MAINNET\_P2SH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:129](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L129)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2TR_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2TR_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..c1840264
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2TR_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_MAINNET_P2TR_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_MAINNET\_P2TR\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_MAINNET\_P2TR\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:113](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L113)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2WPKH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2WPKH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..2117a0b7
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2WPKH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_MAINNET_P2WPKH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_MAINNET\_P2WPKH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_MAINNET\_P2WPKH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:81](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L81)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2WSH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2WSH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..16f890aa
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_MAINNET_P2WSH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_MAINNET_P2WSH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_MAINNET\_P2WSH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_MAINNET\_P2WSH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:97](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L97)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2PKH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2PKH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..add7e9ec
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2PKH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_REGTEST_P2PKH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_REGTEST\_P2PKH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_REGTEST\_P2PKH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:305](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L305)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2SH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2SH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..e1060222
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2SH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_REGTEST_P2SH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_REGTEST\_P2SH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_REGTEST\_P2SH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:369](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L369)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2TR_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2TR_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..18517359
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2TR_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_REGTEST_P2TR_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_REGTEST\_P2TR\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_REGTEST\_P2TR\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:353](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L353)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2WPKH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2WPKH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..9e71bfbf
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2WPKH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_REGTEST_P2WPKH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_REGTEST\_P2WPKH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_REGTEST\_P2WPKH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:321](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L321)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2WSH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2WSH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..b20321c5
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_REGTEST_P2WSH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_REGTEST_P2WSH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_REGTEST\_P2WSH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_REGTEST\_P2WSH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:337](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L337)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2PKH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2PKH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..f0d12a1e
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2PKH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_SIGNET_P2PKH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_SIGNET\_P2PKH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_SIGNET\_P2PKH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:225](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L225)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2SH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2SH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..261b503f
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2SH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_SIGNET_P2SH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_SIGNET\_P2SH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_SIGNET\_P2SH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:289](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L289)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2TR_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2TR_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..cf75139e
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2TR_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_SIGNET_P2TR_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_SIGNET\_P2TR\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_SIGNET\_P2TR\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:273](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L273)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2WPKH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2WPKH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..50e220f6
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2WPKH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_SIGNET_P2WPKH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_SIGNET\_P2WPKH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_SIGNET\_P2WPKH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:241](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L241)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2WSH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2WSH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..cc3e1bd9
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_SIGNET_P2WSH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_SIGNET_P2WSH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_SIGNET\_P2WSH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_SIGNET\_P2WSH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:257](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L257)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2PKH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2PKH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..fc120aa7
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2PKH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_TESTNET_P2PKH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_TESTNET\_P2PKH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_TESTNET\_P2PKH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:145](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L145)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2SH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2SH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..fab8b4fa
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2SH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_TESTNET_P2SH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_TESTNET\_P2SH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_TESTNET\_P2SH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:209](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L209)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2TR_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2TR_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..22780e0d
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2TR_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_TESTNET_P2TR_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_TESTNET\_P2TR\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_TESTNET\_P2TR\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:193](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L193)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2WPKH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2WPKH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..48957397
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2WPKH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_TESTNET_P2WPKH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_TESTNET\_P2WPKH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_TESTNET\_P2WPKH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:161](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L161)
diff --git a/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2WSH_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2WSH_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..50e25b18
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_BITCOIN_TESTNET_P2WSH_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_BITCOIN_TESTNET_P2WSH_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_BITCOIN\_TESTNET\_P2WSH\_ACCOUNTS
+
+> `const` **DEFAULT\_BITCOIN\_TESTNET\_P2WSH\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:177](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L177)
diff --git a/sdks/sdk-server/index/DEFAULT_COSMOS_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_COSMOS_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..60cdda08
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_COSMOS_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_COSMOS_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_COSMOS\_ACCOUNTS
+
+> `const` **DEFAULT\_COSMOS\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:35](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L35)
diff --git a/sdks/sdk-server/index/DEFAULT_DOGE_MAINNET_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_DOGE_MAINNET_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..6e174cb1
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_DOGE_MAINNET_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_DOGE_MAINNET_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_DOGE\_MAINNET\_ACCOUNTS
+
+> `const` **DEFAULT\_DOGE\_MAINNET\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:385](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L385)
diff --git a/sdks/sdk-server/index/DEFAULT_DOGE_TESTNET_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_DOGE_TESTNET_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..2b1b69bc
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_DOGE_TESTNET_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_DOGE_TESTNET_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_DOGE\_TESTNET\_ACCOUNTS
+
+> `const` **DEFAULT\_DOGE\_TESTNET\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:401](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L401)
diff --git a/sdks/sdk-server/index/DEFAULT_ETHEREUM_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_ETHEREUM_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..def15ff0
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_ETHEREUM_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_ETHEREUM_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_ETHEREUM\_ACCOUNTS
+
+> `const` **DEFAULT\_ETHEREUM\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:19](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L19)
diff --git a/sdks/sdk-server/index/DEFAULT_SEI_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_SEI_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..f958018d
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_SEI_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_SEI_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_SEI\_ACCOUNTS
+
+> `const` **DEFAULT\_SEI\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:425](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L425)
diff --git a/sdks/sdk-server/index/DEFAULT_SOLANA_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_SOLANA_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..3d0f849c
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_SOLANA_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_SOLANA_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_SOLANA\_ACCOUNTS
+
+> `const` **DEFAULT\_SOLANA\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:445](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L445)
diff --git a/sdks/sdk-server/index/DEFAULT_SUI_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_SUI_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..c27df1fa
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_SUI_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_SUI_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_SUI\_ACCOUNTS
+
+> `const` **DEFAULT\_SUI\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:459](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L459)
diff --git a/sdks/sdk-server/index/DEFAULT_TON_V3R2_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_TON_V3R2_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..ddcba2cf
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_TON_V3R2_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_TON_V3R2_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_TON\_V3R2\_ACCOUNTS
+
+> `const` **DEFAULT\_TON\_V3R2\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:505](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L505)
diff --git a/sdks/sdk-server/index/DEFAULT_TON_V4R2_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_TON_V4R2_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..59c5dd64
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_TON_V4R2_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_TON_V4R2_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_TON\_V4R2\_ACCOUNTS
+
+> `const` **DEFAULT\_TON\_V4R2\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:521](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L521)
diff --git a/sdks/sdk-server/index/DEFAULT_TRON_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_TRON_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..03fe405d
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_TRON_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_TRON_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_TRON\_ACCOUNTS
+
+> `const` **DEFAULT\_TRON\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:49](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L49)
diff --git a/sdks/sdk-server/index/DEFAULT_XLM_ACCOUNTS/readme.mdx b/sdks/sdk-server/index/DEFAULT_XLM_ACCOUNTS/readme.mdx
new file mode 100644
index 00000000..ec7c3231
--- /dev/null
+++ b/sdks/sdk-server/index/DEFAULT_XLM_ACCOUNTS/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_XLM_ACCOUNTS"
+mode: wide
+---
+
+# Variable: DEFAULT\_XLM\_ACCOUNTS
+
+> `const` **DEFAULT\_XLM\_ACCOUNTS**: `WalletAccount`[]
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:489](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L489)
diff --git a/sdks/sdk-server/index/TActivity/readme.mdx b/sdks/sdk-server/index/TActivity/readme.mdx
new file mode 100644
index 00000000..d15e5326
--- /dev/null
+++ b/sdks/sdk-server/index/TActivity/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "TActivity"
+mode: wide
+---
+
+# Type Alias: TActivity
+
+> **TActivity** = `definitions`\[`"v1Activity"`\]
+
+Defined in: packages/http/dist/shared.d.ts:2
diff --git a/sdks/sdk-server/index/TApiKeyStamperConfig/readme.mdx b/sdks/sdk-server/index/TApiKeyStamperConfig/readme.mdx
new file mode 100644
index 00000000..f52644a5
--- /dev/null
+++ b/sdks/sdk-server/index/TApiKeyStamperConfig/readme.mdx
@@ -0,0 +1,26 @@
+---
+title: "TApiKeyStamperConfig"
+mode: wide
+---
+
+# Type Alias: TApiKeyStamperConfig
+
+> **TApiKeyStamperConfig** = `object`
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:2
+
+## Properties
+
+### apiPrivateKey
+
+> **apiPrivateKey**: `string`
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:4
+
+***
+
+### apiPublicKey
+
+> **apiPublicKey**: `string`
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:3
diff --git a/sdks/sdk-server/index/TSignedRequest/readme.mdx b/sdks/sdk-server/index/TSignedRequest/readme.mdx
new file mode 100644
index 00000000..7ffe5a3b
--- /dev/null
+++ b/sdks/sdk-server/index/TSignedRequest/readme.mdx
@@ -0,0 +1,36 @@
+---
+title: "TSignedRequest"
+mode: wide
+---
+
+# Type Alias: TSignedRequest
+
+> **TSignedRequest** = `object`
+
+Defined in: packages/http/dist/base.d.ts:58
+
+Represents a signed request ready to be POSTed to Turnkey
+
+## Properties
+
+### body
+
+> **body**: `string`
+
+Defined in: packages/http/dist/base.d.ts:59
+
+***
+
+### stamp
+
+> **stamp**: `TStamp`
+
+Defined in: packages/http/dist/base.d.ts:60
+
+***
+
+### url
+
+> **url**: `string`
+
+Defined in: packages/http/dist/base.d.ts:61
diff --git a/sdks/sdk-server/index/Turnkey/readme.mdx b/sdks/sdk-server/index/Turnkey/readme.mdx
new file mode 100644
index 00000000..3fbae49e
--- /dev/null
+++ b/sdks/sdk-server/index/Turnkey/readme.mdx
@@ -0,0 +1,118 @@
+---
+title: "Turnkey"
+mode: wide
+---
+
+# Class: Turnkey
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:27](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L27)
+
+## Constructors
+
+### Constructor
+
+> **new Turnkey**(`config`): `TurnkeyServerSDK`
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:32](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L32)
+
+#### Parameters
+
+##### config
+
+`TurnkeySDKServerConfig`
+
+#### Returns
+
+`TurnkeyServerSDK`
+
+## Properties
+
+### config
+
+> **config**: `TurnkeySDKServerConfig`
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:28](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L28)
+
+***
+
+### stamper
+
+> `protected` **stamper**: `undefined` \| [`ApiKeyStamper`](../ApiKeyStamper/readme)
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:30](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L30)
+
+## Methods
+
+### apiClient()
+
+> **apiClient**(`apiCredentials`?): [`TurnkeyApiClient`](../TurnkeyApiClient/readme)
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:36](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L36)
+
+#### Parameters
+
+##### apiCredentials?
+
+`ApiCredentials`
+
+#### Returns
+
+[`TurnkeyApiClient`](../TurnkeyApiClient/readme)
+
+***
+
+### apiProxy()
+
+> **apiProxy**(`methodName`, `params`): `Promise`\<`any`\>
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:50](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L50)
+
+#### Parameters
+
+##### methodName
+
+`string`
+
+##### params
+
+`any`[]
+
+#### Returns
+
+`Promise`\<`any`\>
+
+***
+
+### expressProxyHandler()
+
+> **expressProxyHandler**(`config`): `RequestHandler`
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:62](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L62)
+
+#### Parameters
+
+##### config
+
+`TurnkeyProxyHandlerConfig`
+
+#### Returns
+
+`RequestHandler`
+
+***
+
+### nextProxyHandler()
+
+> **nextProxyHandler**(`config`): `NextApiHandler`
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:91](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L91)
+
+#### Parameters
+
+##### config
+
+`TurnkeyProxyHandlerConfig`
+
+#### Returns
+
+`NextApiHandler`
diff --git a/sdks/sdk-server/index/TurnkeyActivityError/readme.mdx b/sdks/sdk-server/index/TurnkeyActivityError/readme.mdx
new file mode 100644
index 00000000..ddaa53bd
--- /dev/null
+++ b/sdks/sdk-server/index/TurnkeyActivityError/readme.mdx
@@ -0,0 +1,84 @@
+---
+title: "TurnkeyActivityError"
+mode: wide
+---
+
+# Class: TurnkeyActivityError
+
+Defined in: packages/http/dist/shared.d.ts:9
+
+## Extends
+
+- `Error`
+
+## Constructors
+
+### Constructor
+
+> **new TurnkeyActivityError**(`input`): `TurnkeyActivityError`
+
+Defined in: packages/http/dist/shared.d.ts:14
+
+#### Parameters
+
+##### input
+
+###### activityId?
+
+`string`
+
+###### activityStatus?
+
+`"ACTIVITY_STATUS_CREATED"` \| `"ACTIVITY_STATUS_PENDING"` \| `"ACTIVITY_STATUS_COMPLETED"` \| `"ACTIVITY_STATUS_FAILED"` \| `"ACTIVITY_STATUS_CONSENSUS_NEEDED"` \| `"ACTIVITY_STATUS_REJECTED"`
+
+###### activityType?
+
+`"ACTIVITY_TYPE_CREATE_API_KEYS"` \| `"ACTIVITY_TYPE_CREATE_USERS"` \| `"ACTIVITY_TYPE_CREATE_PRIVATE_KEYS"` \| `"ACTIVITY_TYPE_SIGN_RAW_PAYLOAD"` \| `"ACTIVITY_TYPE_CREATE_INVITATIONS"` \| `"ACTIVITY_TYPE_ACCEPT_INVITATION"` \| `"ACTIVITY_TYPE_CREATE_POLICY"` \| `"ACTIVITY_TYPE_DISABLE_PRIVATE_KEY"` \| `"ACTIVITY_TYPE_DELETE_USERS"` \| `"ACTIVITY_TYPE_DELETE_API_KEYS"` \| `"ACTIVITY_TYPE_DELETE_INVITATION"` \| `"ACTIVITY_TYPE_DELETE_ORGANIZATION"` \| `"ACTIVITY_TYPE_DELETE_POLICY"` \| `"ACTIVITY_TYPE_CREATE_USER_TAG"` \| `"ACTIVITY_TYPE_DELETE_USER_TAGS"` \| `"ACTIVITY_TYPE_CREATE_ORGANIZATION"` \| `"ACTIVITY_TYPE_SIGN_TRANSACTION"` \| `"ACTIVITY_TYPE_APPROVE_ACTIVITY"` \| `"ACTIVITY_TYPE_REJECT_ACTIVITY"` \| `"ACTIVITY_TYPE_DELETE_AUTHENTICATORS"` \| `"ACTIVITY_TYPE_CREATE_AUTHENTICATORS"` \| `"ACTIVITY_TYPE_CREATE_PRIVATE_KEY_TAG"` \| `"ACTIVITY_TYPE_DELETE_PRIVATE_KEY_TAGS"` \| `"ACTIVITY_TYPE_SET_PAYMENT_METHOD"` \| `"ACTIVITY_TYPE_ACTIVATE_BILLING_TIER"` \| `"ACTIVITY_TYPE_DELETE_PAYMENT_METHOD"` \| `"ACTIVITY_TYPE_CREATE_POLICY_V2"` \| `"ACTIVITY_TYPE_CREATE_POLICY_V3"` \| `"ACTIVITY_TYPE_CREATE_API_ONLY_USERS"` \| `"ACTIVITY_TYPE_UPDATE_ROOT_QUORUM"` \| `"ACTIVITY_TYPE_UPDATE_USER_TAG"` \| `"ACTIVITY_TYPE_UPDATE_PRIVATE_KEY_TAG"` \| `"ACTIVITY_TYPE_CREATE_AUTHENTICATORS_V2"` \| `"ACTIVITY_TYPE_CREATE_ORGANIZATION_V2"` \| `"ACTIVITY_TYPE_CREATE_USERS_V2"` \| `"ACTIVITY_TYPE_ACCEPT_INVITATION_V2"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V2"` \| `"ACTIVITY_TYPE_UPDATE_ALLOWED_ORIGINS"` \| `"ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2"` \| `"ACTIVITY_TYPE_UPDATE_USER"` \| `"ACTIVITY_TYPE_UPDATE_POLICY"` \| `"ACTIVITY_TYPE_SET_PAYMENT_METHOD_V2"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V3"` \| `"ACTIVITY_TYPE_CREATE_WALLET"` \| `"ACTIVITY_TYPE_CREATE_WALLET_ACCOUNTS"` \| `"ACTIVITY_TYPE_INIT_USER_EMAIL_RECOVERY"` \| `"ACTIVITY_TYPE_RECOVER_USER"` \| `"ACTIVITY_TYPE_SET_ORGANIZATION_FEATURE"` \| `"ACTIVITY_TYPE_REMOVE_ORGANIZATION_FEATURE"` \| `"ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2"` \| `"ACTIVITY_TYPE_SIGN_TRANSACTION_V2"` \| `"ACTIVITY_TYPE_EXPORT_PRIVATE_KEY"` \| `"ACTIVITY_TYPE_EXPORT_WALLET"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V4"` \| `"ACTIVITY_TYPE_EMAIL_AUTH"` \| `"ACTIVITY_TYPE_EXPORT_WALLET_ACCOUNT"` \| `"ACTIVITY_TYPE_INIT_IMPORT_WALLET"` \| `"ACTIVITY_TYPE_IMPORT_WALLET"` \| `"ACTIVITY_TYPE_INIT_IMPORT_PRIVATE_KEY"` \| `"ACTIVITY_TYPE_IMPORT_PRIVATE_KEY"` \| `"ACTIVITY_TYPE_CREATE_POLICIES"` \| `"ACTIVITY_TYPE_SIGN_RAW_PAYLOADS"` \| `"ACTIVITY_TYPE_CREATE_READ_ONLY_SESSION"` \| `"ACTIVITY_TYPE_CREATE_OAUTH_PROVIDERS"` \| `"ACTIVITY_TYPE_DELETE_OAUTH_PROVIDERS"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V5"` \| `"ACTIVITY_TYPE_OAUTH"` \| `"ACTIVITY_TYPE_CREATE_API_KEYS_V2"` \| `"ACTIVITY_TYPE_CREATE_READ_WRITE_SESSION"` \| `"ACTIVITY_TYPE_EMAIL_AUTH_V2"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V6"` \| `"ACTIVITY_TYPE_DELETE_PRIVATE_KEYS"` \| `"ACTIVITY_TYPE_DELETE_WALLETS"` \| `"ACTIVITY_TYPE_CREATE_READ_WRITE_SESSION_V2"` \| `"ACTIVITY_TYPE_DELETE_SUB_ORGANIZATION"` \| `"ACTIVITY_TYPE_INIT_OTP_AUTH"` \| `"ACTIVITY_TYPE_OTP_AUTH"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7"` \| `"ACTIVITY_TYPE_UPDATE_WALLET"` \| `"ACTIVITY_TYPE_UPDATE_POLICY_V2"` \| `"ACTIVITY_TYPE_CREATE_USERS_V3"` \| `"ACTIVITY_TYPE_INIT_OTP_AUTH_V2"`
+
+###### cause?
+
+`Error`
+
+###### message
+
+`string`
+
+#### Returns
+
+`TurnkeyActivityError`
+
+#### Overrides
+
+`Error.constructor`
+
+## Properties
+
+### activityId
+
+> **activityId**: `undefined` \| `string`
+
+Defined in: packages/http/dist/shared.d.ts:10
+
+***
+
+### activityStatus
+
+> **activityStatus**: `undefined` \| `"ACTIVITY_STATUS_CREATED"` \| `"ACTIVITY_STATUS_PENDING"` \| `"ACTIVITY_STATUS_COMPLETED"` \| `"ACTIVITY_STATUS_FAILED"` \| `"ACTIVITY_STATUS_CONSENSUS_NEEDED"` \| `"ACTIVITY_STATUS_REJECTED"`
+
+Defined in: packages/http/dist/shared.d.ts:11
+
+***
+
+### activityType
+
+> **activityType**: `undefined` \| `"ACTIVITY_TYPE_CREATE_API_KEYS"` \| `"ACTIVITY_TYPE_CREATE_USERS"` \| `"ACTIVITY_TYPE_CREATE_PRIVATE_KEYS"` \| `"ACTIVITY_TYPE_SIGN_RAW_PAYLOAD"` \| `"ACTIVITY_TYPE_CREATE_INVITATIONS"` \| `"ACTIVITY_TYPE_ACCEPT_INVITATION"` \| `"ACTIVITY_TYPE_CREATE_POLICY"` \| `"ACTIVITY_TYPE_DISABLE_PRIVATE_KEY"` \| `"ACTIVITY_TYPE_DELETE_USERS"` \| `"ACTIVITY_TYPE_DELETE_API_KEYS"` \| `"ACTIVITY_TYPE_DELETE_INVITATION"` \| `"ACTIVITY_TYPE_DELETE_ORGANIZATION"` \| `"ACTIVITY_TYPE_DELETE_POLICY"` \| `"ACTIVITY_TYPE_CREATE_USER_TAG"` \| `"ACTIVITY_TYPE_DELETE_USER_TAGS"` \| `"ACTIVITY_TYPE_CREATE_ORGANIZATION"` \| `"ACTIVITY_TYPE_SIGN_TRANSACTION"` \| `"ACTIVITY_TYPE_APPROVE_ACTIVITY"` \| `"ACTIVITY_TYPE_REJECT_ACTIVITY"` \| `"ACTIVITY_TYPE_DELETE_AUTHENTICATORS"` \| `"ACTIVITY_TYPE_CREATE_AUTHENTICATORS"` \| `"ACTIVITY_TYPE_CREATE_PRIVATE_KEY_TAG"` \| `"ACTIVITY_TYPE_DELETE_PRIVATE_KEY_TAGS"` \| `"ACTIVITY_TYPE_SET_PAYMENT_METHOD"` \| `"ACTIVITY_TYPE_ACTIVATE_BILLING_TIER"` \| `"ACTIVITY_TYPE_DELETE_PAYMENT_METHOD"` \| `"ACTIVITY_TYPE_CREATE_POLICY_V2"` \| `"ACTIVITY_TYPE_CREATE_POLICY_V3"` \| `"ACTIVITY_TYPE_CREATE_API_ONLY_USERS"` \| `"ACTIVITY_TYPE_UPDATE_ROOT_QUORUM"` \| `"ACTIVITY_TYPE_UPDATE_USER_TAG"` \| `"ACTIVITY_TYPE_UPDATE_PRIVATE_KEY_TAG"` \| `"ACTIVITY_TYPE_CREATE_AUTHENTICATORS_V2"` \| `"ACTIVITY_TYPE_CREATE_ORGANIZATION_V2"` \| `"ACTIVITY_TYPE_CREATE_USERS_V2"` \| `"ACTIVITY_TYPE_ACCEPT_INVITATION_V2"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V2"` \| `"ACTIVITY_TYPE_UPDATE_ALLOWED_ORIGINS"` \| `"ACTIVITY_TYPE_CREATE_PRIVATE_KEYS_V2"` \| `"ACTIVITY_TYPE_UPDATE_USER"` \| `"ACTIVITY_TYPE_UPDATE_POLICY"` \| `"ACTIVITY_TYPE_SET_PAYMENT_METHOD_V2"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V3"` \| `"ACTIVITY_TYPE_CREATE_WALLET"` \| `"ACTIVITY_TYPE_CREATE_WALLET_ACCOUNTS"` \| `"ACTIVITY_TYPE_INIT_USER_EMAIL_RECOVERY"` \| `"ACTIVITY_TYPE_RECOVER_USER"` \| `"ACTIVITY_TYPE_SET_ORGANIZATION_FEATURE"` \| `"ACTIVITY_TYPE_REMOVE_ORGANIZATION_FEATURE"` \| `"ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2"` \| `"ACTIVITY_TYPE_SIGN_TRANSACTION_V2"` \| `"ACTIVITY_TYPE_EXPORT_PRIVATE_KEY"` \| `"ACTIVITY_TYPE_EXPORT_WALLET"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V4"` \| `"ACTIVITY_TYPE_EMAIL_AUTH"` \| `"ACTIVITY_TYPE_EXPORT_WALLET_ACCOUNT"` \| `"ACTIVITY_TYPE_INIT_IMPORT_WALLET"` \| `"ACTIVITY_TYPE_IMPORT_WALLET"` \| `"ACTIVITY_TYPE_INIT_IMPORT_PRIVATE_KEY"` \| `"ACTIVITY_TYPE_IMPORT_PRIVATE_KEY"` \| `"ACTIVITY_TYPE_CREATE_POLICIES"` \| `"ACTIVITY_TYPE_SIGN_RAW_PAYLOADS"` \| `"ACTIVITY_TYPE_CREATE_READ_ONLY_SESSION"` \| `"ACTIVITY_TYPE_CREATE_OAUTH_PROVIDERS"` \| `"ACTIVITY_TYPE_DELETE_OAUTH_PROVIDERS"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V5"` \| `"ACTIVITY_TYPE_OAUTH"` \| `"ACTIVITY_TYPE_CREATE_API_KEYS_V2"` \| `"ACTIVITY_TYPE_CREATE_READ_WRITE_SESSION"` \| `"ACTIVITY_TYPE_EMAIL_AUTH_V2"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V6"` \| `"ACTIVITY_TYPE_DELETE_PRIVATE_KEYS"` \| `"ACTIVITY_TYPE_DELETE_WALLETS"` \| `"ACTIVITY_TYPE_CREATE_READ_WRITE_SESSION_V2"` \| `"ACTIVITY_TYPE_DELETE_SUB_ORGANIZATION"` \| `"ACTIVITY_TYPE_INIT_OTP_AUTH"` \| `"ACTIVITY_TYPE_OTP_AUTH"` \| `"ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7"` \| `"ACTIVITY_TYPE_UPDATE_WALLET"` \| `"ACTIVITY_TYPE_UPDATE_POLICY_V2"` \| `"ACTIVITY_TYPE_CREATE_USERS_V3"` \| `"ACTIVITY_TYPE_INIT_OTP_AUTH_V2"`
+
+Defined in: packages/http/dist/shared.d.ts:12
+
+***
+
+### cause
+
+> **cause**: `undefined` \| `Error`
+
+Defined in: packages/http/dist/shared.d.ts:13
diff --git a/sdks/sdk-server/index/TurnkeyApiClient/readme.mdx b/sdks/sdk-server/index/TurnkeyApiClient/readme.mdx
new file mode 100644
index 00000000..cf7cbd15
--- /dev/null
+++ b/sdks/sdk-server/index/TurnkeyApiClient/readme.mdx
@@ -0,0 +1,38 @@
+---
+title: "TurnkeyApiClient"
+mode: wide
+---
+
+# Class: TurnkeyApiClient
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:132](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L132)
+
+## Extends
+
+- [`TurnkeyServerClient`](../TurnkeyServerClient/readme)
+
+## Indexable
+
+\[`methodName`: `string`\]: `any`
+
+## Constructors
+
+### Constructor
+
+> **new TurnkeyApiClient**(`config`): `TurnkeyApiClient`
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:133](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L133)
+
+#### Parameters
+
+##### config
+
+`TurnkeySDKClientConfig`
+
+#### Returns
+
+`TurnkeyApiClient`
+
+#### Overrides
+
+[`TurnkeyServerClient`](../TurnkeyServerClient/readme).[`constructor`](../TurnkeyServerClient/readme#constructor)
diff --git a/sdks/sdk-server/index/TurnkeyRequestError/readme.mdx b/sdks/sdk-server/index/TurnkeyRequestError/readme.mdx
new file mode 100644
index 00000000..ad904719
--- /dev/null
+++ b/sdks/sdk-server/index/TurnkeyRequestError/readme.mdx
@@ -0,0 +1,50 @@
+---
+title: "TurnkeyRequestError"
+mode: wide
+---
+
+# Class: TurnkeyRequestError
+
+Defined in: packages/http/dist/base.d.ts:84
+
+## Extends
+
+- `Error`
+
+## Constructors
+
+### Constructor
+
+> **new TurnkeyRequestError**(`input`): `TurnkeyRequestError`
+
+Defined in: packages/http/dist/base.d.ts:87
+
+#### Parameters
+
+##### input
+
+`GrpcStatus`
+
+#### Returns
+
+`TurnkeyRequestError`
+
+#### Overrides
+
+`Error.constructor`
+
+## Properties
+
+### code
+
+> **code**: `number`
+
+Defined in: packages/http/dist/base.d.ts:86
+
+***
+
+### details
+
+> **details**: `null` \| `any`[]
+
+Defined in: packages/http/dist/base.d.ts:85
diff --git a/sdks/sdk-server/index/TurnkeyServerClient/readme.mdx b/sdks/sdk-server/index/TurnkeyServerClient/readme.mdx
new file mode 100644
index 00000000..2cc4e7d0
--- /dev/null
+++ b/sdks/sdk-server/index/TurnkeyServerClient/readme.mdx
@@ -0,0 +1,42 @@
+---
+title: "TurnkeyServerClient"
+mode: wide
+---
+
+# Class: TurnkeyServerClient
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:124](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L124)
+
+## Extends
+
+- `TurnkeySDKClientBase`
+
+## Extended by
+
+- [`TurnkeyApiClient`](../TurnkeyApiClient/readme)
+
+## Indexable
+
+\[`methodName`: `string`\]: `any`
+
+## Constructors
+
+### Constructor
+
+> **new TurnkeyServerClient**(`config`): `TurnkeyServerClient`
+
+Defined in: [packages/sdk-server/src/sdk-client.ts:125](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/sdk-client.ts#L125)
+
+#### Parameters
+
+##### config
+
+`TurnkeySDKClientConfig`
+
+#### Returns
+
+`TurnkeyServerClient`
+
+#### Overrides
+
+`TurnkeySDKClientBase.constructor`
diff --git a/sdks/sdk-server/index/createActivityPoller/readme.mdx b/sdks/sdk-server/index/createActivityPoller/readme.mdx
new file mode 100644
index 00000000..e214361e
--- /dev/null
+++ b/sdks/sdk-server/index/createActivityPoller/readme.mdx
@@ -0,0 +1,64 @@
+---
+title: "CreateActivityPoller"
+mode: wide
+---
+
+# Function: createActivityPoller()
+
+> **createActivityPoller**\<`O`, `I`\>(`params`): (`input`) => `Promise`\<`O`\[`"activity"`\]\>
+
+Defined in: packages/http/dist/async.d.ts:27
+
+Wraps a client request function (e.g. `client.createPrivateKeys`) in a poller.
+The default refresh interval is 500ms.
+
+The returned poller will poll until the activity becomes `COMPLETED`.
+If the activity becomes `FAILED` or `REJECTED` or is flagged as `NEEDS_CONSENSUS`, an error is thrown.
+
+## Type Parameters
+
+### O
+
+`O` *extends* `object`
+
+### I
+
+`I` *extends* `object`
+
+## Parameters
+
+### params
+
+#### client
+
+`TurnkeyClient`
+
+#### refreshIntervalMs?
+
+`number`
+
+#### requestFn
+
+(`input`) => `Promise`\<`O`\>
+
+## Returns
+
+`Function`
+
+### Parameters
+
+#### input
+
+`I`
+
+### Returns
+
+`Promise`\<`O`\[`"activity"`\]\>
+
+## Example
+
+```ts
+const activityPoller = createActivityPoller(client, client.createPrivateKeys);
+const activity = await activityPoller(input);
+console.log(activity.result); // activity is completed
+```
diff --git a/sdks/sdk-server/index/defaultAptosAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultAptosAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..df3c9407
--- /dev/null
+++ b/sdks/sdk-server/index/defaultAptosAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultAptosAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultAptosAccountAtIndex()
+
+> **defaultAptosAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:464](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L464)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinMainnetP2PKHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinMainnetP2PKHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..7212a358
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinMainnetP2PKHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinMainnetP2PKHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinMainnetP2PKHAccountAtIndex()
+
+> **defaultBitcoinMainnetP2PKHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:54](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L54)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinMainnetP2SHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinMainnetP2SHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..bf9075a5
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinMainnetP2SHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinMainnetP2SHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinMainnetP2SHAccountAtIndex()
+
+> **defaultBitcoinMainnetP2SHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:118](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L118)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinMainnetP2TRAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinMainnetP2TRAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..28bbde94
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinMainnetP2TRAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinMainnetP2TRAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinMainnetP2TRAccountAtIndex()
+
+> **defaultBitcoinMainnetP2TRAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:102](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L102)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinMainnetP2WPKHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinMainnetP2WPKHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..9f701c04
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinMainnetP2WPKHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinMainnetP2WPKHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinMainnetP2WPKHAccountAtIndex()
+
+> **defaultBitcoinMainnetP2WPKHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:70](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L70)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinMainnetP2WSHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinMainnetP2WSHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..c6634cfc
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinMainnetP2WSHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinMainnetP2WSHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinMainnetP2WSHAccountAtIndex()
+
+> **defaultBitcoinMainnetP2WSHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:86](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L86)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinRegtestP2PKHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinRegtestP2PKHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..64de1cff
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinRegtestP2PKHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinRegtestP2PKHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinRegtestP2PKHAccountAtIndex()
+
+> **defaultBitcoinRegtestP2PKHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:294](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L294)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinRegtestP2SHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinRegtestP2SHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..96631017
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinRegtestP2SHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinRegtestP2SHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinRegtestP2SHAccountAtIndex()
+
+> **defaultBitcoinRegtestP2SHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:358](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L358)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinRegtestP2TRAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinRegtestP2TRAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..d67394f9
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinRegtestP2TRAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinRegtestP2TRAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinRegtestP2TRAccountAtIndex()
+
+> **defaultBitcoinRegtestP2TRAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:342](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L342)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinRegtestP2WPKHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinRegtestP2WPKHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..df4f4a4a
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinRegtestP2WPKHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinRegtestP2WPKHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinRegtestP2WPKHAccountAtIndex()
+
+> **defaultBitcoinRegtestP2WPKHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:310](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L310)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinRegtestP2WSHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinRegtestP2WSHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..0f4089c9
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinRegtestP2WSHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinRegtestP2WSHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinRegtestP2WSHAccountAtIndex()
+
+> **defaultBitcoinRegtestP2WSHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:326](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L326)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinSignetP2PKHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinSignetP2PKHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..b773ae4c
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinSignetP2PKHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinSignetP2PKHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinSignetP2PKHAccountAtIndex()
+
+> **defaultBitcoinSignetP2PKHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:214](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L214)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinSignetP2SHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinSignetP2SHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..761717d4
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinSignetP2SHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinSignetP2SHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinSignetP2SHAccountAtIndex()
+
+> **defaultBitcoinSignetP2SHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:278](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L278)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinSignetP2TRAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinSignetP2TRAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..6f9faaf7
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinSignetP2TRAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinSignetP2TRAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinSignetP2TRAccountAtIndex()
+
+> **defaultBitcoinSignetP2TRAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:262](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L262)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinSignetP2WPKHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinSignetP2WPKHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..92c0fe44
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinSignetP2WPKHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinSignetP2WPKHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinSignetP2WPKHAccountAtIndex()
+
+> **defaultBitcoinSignetP2WPKHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:230](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L230)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinSignetP2WSHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinSignetP2WSHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..1aaa6868
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinSignetP2WSHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinSignetP2WSHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinSignetP2WSHAccountAtIndex()
+
+> **defaultBitcoinSignetP2WSHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:246](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L246)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinTestnetP2PKHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinTestnetP2PKHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..b9872aef
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinTestnetP2PKHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinTestnetP2PKHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinTestnetP2PKHAccountAtIndex()
+
+> **defaultBitcoinTestnetP2PKHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:134](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L134)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinTestnetP2SHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinTestnetP2SHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..19f3d9d4
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinTestnetP2SHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinTestnetP2SHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinTestnetP2SHAccountAtIndex()
+
+> **defaultBitcoinTestnetP2SHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:198](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L198)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinTestnetP2TRAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinTestnetP2TRAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..2864dd9f
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinTestnetP2TRAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinTestnetP2TRAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinTestnetP2TRAccountAtIndex()
+
+> **defaultBitcoinTestnetP2TRAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:182](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L182)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinTestnetP2WPKHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinTestnetP2WPKHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..b4cb60ef
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinTestnetP2WPKHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinTestnetP2WPKHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinTestnetP2WPKHAccountAtIndex()
+
+> **defaultBitcoinTestnetP2WPKHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:150](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L150)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultBitcoinTestnetP2WSHAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultBitcoinTestnetP2WSHAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..79502d0b
--- /dev/null
+++ b/sdks/sdk-server/index/defaultBitcoinTestnetP2WSHAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultBitcoinTestnetP2WSHAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultBitcoinTestnetP2WSHAccountAtIndex()
+
+> **defaultBitcoinTestnetP2WSHAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:166](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L166)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultCosmosAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultCosmosAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..5bf42eb9
--- /dev/null
+++ b/sdks/sdk-server/index/defaultCosmosAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultCosmosAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultCosmosAccountAtIndex()
+
+> **defaultCosmosAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:24](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L24)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultDogeMainnetAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultDogeMainnetAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..b860f955
--- /dev/null
+++ b/sdks/sdk-server/index/defaultDogeMainnetAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultDogeMainnetAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultDogeMainnetAccountAtIndex()
+
+> **defaultDogeMainnetAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:374](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L374)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultDogeTestnetAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultDogeTestnetAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..5f90ec0f
--- /dev/null
+++ b/sdks/sdk-server/index/defaultDogeTestnetAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultDogeTestnetAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultDogeTestnetAccountAtIndex()
+
+> **defaultDogeTestnetAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:390](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L390)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultEthereumAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultEthereumAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..25de2876
--- /dev/null
+++ b/sdks/sdk-server/index/defaultEthereumAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultEthereumAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultEthereumAccountAtIndex()
+
+> **defaultEthereumAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:8](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L8)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultSeiAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultSeiAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..fcc3e244
--- /dev/null
+++ b/sdks/sdk-server/index/defaultSeiAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultSeiAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultSeiAccountAtIndex()
+
+> **defaultSeiAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:406](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L406)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultSolanaAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultSolanaAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..270a22d2
--- /dev/null
+++ b/sdks/sdk-server/index/defaultSolanaAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultSolanaAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultSolanaAccountAtIndex()
+
+> **defaultSolanaAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:434](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L434)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultSuiAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultSuiAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..6ab0710f
--- /dev/null
+++ b/sdks/sdk-server/index/defaultSuiAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultSuiAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultSuiAccountAtIndex()
+
+> **defaultSuiAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:450](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L450)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultTonV3r2AccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultTonV3r2AccountAtIndex/readme.mdx
new file mode 100644
index 00000000..f7a71689
--- /dev/null
+++ b/sdks/sdk-server/index/defaultTonV3r2AccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultTonV3r2AccountAtIndex"
+mode: wide
+---
+
+# Function: defaultTonV3r2AccountAtIndex()
+
+> **defaultTonV3r2AccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:494](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L494)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultTonV4r2AccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultTonV4r2AccountAtIndex/readme.mdx
new file mode 100644
index 00000000..279f40b8
--- /dev/null
+++ b/sdks/sdk-server/index/defaultTonV4r2AccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultTonV4r2AccountAtIndex"
+mode: wide
+---
+
+# Function: defaultTonV4r2AccountAtIndex()
+
+> **defaultTonV4r2AccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:510](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L510)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultTronAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultTronAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..c834b2fa
--- /dev/null
+++ b/sdks/sdk-server/index/defaultTronAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultTronAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultTronAccountAtIndex()
+
+> **defaultTronAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:40](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L40)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultXlmAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultXlmAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..a020e6f6
--- /dev/null
+++ b/sdks/sdk-server/index/defaultXlmAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultXlmAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultXlmAccountAtIndex()
+
+> **defaultXlmAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:480](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L480)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/defaultXrpAccountAtIndex/readme.mdx b/sdks/sdk-server/index/defaultXrpAccountAtIndex/readme.mdx
new file mode 100644
index 00000000..09837f93
--- /dev/null
+++ b/sdks/sdk-server/index/defaultXrpAccountAtIndex/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "DefaultXrpAccountAtIndex"
+mode: wide
+---
+
+# Function: defaultXrpAccountAtIndex()
+
+> **defaultXrpAccountAtIndex**(`pathIndex`): `WalletAccount`
+
+Defined in: [packages/sdk-server/src/turnkey-helpers.ts:416](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/turnkey-helpers.ts#L416)
+
+## Parameters
+
+### pathIndex
+
+`number`
+
+## Returns
+
+`WalletAccount`
diff --git a/sdks/sdk-server/index/fetch/readme.mdx b/sdks/sdk-server/index/fetch/readme.mdx
new file mode 100644
index 00000000..8ce50a8a
--- /dev/null
+++ b/sdks/sdk-server/index/fetch/readme.mdx
@@ -0,0 +1,26 @@
+---
+title: "Fetch"
+mode: wide
+---
+
+# Variable: fetch()
+
+> `const` **fetch**: (`input`, `init`?) => `Promise`\<`Response`\> = `xFetch`
+
+Defined in: [packages/sdk-server/src/universal.ts:4](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/universal.ts#L4)
+
+[MDN Reference](https://developer.mozilla.org/docs/Web/API/fetch)
+
+## Parameters
+
+### input
+
+`RequestInfo` | `URL`
+
+### init?
+
+`RequestInit`
+
+## Returns
+
+`Promise`\<`Response`\>
diff --git a/sdks/sdk-server/index/getWebAuthnAttestation/readme.mdx b/sdks/sdk-server/index/getWebAuthnAttestation/readme.mdx
new file mode 100644
index 00000000..c6cf309a
--- /dev/null
+++ b/sdks/sdk-server/index/getWebAuthnAttestation/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "GetWebAuthnAttestation"
+mode: wide
+---
+
+# Function: getWebAuthnAttestation()
+
+> **getWebAuthnAttestation**(`options`): `Promise`\<\{\}\>
+
+Defined in: packages/http/dist/webauthn.d.ts:23
+
+## Parameters
+
+### options
+
+`CredentialCreationOptions`
+
+## Returns
+
+`Promise`\<\{\}\>
diff --git a/sdks/sdk-server/index/readme.mdx b/sdks/sdk-server/index/readme.mdx
new file mode 100644
index 00000000..bf50970c
--- /dev/null
+++ b/sdks/sdk-server/index/readme.mdx
@@ -0,0 +1,98 @@
+---
+title: "Index"
+mode: wide
+---
+
+# index
+
+## Classes
+
+- [ApiKeyStamper](ApiKeyStamper/readme)
+- [Turnkey](Turnkey/readme)
+- [TurnkeyActivityError](TurnkeyActivityError/readme)
+- [TurnkeyApiClient](TurnkeyApiClient/readme)
+- [TurnkeyRequestError](TurnkeyRequestError/readme)
+- [TurnkeyServerClient](TurnkeyServerClient/readme)
+
+## Type Aliases
+
+- [TActivity](TActivity/readme)
+- [TApiKeyStamperConfig](TApiKeyStamperConfig/readme)
+- [TSignedRequest](TSignedRequest/readme)
+
+## Variables
+
+- [DEFAULT\_APTOS\_ACCOUNTS](DEFAULT_APTOS_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_MAINNET\_P2PKH\_ACCOUNTS](DEFAULT_BITCOIN_MAINNET_P2PKH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_MAINNET\_P2SH\_ACCOUNTS](DEFAULT_BITCOIN_MAINNET_P2SH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_MAINNET\_P2TR\_ACCOUNTS](DEFAULT_BITCOIN_MAINNET_P2TR_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_MAINNET\_P2WPKH\_ACCOUNTS](DEFAULT_BITCOIN_MAINNET_P2WPKH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_MAINNET\_P2WSH\_ACCOUNTS](DEFAULT_BITCOIN_MAINNET_P2WSH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_REGTEST\_P2PKH\_ACCOUNTS](DEFAULT_BITCOIN_REGTEST_P2PKH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_REGTEST\_P2SH\_ACCOUNTS](DEFAULT_BITCOIN_REGTEST_P2SH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_REGTEST\_P2TR\_ACCOUNTS](DEFAULT_BITCOIN_REGTEST_P2TR_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_REGTEST\_P2WPKH\_ACCOUNTS](DEFAULT_BITCOIN_REGTEST_P2WPKH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_REGTEST\_P2WSH\_ACCOUNTS](DEFAULT_BITCOIN_REGTEST_P2WSH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_SIGNET\_P2PKH\_ACCOUNTS](DEFAULT_BITCOIN_SIGNET_P2PKH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_SIGNET\_P2SH\_ACCOUNTS](DEFAULT_BITCOIN_SIGNET_P2SH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_SIGNET\_P2TR\_ACCOUNTS](DEFAULT_BITCOIN_SIGNET_P2TR_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_SIGNET\_P2WPKH\_ACCOUNTS](DEFAULT_BITCOIN_SIGNET_P2WPKH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_SIGNET\_P2WSH\_ACCOUNTS](DEFAULT_BITCOIN_SIGNET_P2WSH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_TESTNET\_P2PKH\_ACCOUNTS](DEFAULT_BITCOIN_TESTNET_P2PKH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_TESTNET\_P2SH\_ACCOUNTS](DEFAULT_BITCOIN_TESTNET_P2SH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_TESTNET\_P2TR\_ACCOUNTS](DEFAULT_BITCOIN_TESTNET_P2TR_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_TESTNET\_P2WPKH\_ACCOUNTS](DEFAULT_BITCOIN_TESTNET_P2WPKH_ACCOUNTS/readme)
+- [DEFAULT\_BITCOIN\_TESTNET\_P2WSH\_ACCOUNTS](DEFAULT_BITCOIN_TESTNET_P2WSH_ACCOUNTS/readme)
+- [DEFAULT\_COSMOS\_ACCOUNTS](DEFAULT_COSMOS_ACCOUNTS/readme)
+- [DEFAULT\_DOGE\_MAINNET\_ACCOUNTS](DEFAULT_DOGE_MAINNET_ACCOUNTS/readme)
+- [DEFAULT\_DOGE\_TESTNET\_ACCOUNTS](DEFAULT_DOGE_TESTNET_ACCOUNTS/readme)
+- [DEFAULT\_ETHEREUM\_ACCOUNTS](DEFAULT_ETHEREUM_ACCOUNTS/readme)
+- [DEFAULT\_SEI\_ACCOUNTS](DEFAULT_SEI_ACCOUNTS/readme)
+- [DEFAULT\_SOLANA\_ACCOUNTS](DEFAULT_SOLANA_ACCOUNTS/readme)
+- [DEFAULT\_SUI\_ACCOUNTS](DEFAULT_SUI_ACCOUNTS/readme)
+- [DEFAULT\_TON\_V3R2\_ACCOUNTS](DEFAULT_TON_V3R2_ACCOUNTS/readme)
+- [DEFAULT\_TON\_V4R2\_ACCOUNTS](DEFAULT_TON_V4R2_ACCOUNTS/readme)
+- [DEFAULT\_TRON\_ACCOUNTS](DEFAULT_TRON_ACCOUNTS/readme)
+- [DEFAULT\_XLM\_ACCOUNTS](DEFAULT_XLM_ACCOUNTS/readme)
+- [fetch](fetch/readme)
+- [server](server/readme)
+- [signWithApiKey](signWithApiKey/readme)
+
+## Functions
+
+- [createActivityPoller](createActivityPoller/readme)
+- [defaultAptosAccountAtIndex](defaultAptosAccountAtIndex/readme)
+- [defaultBitcoinMainnetP2PKHAccountAtIndex](defaultBitcoinMainnetP2PKHAccountAtIndex/readme)
+- [defaultBitcoinMainnetP2SHAccountAtIndex](defaultBitcoinMainnetP2SHAccountAtIndex/readme)
+- [defaultBitcoinMainnetP2TRAccountAtIndex](defaultBitcoinMainnetP2TRAccountAtIndex/readme)
+- [defaultBitcoinMainnetP2WPKHAccountAtIndex](defaultBitcoinMainnetP2WPKHAccountAtIndex/readme)
+- [defaultBitcoinMainnetP2WSHAccountAtIndex](defaultBitcoinMainnetP2WSHAccountAtIndex/readme)
+- [defaultBitcoinRegtestP2PKHAccountAtIndex](defaultBitcoinRegtestP2PKHAccountAtIndex/readme)
+- [defaultBitcoinRegtestP2SHAccountAtIndex](defaultBitcoinRegtestP2SHAccountAtIndex/readme)
+- [defaultBitcoinRegtestP2TRAccountAtIndex](defaultBitcoinRegtestP2TRAccountAtIndex/readme)
+- [defaultBitcoinRegtestP2WPKHAccountAtIndex](defaultBitcoinRegtestP2WPKHAccountAtIndex/readme)
+- [defaultBitcoinRegtestP2WSHAccountAtIndex](defaultBitcoinRegtestP2WSHAccountAtIndex/readme)
+- [defaultBitcoinSignetP2PKHAccountAtIndex](defaultBitcoinSignetP2PKHAccountAtIndex/readme)
+- [defaultBitcoinSignetP2SHAccountAtIndex](defaultBitcoinSignetP2SHAccountAtIndex/readme)
+- [defaultBitcoinSignetP2TRAccountAtIndex](defaultBitcoinSignetP2TRAccountAtIndex/readme)
+- [defaultBitcoinSignetP2WPKHAccountAtIndex](defaultBitcoinSignetP2WPKHAccountAtIndex/readme)
+- [defaultBitcoinSignetP2WSHAccountAtIndex](defaultBitcoinSignetP2WSHAccountAtIndex/readme)
+- [defaultBitcoinTestnetP2PKHAccountAtIndex](defaultBitcoinTestnetP2PKHAccountAtIndex/readme)
+- [defaultBitcoinTestnetP2SHAccountAtIndex](defaultBitcoinTestnetP2SHAccountAtIndex/readme)
+- [defaultBitcoinTestnetP2TRAccountAtIndex](defaultBitcoinTestnetP2TRAccountAtIndex/readme)
+- [defaultBitcoinTestnetP2WPKHAccountAtIndex](defaultBitcoinTestnetP2WPKHAccountAtIndex/readme)
+- [defaultBitcoinTestnetP2WSHAccountAtIndex](defaultBitcoinTestnetP2WSHAccountAtIndex/readme)
+- [defaultCosmosAccountAtIndex](defaultCosmosAccountAtIndex/readme)
+- [defaultDogeMainnetAccountAtIndex](defaultDogeMainnetAccountAtIndex/readme)
+- [defaultDogeTestnetAccountAtIndex](defaultDogeTestnetAccountAtIndex/readme)
+- [defaultEthereumAccountAtIndex](defaultEthereumAccountAtIndex/readme)
+- [defaultSeiAccountAtIndex](defaultSeiAccountAtIndex/readme)
+- [defaultSolanaAccountAtIndex](defaultSolanaAccountAtIndex/readme)
+- [defaultSuiAccountAtIndex](defaultSuiAccountAtIndex/readme)
+- [defaultTonV3r2AccountAtIndex](defaultTonV3r2AccountAtIndex/readme)
+- [defaultTonV4r2AccountAtIndex](defaultTonV4r2AccountAtIndex/readme)
+- [defaultTronAccountAtIndex](defaultTronAccountAtIndex/readme)
+- [defaultXlmAccountAtIndex](defaultXlmAccountAtIndex/readme)
+- [defaultXrpAccountAtIndex](defaultXrpAccountAtIndex/readme)
+- [getWebAuthnAttestation](getWebAuthnAttestation/readme)
+- [sealAndStampRequestBody](sealAndStampRequestBody/readme)
diff --git a/sdks/sdk-server/index/sealAndStampRequestBody/readme.mdx b/sdks/sdk-server/index/sealAndStampRequestBody/readme.mdx
new file mode 100644
index 00000000..05ca694b
--- /dev/null
+++ b/sdks/sdk-server/index/sealAndStampRequestBody/readme.mdx
@@ -0,0 +1,36 @@
+---
+title: "SealAndStampRequestBody"
+mode: wide
+---
+
+# Function: sealAndStampRequestBody()
+
+> **sealAndStampRequestBody**(`input`): `Promise`\<\{ `sealedBody`: `string`; `xStamp`: `string`; \}\>
+
+Defined in: packages/http/dist/base.d.ts:44
+
+Seals and stamps the request body with your Turnkey API credentials.
+
+You can either:
+- Before calling `sealAndStampRequestBody(...)`, initialize with your Turnkey API credentials via `init(...)`
+- Or, provide `apiPublicKey` and `apiPrivateKey` here as arguments
+
+## Parameters
+
+### input
+
+#### apiPrivateKey?
+
+`string`
+
+#### apiPublicKey?
+
+`string`
+
+#### body
+
+`Record`\<`string`, `any`\>
+
+## Returns
+
+`Promise`\<\{ `sealedBody`: `string`; `xStamp`: `string`; \}\>
diff --git a/sdks/sdk-server/index/server/readme.mdx b/sdks/sdk-server/index/server/readme.mdx
new file mode 100644
index 00000000..3bbebfe0
--- /dev/null
+++ b/sdks/sdk-server/index/server/readme.mdx
@@ -0,0 +1,124 @@
+---
+title: "Server"
+mode: wide
+---
+
+# Variable: server
+
+> `const` **server**: `object`
+
+Defined in: [packages/sdk-server/src/index.ts:57](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/sdk-server/src/index.ts#L57)
+
+## Type declaration
+
+### createSuborg()
+
+> **createSuborg**: (`request`) => `Promise`\<`undefined` \| `CreateSuborgResponse`\>
+
+#### Parameters
+
+##### request
+
+`CreateSuborgRequest`
+
+#### Returns
+
+`Promise`\<`undefined` \| `CreateSuborgResponse`\>
+
+### getOrCreateSuborg()
+
+> **getOrCreateSuborg**: (`request`) => `Promise`\<`undefined` \| `GetOrCreateSuborgResponse`\>
+
+#### Parameters
+
+##### request
+
+`GetOrCreateSuborgRequest`
+
+#### Returns
+
+`Promise`\<`undefined` \| `GetOrCreateSuborgResponse`\>
+
+### getSuborgs()
+
+> **getSuborgs**: (`request`) => `Promise`\<`undefined` \| `GetSuborgsResponse`\>
+
+#### Parameters
+
+##### request
+
+`GetSuborgsRequest`
+
+#### Returns
+
+`Promise`\<`undefined` \| `GetSuborgsResponse`\>
+
+### getVerifiedSuborgs()
+
+> **getVerifiedSuborgs**: (`request`) => `Promise`\<`undefined` \| `GetSuborgsResponse`\>
+
+#### Parameters
+
+##### request
+
+`GetSuborgsRequest`
+
+#### Returns
+
+`Promise`\<`undefined` \| `GetSuborgsResponse`\>
+
+### oauth()
+
+> **oauth**: (`request`) => `Promise`\<`undefined` \| `Session`\>
+
+#### Parameters
+
+##### request
+
+`OauthRequest`
+
+#### Returns
+
+`Promise`\<`undefined` \| `Session`\>
+
+### sendCredential()
+
+> **sendCredential**: (`request`) => `Promise`\<`void`\>
+
+#### Parameters
+
+##### request
+
+`InitEmailAuthRequest`
+
+#### Returns
+
+`Promise`\<`void`\>
+
+### sendOtp()
+
+> **sendOtp**: (`request`) => `Promise`\<`undefined` \| `SendOtpResponse`\>
+
+#### Parameters
+
+##### request
+
+`SendOtpRequest`
+
+#### Returns
+
+`Promise`\<`undefined` \| `SendOtpResponse`\>
+
+### verifyOtp()
+
+> **verifyOtp**: (`request`) => `Promise`\<`undefined` \| `Session`\>
+
+#### Parameters
+
+##### request
+
+`VerifyOtpRequest`
+
+#### Returns
+
+`Promise`\<`undefined` \| `Session`\>
diff --git a/sdks/sdk-server/index/signWithApiKey/readme.mdx b/sdks/sdk-server/index/signWithApiKey/readme.mdx
new file mode 100644
index 00000000..90dfb407
--- /dev/null
+++ b/sdks/sdk-server/index/signWithApiKey/readme.mdx
@@ -0,0 +1,32 @@
+---
+title: "SignWithApiKey"
+mode: wide
+---
+
+# Variable: signWithApiKey()
+
+> `const` **signWithApiKey**: (`input`) => `Promise`\<`string`\>
+
+Defined in: packages/api-key-stamper/dist/index.d.ts:9
+
+Signature function abstracting the differences between NodeJS and web environments for signing with API keys.
+
+## Parameters
+
+### input
+
+#### content
+
+`string`
+
+#### privateKey
+
+`string`
+
+#### publicKey
+
+`string`
+
+## Returns
+
+`Promise`\<`string`\>
diff --git a/sdks/sdk-server/readme.mdx b/sdks/sdk-server/readme.mdx
new file mode 100644
index 00000000..1eeb1440
--- /dev/null
+++ b/sdks/sdk-server/readme.mdx
@@ -0,0 +1,54 @@
+---
+title: "SDK Server"
+mode: wide
+---
+
+# @turnkey/sdk-server
+
+[](https://www.npmjs.com/package/@turnkey/sdk-server)
+
+A SDK client with server-specific abstractions for interacting with [Turnkey](https://turnkey.com) API. Also includes [@turnkey/http](https://www.npmjs.com/package/@turnkey/http), a lower-level, fully typed HTTP client.
+
+Turnkey API documentation lives here: https://docs.turnkey.com.
+
+## Getting started
+
+```bash
+$ npm install @turnkey/sdk-server
+```
+
+```js
+const { Turnkey } = require("@turnkey/sdk-server");
+
+// This config contains parameters including base URLs, API credentials, and org ID
+const turnkeyConfig = JSON.parse(fs.readFileSync("./turnkey.json", "utf8"));
+
+// Use the config to instantiate a Turnkey Client
+const turnkeyServerClient = new Turnkey(turnkeyConfig);
+
+// You're all set to create a server!
+const turnkeyProxyHandler = turnkeyServerClient.expressProxyHandler({});
+
+app.post("/apiProxy", turnkeyProxyHandler);
+
+app.listen(PORT, () => {
+ console.log(`Server running on port ${PORT}`);
+});
+```
+
+## Helpers
+
+`@turnkey/sdk-server` provides `Turnkey`, which offers wrappers around commonly used Turnkey API setups. This enables you to easily stand up a minimal backend to proxy end-users' requests to Turnkey. You can also use this to call on the Turnkey API directly from a server setting.
+
+// TODO:
+// - typescript-ify example
+// - include nextjs server example
+
+## Documents
+
+- [documents/docs](documents/docs/readme)
+
+
+## Modules
+
+- [index](index/readme)
diff --git a/sdks/solana/documents/docs/readme.mdx b/sdks/solana/documents/docs/readme.mdx
new file mode 100644
index 00000000..456e70ea
--- /dev/null
+++ b/sdks/solana/documents/docs/readme.mdx
@@ -0,0 +1,16 @@
+---
+title: "Docs"
+mode: wide
+---
+
+[**Documentation**](../../../readme)
+
+***
+
+[Documentation](../../../modules) / [solana](../../readme) / documents/docs
+
+---
+title: "Solana"
+description: "We have released a package that you can use to sign transactions and messages: [`@turnkey/solana`](https://www.npmjs.com/package/@turnkey/solana). See [here](https://github.com/tkhq/sdk/tree/main/examples/with-solana) for an example."
+mode: wide
+---
diff --git a/sdks/solana/index/TurnkeySigner/readme.mdx b/sdks/solana/index/TurnkeySigner/readme.mdx
new file mode 100644
index 00000000..3924bab6
--- /dev/null
+++ b/sdks/solana/index/TurnkeySigner/readme.mdx
@@ -0,0 +1,177 @@
+---
+title: "TurnkeySigner"
+mode: wide
+---
+
+# Class: TurnkeySigner
+
+Defined in: [solana/src/index.ts:13](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/solana/src/index.ts#L13)
+
+## Constructors
+
+### Constructor
+
+> **new TurnkeySigner**(`input`): `TurnkeySigner`
+
+Defined in: [solana/src/index.ts:17](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/solana/src/index.ts#L17)
+
+#### Parameters
+
+##### input
+
+###### client
+
+`TClient`
+
+###### organizationId
+
+`string`
+
+#### Returns
+
+`TurnkeySigner`
+
+## Properties
+
+### client
+
+> `readonly` **client**: `TClient`
+
+Defined in: [solana/src/index.ts:15](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/solana/src/index.ts#L15)
+
+***
+
+### organizationId
+
+> `readonly` **organizationId**: `string`
+
+Defined in: [solana/src/index.ts:14](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/solana/src/index.ts#L14)
+
+## Methods
+
+### addSignature()
+
+> **addSignature**(`tx`, `fromAddress`, `organizationId`?): `Promise`\<`void`\>
+
+Defined in: [solana/src/index.ts:60](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/solana/src/index.ts#L60)
+
+This function takes a Solana transaction and adds a signature with Turnkey
+
+#### Parameters
+
+##### tx
+
+Transaction | VersionedTransaction object (native @solana/web3.js type)
+
+`Transaction` | `VersionedTransaction`
+
+##### fromAddress
+
+`string`
+
+Solana address (base58 encoded)
+
+##### organizationId?
+
+`string`
+
+#### Returns
+
+`Promise`\<`void`\>
+
+***
+
+### signAllTransactions()
+
+> **signAllTransactions**(`txs`, `fromAddress`, `organizationId`?): `Promise`\<(`Transaction` \| `VersionedTransaction`)[]\>
+
+Defined in: [solana/src/index.ts:28](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/solana/src/index.ts#L28)
+
+This function takes an array of Solana transactions and adds a signature with Turnkey to each of them
+
+#### Parameters
+
+##### txs
+
+(`Transaction` \| `VersionedTransaction`)[]
+
+array of Transaction | VersionedTransaction (native @solana/web3.js type)
+
+##### fromAddress
+
+`string`
+
+Solana address (base58 encoded)
+
+##### organizationId?
+
+`string`
+
+#### Returns
+
+`Promise`\<(`Transaction` \| `VersionedTransaction`)[]\>
+
+***
+
+### signMessage()
+
+> **signMessage**(`message`, `fromAddress`, `organizationId`?): `Promise`\<`Uint8Array`\>
+
+Defined in: [solana/src/index.ts:83](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/solana/src/index.ts#L83)
+
+This function takes a message and returns it after being signed with Turnkey
+
+#### Parameters
+
+##### message
+
+`Uint8Array`
+
+The message to sign (Uint8Array)
+
+##### fromAddress
+
+`string`
+
+Solana address (base58 encoded)
+
+##### organizationId?
+
+`string`
+
+#### Returns
+
+`Promise`\<`Uint8Array`\>
+
+***
+
+### signTransaction()
+
+> **signTransaction**(`tx`, `fromAddress`, `organizationId`?): `Promise`\<`Transaction` \| `VersionedTransaction`\>
+
+Defined in: [solana/src/index.ts:106](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/solana/src/index.ts#L106)
+
+This function takes a Solana transaction, adds a signature via Turnkey,
+and returns a new transaction
+
+#### Parameters
+
+##### tx
+
+Transaction | VersionedTransaction object (native @solana/web3.js type)
+
+`Transaction` | `VersionedTransaction`
+
+##### fromAddress
+
+`string`
+
+Solana address (base58 encoded)
+
+##### organizationId?
+
+`string`
+
+#### Returns
+
+`Promise`\<`Transaction` \| `VersionedTransaction`\>
diff --git a/sdks/solana/index/readme.mdx b/sdks/solana/index/readme.mdx
new file mode 100644
index 00000000..64084287
--- /dev/null
+++ b/sdks/solana/index/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "Index"
+mode: wide
+---
+
+# index
+
+## Classes
+
+- [TurnkeySigner](TurnkeySigner/readme)
diff --git a/sdks/solana/readme.mdx b/sdks/solana/readme.mdx
new file mode 100644
index 00000000..0da4beb9
--- /dev/null
+++ b/sdks/solana/readme.mdx
@@ -0,0 +1,35 @@
+---
+title: "Solana"
+mode: wide
+---
+
+# @turnkey/solana
+
+[](https://www.npmjs.com/package/@turnkey/solana)
+
+[Turnkey](https://turnkey.com) Solana signer for [`@solana/web3js`](https://solana-labs.github.io/solana-web3.js/):
+
+If you need a lower-level, fully typed HTTP client for interacting with Turnkey API, check out [`@turnkey/http`](https://www.npmjs.com/package/@turnkey/http).
+
+API Docs: https://docs.turnkey.com/
+
+## Getting started
+
+```bash
+$ npm install @turnkey/solana
+```
+
+## Examples
+
+| Example | Description |
+| -------------------------------------------- | ----------------------------------------------------------------------------------- |
+| [`with-solana`](../../examples/with-solana/) | Create a new Solana address, then sign and broadcast a transaction on Solana devnet |
+
+## Documents
+
+- [documents/docs](documents/docs/readme)
+
+
+## Modules
+
+- [index](index/readme)
diff --git a/sdks/telegram-cloud-storage-stamper/index/CloudStorageAPIKey/readme.mdx b/sdks/telegram-cloud-storage-stamper/index/CloudStorageAPIKey/readme.mdx
new file mode 100644
index 00000000..378d2c7f
--- /dev/null
+++ b/sdks/telegram-cloud-storage-stamper/index/CloudStorageAPIKey/readme.mdx
@@ -0,0 +1,26 @@
+---
+title: "CloudStorageAPIKey"
+mode: wide
+---
+
+# Type Alias: CloudStorageAPIKey
+
+> **CloudStorageAPIKey** = `object`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:20](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L20)
+
+## Properties
+
+### apiPrivateKey
+
+> **apiPrivateKey**: `string`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:22](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L22)
+
+***
+
+### apiPublicKey
+
+> **apiPublicKey**: `string`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:21](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L21)
diff --git a/sdks/telegram-cloud-storage-stamper/index/DEFAULT_TURNKEY_CLOUD_STORAGE_KEY/readme.mdx b/sdks/telegram-cloud-storage-stamper/index/DEFAULT_TURNKEY_CLOUD_STORAGE_KEY/readme.mdx
new file mode 100644
index 00000000..f65999cc
--- /dev/null
+++ b/sdks/telegram-cloud-storage-stamper/index/DEFAULT_TURNKEY_CLOUD_STORAGE_KEY/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "DEFAULT_TURNKEY_CLOUD_STORAGE_KEY"
+mode: wide
+---
+
+# Variable: DEFAULT\_TURNKEY\_CLOUD\_STORAGE\_KEY
+
+> `const` **DEFAULT\_TURNKEY\_CLOUD\_STORAGE\_KEY**: `"TURNKEY_API_KEY"` = `"TURNKEY_API_KEY"`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:26](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L26)
diff --git a/sdks/telegram-cloud-storage-stamper/index/TTelegramCloudStorageStamperConfig/readme.mdx b/sdks/telegram-cloud-storage-stamper/index/TTelegramCloudStorageStamperConfig/readme.mdx
new file mode 100644
index 00000000..7e9537b4
--- /dev/null
+++ b/sdks/telegram-cloud-storage-stamper/index/TTelegramCloudStorageStamperConfig/readme.mdx
@@ -0,0 +1,26 @@
+---
+title: "TTelegramCloudStorageStamperConfig"
+mode: wide
+---
+
+# Type Alias: TTelegramCloudStorageStamperConfig
+
+> **TTelegramCloudStorageStamperConfig** = `object`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:15](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L15)
+
+## Properties
+
+### cloudStorageAPIKey?
+
+> `optional` **cloudStorageAPIKey**: [`CloudStorageAPIKey`](../CloudStorageAPIKey/readme)
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:16](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L16)
+
+***
+
+### cloudStorageKey?
+
+> `optional` **cloudStorageKey**: `string`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:17](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L17)
diff --git a/sdks/telegram-cloud-storage-stamper/index/TelegramCloudStorageStamper/readme.mdx b/sdks/telegram-cloud-storage-stamper/index/TelegramCloudStorageStamper/readme.mdx
new file mode 100644
index 00000000..228b4393
--- /dev/null
+++ b/sdks/telegram-cloud-storage-stamper/index/TelegramCloudStorageStamper/readme.mdx
@@ -0,0 +1,256 @@
+---
+title: "TelegramCloudStorageStamper"
+mode: wide
+---
+
+# Class: TelegramCloudStorageStamper
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:31](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L31)
+
+Stamper to use within a `TurnkeyClient`
+
+## Constructors
+
+### Constructor
+
+> **new TelegramCloudStorageStamper**(): `TelegramCloudStorageStamper`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:36](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L36)
+
+#### Returns
+
+`TelegramCloudStorageStamper`
+
+## Properties
+
+### stamper?
+
+> `optional` **stamper**: [`ApiKeyStamper`](../../../api-key-stamper/index/ApiKeyStamper/readme)
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:33](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L33)
+
+## Methods
+
+### checkTelegramContext()
+
+> **checkTelegramContext**(): `void`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:151](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L151)
+
+#### Returns
+
+`void`
+
+***
+
+### clearItem()
+
+> **clearItem**(`key`): `Promise`\<`void`\>
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:244](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L244)
+
+#### Parameters
+
+##### key
+
+`string`
+
+#### Returns
+
+`Promise`\<`void`\>
+
+***
+
+### getAPIKey()
+
+> **getAPIKey**(`key`): `Promise`\<`null` \| [`CloudStorageAPIKey`](../CloudStorageAPIKey/readme)\>
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:135](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L135)
+
+#### Parameters
+
+##### key
+
+`string` = `DEFAULT_TURNKEY_CLOUD_STORAGE_KEY`
+
+#### Returns
+
+`Promise`\<`null` \| [`CloudStorageAPIKey`](../CloudStorageAPIKey/readme)\>
+
+***
+
+### getItem()
+
+> **getItem**(`key`): `Promise`\<`string`\>
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:193](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L193)
+
+#### Parameters
+
+##### key
+
+`string`
+
+#### Returns
+
+`Promise`\<`string`\>
+
+***
+
+### insertAPIKey()
+
+> **insertAPIKey**(`apiPublicKey`, `apiPrivateKey`, `key`): `Promise`\<`void`\>
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:124](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L124)
+
+#### Parameters
+
+##### apiPublicKey
+
+`string`
+
+##### apiPrivateKey
+
+`string`
+
+##### key
+
+`string` = `DEFAULT_TURNKEY_CLOUD_STORAGE_KEY`
+
+#### Returns
+
+`Promise`\<`void`\>
+
+***
+
+### isCloudStorageAPIKey()
+
+> **isCloudStorageAPIKey**(`apiKey`): `boolean`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:186](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L186)
+
+#### Parameters
+
+##### apiKey
+
+[`CloudStorageAPIKey`](../CloudStorageAPIKey/readme)
+
+#### Returns
+
+`boolean`
+
+***
+
+### parseAPIKey()
+
+> **parseAPIKey**(`apiKey`): `null` \| \{ `apiPrivateKey`: `any`; `apiPublicKey`: `any`; \}
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:166](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L166)
+
+#### Parameters
+
+##### apiKey
+
+`string`
+
+#### Returns
+
+`null` \| \{ `apiPrivateKey`: `any`; `apiPublicKey`: `any`; \}
+
+***
+
+### setItem()
+
+> **setItem**(`key`, `value`): `Promise`\<`void`\>
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:214](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L214)
+
+#### Parameters
+
+##### key
+
+`string`
+
+##### value
+
+`string`
+
+#### Returns
+
+`Promise`\<`void`\>
+
+***
+
+### setSigningKey()
+
+> **setSigningKey**(`config`?): `Promise`\<`void`\>
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:65](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L65)
+
+#### Parameters
+
+##### config?
+
+[`TTelegramCloudStorageStamperConfig`](../TTelegramCloudStorageStamperConfig/readme)
+
+#### Returns
+
+`Promise`\<`void`\>
+
+***
+
+### stamp()
+
+> **stamp**(`payload`): `Promise`\<\{ `stampHeaderName`: `string`; `stampHeaderValue`: `string`; \}\>
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:50](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L50)
+
+#### Parameters
+
+##### payload
+
+`string`
+
+#### Returns
+
+`Promise`\<\{ `stampHeaderName`: `string`; `stampHeaderValue`: `string`; \}\>
+
+***
+
+### stringifyAPIKey()
+
+> **stringifyAPIKey**(`apiPublicKey`, `apiPrivateKey`): `string`
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:159](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L159)
+
+#### Parameters
+
+##### apiPublicKey
+
+`string`
+
+##### apiPrivateKey
+
+`string`
+
+#### Returns
+
+`string`
+
+***
+
+### create()
+
+> `static` **create**(`config`?): `Promise`\<`TelegramCloudStorageStamper`\>
+
+Defined in: [telegram-cloud-storage-stamper/src/index.ts:42](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/telegram-cloud-storage-stamper/src/index.ts#L42)
+
+#### Parameters
+
+##### config?
+
+[`TTelegramCloudStorageStamperConfig`](../TTelegramCloudStorageStamperConfig/readme)
+
+#### Returns
+
+`Promise`\<`TelegramCloudStorageStamper`\>
diff --git a/sdks/telegram-cloud-storage-stamper/index/readme.mdx b/sdks/telegram-cloud-storage-stamper/index/readme.mdx
new file mode 100644
index 00000000..3797b9ac
--- /dev/null
+++ b/sdks/telegram-cloud-storage-stamper/index/readme.mdx
@@ -0,0 +1,19 @@
+---
+title: "Index"
+mode: wide
+---
+
+# index
+
+## Classes
+
+- [TelegramCloudStorageStamper](TelegramCloudStorageStamper/readme)
+
+## Type Aliases
+
+- [CloudStorageAPIKey](CloudStorageAPIKey/readme)
+- [TTelegramCloudStorageStamperConfig](TTelegramCloudStorageStamperConfig/readme)
+
+## Variables
+
+- [DEFAULT\_TURNKEY\_CLOUD\_STORAGE\_KEY](DEFAULT_TURNKEY_CLOUD_STORAGE_KEY/readme)
diff --git a/sdks/telegram-cloud-storage-stamper/readme.mdx b/sdks/telegram-cloud-storage-stamper/readme.mdx
new file mode 100644
index 00000000..49322890
--- /dev/null
+++ b/sdks/telegram-cloud-storage-stamper/readme.mdx
@@ -0,0 +1,210 @@
+---
+title: "Telegram Cloud Storage Stamper"
+mode: wide
+---
+
+# @turnkey/telegram-cloud-storage-stamper
+
+[](https://www.npmjs.com/package/@turnkey/telegram-cloud-storage-stamper)
+
+This package contains functions to store Turnkey API public/private keys and arbitrary data within [Telegram Cloud Storage](https://core.telegram.org/bots/webapps#cloudstorage). This package also handles stamping a Turnkey request with an API key. It is meant to be used with [`@turnkey/sdk-browser`](https://www.npmjs.com/package/@turnkey/sdk-browser).
+
+### Preqrequisites
+
+Telegram Bot API >= 6.9
+
+### About
+
+The Telegram Cloud Storage Stamper has a few different modes of operation, namely a classic [stamper](https://docs.turnkey.com/api-overview/stamps) for stamping requests made to Turnkey's API, and an interface for a Telegram Mini App built with Turnkey to interact with Telegram Cloud Storage. This provides the developer of the application utilities such as creating stamps on requests made by users, storing user API keys, storing temporary keys that are needed for decrypting credential bundles for activites like [email auth](https://docs.turnkey.com/features/email-auth) or [oauth](https://docs.turnkey.com/features/oauth), or storing arbitrary values that would be helpful to have saved for a user from session to session on device to device.
+
+The Telegram Cloud Storage Stamper will, by default, store the API key used for signing in Telegram Cloud Storage under the key `TURNKEY_API_KEY`. A Cloud Storage "key" is the index under which a value is stored in Telegram Cloud Storage. This can be changed when using the `.create()` or `.setSigningKey()` functions. An API key is stored within Cloud Storage as a JSON string of the following object:
+
+```
+{
+ apiPublicKey: "compressedApiPublicKeyHex",
+ apiPrivateKey: "apiPrivateKeyHex",
+}
+```
+
+#### Argument Usage
+
+The `.create()` and `.setSigningKey()` functions take one of the following 4 sets of arguments:
+
+- No arguments: Use an API key at the default location within Telegram Cloud Storage `TURNKEY_API_KEY` and set that as the signing key
+- Just an API key: Store the passed in API key at the default Telegram Cloud Storage location and set that as the signing key
+- Just a Cloud Storage key: Use an API key stored at the specified Telegram Cloud Storage key location and set that as the signing key
+- Both an API key and a Cloud Storage key: Store the passed API key at the specified Telegram Cloud Storage key location and set that as the signing key
+
+The `.getAPIKey()` and `.setAPIKey()` functions operate in a similar manner taking an optional `key` parameter that will be used to `get` or `set` the API key at that location if it is passed, or at the default location if it is not passed.
+
+The following section will describe the usage of the helper functions provided for interfacing with Telegram Cloud Storage. These functions return null if there is no value when trying to retrieve an item from Cloud Storage.
+
+### Usage
+
+Insert a new API key into Telegram Cloud Storage at the default API key location
+
+```ts
+import TelegramCloudStorageStamper, { CloudStorageAPIKey } from "@turnkey/telegram-cloud-storage-stamper";
+import { generateP256KeyPair } from "@turnkey/crypto";
+import { TurnkeyBrowserClient, TurnkeySDKClientConfig } from "@turnkey/sdk-browser";
+
+// generate an API keypair
+const keyPair = generateP256KeyPair();
+
+// the API key to be stored
+const apiKey: CloudStorageAPIKey = {
+ apiPublicKey: keyPair.publicKey,
+ apiPrivateKey: keyPair.privateKey,
+}
+
+// create a new Telegram Cloud Storage Stamper
+const stamper = await TelegramCloudStorageStamper.create({
+ cloudStorageAPIKey: apiKey
+})
+
+// use the stamper in the client config
+const browserConfig: TurnkeySDKClientConfig = {
+ stamper: stamper,
+ apiBaseUrl: "https://api.turnkey.com",
+ organizationId: ,
+};
+
+// create a TurnkeyClient with the initialized Telegram Cloud Storage Stamper
+const client = new TurnkeyBrowserClient(browserConfig);
+
+// make a request with the client
+const whoamiResponse = await client.getWhoami({
+ organizationId: ,
+});
+```
+
+Use an existing key that has been previously stored in Telegram Cloud Storage at the default API key location key location
+
+```ts
+import TelegramCloudStorageStamper from "@turnkey/telegram-cloud-storage-stamper";
+import { TurnkeyBrowserClient, TurnkeySDKClientConfig } from "@turnkey/sdk-browser";
+
+// create a new Telegram Cloud Storage stamper
+const stamper = await TelegramCloudStorageStamper.create();
+
+// use the stamper in the client config
+const browserConfig: TurnkeySDKClientConfig = {
+ stamper: stamper,
+ apiBaseUrl: "https://api.turnkey.com",
+ organizationId: ,
+};
+
+// create a TurnkeyClient with the initialized Telegram Cloud Storage Stamper
+const client = new TurnkeyBrowserClient(browserConfig);
+
+// make a request with the client
+const whoamiResponse = await client.getWhoami({
+ organizationId: ,
+});
+```
+
+View an entry in Telegram Cloud Storage without inserting an API key, note the usage difference between the `new` and `.create()` here. `.create()` will do the work of getting/setting an API key in Cloud Storage whereas `new` will not
+
+```ts
+import TelegramCloudStorageStamper, {
+ CloudStorageAPIKey,
+} from "@turnkey/telegram-cloud-storage-stamper";
+
+// create a new Telegram Cloud Storage Stamper, "new" is used when you don't want to store or retrieve any API keys, and just need an interface into Cloud Storage
+const stamper = new TelegramCloudStorageStamper();
+
+// the key used to index Telegram Cloud Storage
+const telegramCloudStorageKey = "@turnkey/telegramCloudStorageKey";
+
+// get the item stored in Telegram Cloud Storage returned as a string
+const item = await stamper.getItem(telegramCloudStorageKey);
+
+if (!item) {
+ // failed retrieving item
+}
+```
+
+Insert a new API key into Cloud Storage at a specified key. This is just storing an API key, without using `.setSigningKey()` the key will not be used for signing.
+
+```ts
+import TelegramCloudStorageStamper from "@turnkey/telegram-cloud-storage-stamper";
+
+// create a new Telegram Cloud Storage Stamper
+const stamper = new TelegramCloudStorageStamper();
+
+const apiPublicKey = "...";
+const apiPrivateKey = "...";
+
+// the key used to index Telegram Cloud Storage
+const telegramCloudStorageKey = "@turnkey/telegramCloudStorageKey";
+
+// insert the API key in Telegram Cloud Storage
+await stamper.insertAPIKey(
+ apiPublicKey,
+ apiPrivateKey,
+ telegramCloudStorageKey,
+);
+```
+
+Set a new API key as the signing key for the stamper at a specified key. This will also insert the API key to that location within Telegram CloudStorage. Any subsequent requests for stamping will sign with this API key. The API key and CloudStorage key can also be omitted and the API key at the default location `TURNKEY_API_KEY` will be used. If an API key is omitted and a CloudStorage key is specified an API key at that location will be used. Refer to the [argument-usage](#argument-usage) section for a full explanation. A stamper that was originally used to just view Cloud Storage values can later be used for signing by using the `.setSigningKey()` function.
+
+```ts
+import TelegramCloudStorageStamper, {
+ CloudStorageAPIKey,
+} from "@turnkey/telegram-cloud-storage-stamper";
+
+// the API key to be set as the signing key
+const apiKey: CloudStorageAPIKey = {
+ apiPublicKey: "...",
+ apiPrivateKey: "...",
+};
+
+// create a new Telegram Cloud Storage Stamper
+const stamper = new TelegramCloudStorageStamper();
+
+// the key used to index Telegram Cloud Storage
+const telegramCloudStorageKey = "@turnkey/telegramCloudStorageKey";
+
+// insert the API key in Telegram Cloud Storage
+await stamper.setSigningKey({
+ cloudStorageAPIKey: apiKey,
+ cloudStorageKey: telegramCloudStorageKey,
+});
+```
+
+Set a new API key as the signing key for the stamper that previously had a different key set for the stamper.
+
+```ts
+import TelegramCloudStorageStamper, {
+ CloudStorageAPIKey,
+} from "@turnkey/telegram-cloud-storage-stamper";
+
+// the API key to be stored
+const apiKey: CloudStorageAPIKey = {
+ apiPublicKey: "...",
+ apiPrivateKey: "...",
+};
+
+// the API key to be set as the signing key
+const stamper = await TelegramCloudStorageStamper.create({
+ cloudStorageAPIKey: apiKey,
+});
+
+const apiKey2: CloudStorageAPIKey = {
+ apiPublicKey: "...",
+ apiPrivateKey: "...",
+};
+
+// insert the API key in Telegram Cloud Storage
+await stamper.setSigningKey({
+ cloudStorageAPIKey: apiKey2,
+});
+```
+
+## Documents
+
+
+
+## Modules
+
+- [index](index/readme)
diff --git a/sdks/viem/documents/docs/readme.mdx b/sdks/viem/documents/docs/readme.mdx
new file mode 100644
index 00000000..db4a691b
--- /dev/null
+++ b/sdks/viem/documents/docs/readme.mdx
@@ -0,0 +1,11 @@
+---
+title: "Docs"
+mode: wide
+---
+
+#custom-account) (signer) which implements the signing APIs expected by Viem clients."
+mode: wide
+---
+
+See [`with-viem`](https://github.com/tkhq/sdk/tree/main/examples/with-viem) and [`with-viem-and-passkeys`](https://github.com/tkhq/sdk/tree/main/examples/with-viem-and-passkeys) for examples.
+See [`with-viem`](https://github.com/tkhq/sdk/tree/main/examples/with-viem) and [`with-viem-and-passkeys`](https://github.com/tkhq/sdk/tree/main/examples/with-viem-and-passkeys) for examples.
diff --git a/sdks/viem/index/TTurnkeyActivityErrorType/readme.mdx b/sdks/viem/index/TTurnkeyActivityErrorType/readme.mdx
new file mode 100644
index 00000000..f134b89e
--- /dev/null
+++ b/sdks/viem/index/TTurnkeyActivityErrorType/readme.mdx
@@ -0,0 +1,16 @@
+---
+title: "TTurnkeyActivityErrorType"
+mode: wide
+---
+
+# Type Alias: TTurnkeyActivityErrorType
+
+> **TTurnkeyActivityErrorType** = [`TurnkeyActivityError`](../TurnkeyActivityError/readme) & `object`
+
+Defined in: [packages/viem/src/index.ts:52](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L52)
+
+## Type declaration
+
+### name
+
+> **name**: `"TurnkeyActivityError"`
diff --git a/sdks/viem/index/TTurnkeyConsensusNeededErrorType/readme.mdx b/sdks/viem/index/TTurnkeyConsensusNeededErrorType/readme.mdx
new file mode 100644
index 00000000..9aad905d
--- /dev/null
+++ b/sdks/viem/index/TTurnkeyConsensusNeededErrorType/readme.mdx
@@ -0,0 +1,16 @@
+---
+title: "TTurnkeyConsensusNeededErrorType"
+mode: wide
+---
+
+# Type Alias: TTurnkeyConsensusNeededErrorType
+
+> **TTurnkeyConsensusNeededErrorType** = [`TurnkeyConsensusNeededError`](../TurnkeyConsensusNeededError/readme) & `object`
+
+Defined in: [packages/viem/src/index.ts:27](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L27)
+
+## Type declaration
+
+### name
+
+> **name**: `"TurnkeyConsensusNeededError"`
diff --git a/sdks/viem/index/TurnkeyActivityError/readme.mdx b/sdks/viem/index/TurnkeyActivityError/readme.mdx
new file mode 100644
index 00000000..f2eb782d
--- /dev/null
+++ b/sdks/viem/index/TurnkeyActivityError/readme.mdx
@@ -0,0 +1,72 @@
+---
+title: "TurnkeyActivityError"
+mode: wide
+---
+
+# Class: TurnkeyActivityError
+
+Defined in: [packages/viem/src/index.ts:56](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L56)
+
+## Extends
+
+- `BaseError`
+
+## Constructors
+
+### Constructor
+
+> **new TurnkeyActivityError**(`__namedParameters`): `TurnkeyActivityError`
+
+Defined in: [packages/viem/src/index.ts:62](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L62)
+
+#### Parameters
+
+##### \_\_namedParameters
+
+###### activityId?
+
+`string`
+
+###### activityStatus?
+
+`"ACTIVITY_STATUS_CREATED"` \| `"ACTIVITY_STATUS_PENDING"` \| `"ACTIVITY_STATUS_COMPLETED"` \| `"ACTIVITY_STATUS_FAILED"` \| `"ACTIVITY_STATUS_CONSENSUS_NEEDED"` \| `"ACTIVITY_STATUS_REJECTED"`
+
+###### message?
+
+`string` = `"Received unexpected Turnkey activity status."`
+
+#### Returns
+
+`TurnkeyActivityError`
+
+#### Overrides
+
+`BaseError.constructor`
+
+## Properties
+
+### activityId
+
+> **activityId**: `undefined` \| `string`
+
+Defined in: [packages/viem/src/index.ts:59](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L59)
+
+***
+
+### activityStatus
+
+> **activityStatus**: `undefined` \| `"ACTIVITY_STATUS_CREATED"` \| `"ACTIVITY_STATUS_PENDING"` \| `"ACTIVITY_STATUS_COMPLETED"` \| `"ACTIVITY_STATUS_FAILED"` \| `"ACTIVITY_STATUS_CONSENSUS_NEEDED"` \| `"ACTIVITY_STATUS_REJECTED"`
+
+Defined in: [packages/viem/src/index.ts:60](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L60)
+
+***
+
+### name
+
+> **name**: `string` = `"TurnkeyActivityError"`
+
+Defined in: [packages/viem/src/index.ts:57](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L57)
+
+#### Overrides
+
+`BaseError.name`
diff --git a/sdks/viem/index/TurnkeyConsensusNeededError/readme.mdx b/sdks/viem/index/TurnkeyConsensusNeededError/readme.mdx
new file mode 100644
index 00000000..283a6961
--- /dev/null
+++ b/sdks/viem/index/TurnkeyConsensusNeededError/readme.mdx
@@ -0,0 +1,72 @@
+---
+title: "TurnkeyConsensusNeededError"
+mode: wide
+---
+
+# Class: TurnkeyConsensusNeededError
+
+Defined in: [packages/viem/src/index.ts:31](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L31)
+
+## Extends
+
+- `BaseError`
+
+## Constructors
+
+### Constructor
+
+> **new TurnkeyConsensusNeededError**(`__namedParameters`): `TurnkeyConsensusNeededError`
+
+Defined in: [packages/viem/src/index.ts:37](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L37)
+
+#### Parameters
+
+##### \_\_namedParameters
+
+###### activityId
+
+`undefined` \| `string`
+
+###### activityStatus
+
+`undefined` \| `"ACTIVITY_STATUS_CREATED"` \| `"ACTIVITY_STATUS_PENDING"` \| `"ACTIVITY_STATUS_COMPLETED"` \| `"ACTIVITY_STATUS_FAILED"` \| `"ACTIVITY_STATUS_CONSENSUS_NEEDED"` \| `"ACTIVITY_STATUS_REJECTED"`
+
+###### message?
+
+`string` = `"Turnkey activity requires consensus."`
+
+#### Returns
+
+`TurnkeyConsensusNeededError`
+
+#### Overrides
+
+`BaseError.constructor`
+
+## Properties
+
+### activityId
+
+> **activityId**: `undefined` \| `string`
+
+Defined in: [packages/viem/src/index.ts:34](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L34)
+
+***
+
+### activityStatus
+
+> **activityStatus**: `undefined` \| `"ACTIVITY_STATUS_CREATED"` \| `"ACTIVITY_STATUS_PENDING"` \| `"ACTIVITY_STATUS_COMPLETED"` \| `"ACTIVITY_STATUS_FAILED"` \| `"ACTIVITY_STATUS_CONSENSUS_NEEDED"` \| `"ACTIVITY_STATUS_REJECTED"`
+
+Defined in: [packages/viem/src/index.ts:35](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L35)
+
+***
+
+### name
+
+> **name**: `string` = `"TurnkeyConsensusNeededError"`
+
+Defined in: [packages/viem/src/index.ts:32](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L32)
+
+#### Overrides
+
+`BaseError.name`
diff --git a/sdks/viem/index/createAccount/readme.mdx b/sdks/viem/index/createAccount/readme.mdx
new file mode 100644
index 00000000..8aae6a53
--- /dev/null
+++ b/sdks/viem/index/createAccount/readme.mdx
@@ -0,0 +1,34 @@
+---
+title: "CreateAccount"
+mode: wide
+---
+
+# Function: createAccount()
+
+> **createAccount**(`input`): `Promise`\<\{\}\>
+
+Defined in: [packages/viem/src/index.ts:142](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L142)
+
+## Parameters
+
+### input
+
+#### client
+
+`TurnkeyClient` \| [`TurnkeyBrowserClient`](../../../sdk-browser/index/TurnkeyBrowserClient/readme) \| [`TurnkeyServerClient`](../../../sdk-server/index/TurnkeyServerClient/readme)
+
+#### ethereumAddress?
+
+`string`
+
+#### organizationId
+
+`string`
+
+#### signWith
+
+`string`
+
+## Returns
+
+`Promise`\<\{\}\>
diff --git a/sdks/viem/index/createAccountWithAddress/readme.mdx b/sdks/viem/index/createAccountWithAddress/readme.mdx
new file mode 100644
index 00000000..bd494b98
--- /dev/null
+++ b/sdks/viem/index/createAccountWithAddress/readme.mdx
@@ -0,0 +1,34 @@
+---
+title: "CreateAccountWithAddress"
+mode: wide
+---
+
+# Function: createAccountWithAddress()
+
+> **createAccountWithAddress**(`input`): `object`
+
+Defined in: [packages/viem/src/index.ts:77](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L77)
+
+## Parameters
+
+### input
+
+#### client
+
+`TurnkeyClient` \| [`TurnkeyBrowserClient`](../../../sdk-browser/index/TurnkeyBrowserClient/readme) \| [`TurnkeyServerClient`](../../../sdk-server/index/TurnkeyServerClient/readme)
+
+#### ethereumAddress?
+
+`string`
+
+#### organizationId
+
+`string`
+
+#### signWith
+
+`string`
+
+## Returns
+
+`object`
diff --git a/sdks/viem/index/createApiKeyAccount/readme.mdx b/sdks/viem/index/createApiKeyAccount/readme.mdx
new file mode 100644
index 00000000..90d8a15f
--- /dev/null
+++ b/sdks/viem/index/createApiKeyAccount/readme.mdx
@@ -0,0 +1,26 @@
+---
+title: "CreateApiKeyAccount"
+mode: wide
+---
+
+# Function: ~~createApiKeyAccount()~~
+
+> **createApiKeyAccount**(`config`): `Promise`\<\{\}\>
+
+Defined in: [packages/viem/src/index.ts:222](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L222)
+
+Creates a new Custom Account backed by a Turnkey API key.
+
+## Parameters
+
+### config
+
+`TApiKeyAccountConfig`
+
+## Returns
+
+`Promise`\<\{\}\>
+
+## Deprecated
+
+use [createAccount](../createAccount/readme) instead.
diff --git a/sdks/viem/index/isTurnkeyActivityConsensusNeededError/readme.mdx b/sdks/viem/index/isTurnkeyActivityConsensusNeededError/readme.mdx
new file mode 100644
index 00000000..8812cf42
--- /dev/null
+++ b/sdks/viem/index/isTurnkeyActivityConsensusNeededError/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "IsTurnkeyActivityConsensusNeededError"
+mode: wide
+---
+
+# Function: isTurnkeyActivityConsensusNeededError()
+
+> **isTurnkeyActivityConsensusNeededError**(`error`): `any`
+
+Defined in: [packages/viem/src/index.ts:515](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L515)
+
+## Parameters
+
+### error
+
+`any`
+
+## Returns
+
+`any`
diff --git a/sdks/viem/index/isTurnkeyActivityError/readme.mdx b/sdks/viem/index/isTurnkeyActivityError/readme.mdx
new file mode 100644
index 00000000..16cbcdf1
--- /dev/null
+++ b/sdks/viem/index/isTurnkeyActivityError/readme.mdx
@@ -0,0 +1,20 @@
+---
+title: "IsTurnkeyActivityError"
+mode: wide
+---
+
+# Function: isTurnkeyActivityError()
+
+> **isTurnkeyActivityError**(`error`): `any`
+
+Defined in: [packages/viem/src/index.ts:524](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L524)
+
+## Parameters
+
+### error
+
+`any`
+
+## Returns
+
+`any`
diff --git a/sdks/viem/index/readme.mdx b/sdks/viem/index/readme.mdx
new file mode 100644
index 00000000..639a8587
--- /dev/null
+++ b/sdks/viem/index/readme.mdx
@@ -0,0 +1,28 @@
+---
+title: "Index"
+mode: wide
+---
+
+# index
+
+## Classes
+
+- [TurnkeyActivityError](TurnkeyActivityError/readme)
+- [TurnkeyConsensusNeededError](TurnkeyConsensusNeededError/readme)
+
+## Type Aliases
+
+- [TTurnkeyActivityErrorType](TTurnkeyActivityErrorType/readme)
+- [TTurnkeyConsensusNeededErrorType](TTurnkeyConsensusNeededErrorType/readme)
+
+## Functions
+
+- [createAccount](createAccount/readme)
+- [createAccountWithAddress](createAccountWithAddress/readme)
+- [~~createApiKeyAccount~~](createApiKeyAccount/readme)
+- [isTurnkeyActivityConsensusNeededError](isTurnkeyActivityConsensusNeededError/readme)
+- [isTurnkeyActivityError](isTurnkeyActivityError/readme)
+- [serializeSignature](serializeSignature/readme)
+- [signMessage](signMessage/readme)
+- [signTransaction](signTransaction/readme)
+- [signTypedData](signTypedData/readme)
diff --git a/sdks/viem/index/serializeSignature/readme.mdx b/sdks/viem/index/serializeSignature/readme.mdx
new file mode 100644
index 00000000..75003659
--- /dev/null
+++ b/sdks/viem/index/serializeSignature/readme.mdx
@@ -0,0 +1,18 @@
+---
+title: "SerializeSignature"
+mode: wide
+---
+
+# Function: serializeSignature()
+
+> **serializeSignature**(`sig`): `` `0x${string}` ``
+
+Defined in: [packages/viem/src/index.ts:506](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L506)
+
+## Parameters
+
+### sig
+
+## Returns
+
+`` `0x${string}` ``
diff --git a/sdks/viem/index/signMessage/readme.mdx b/sdks/viem/index/signMessage/readme.mdx
new file mode 100644
index 00000000..9b212609
--- /dev/null
+++ b/sdks/viem/index/signMessage/readme.mdx
@@ -0,0 +1,32 @@
+---
+title: "SignMessage"
+mode: wide
+---
+
+# Function: signMessage()
+
+> **signMessage**(`client`, `message`, `organizationId`, `signWith`): `Promise`\<`` `0x${string}` ``\>
+
+Defined in: [packages/viem/src/index.ts:293](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L293)
+
+## Parameters
+
+### client
+
+`TurnkeyClient` | [`TurnkeyBrowserClient`](../../../sdk-browser/index/TurnkeyBrowserClient/readme) | [`TurnkeyServerClient`](../../../sdk-server/index/TurnkeyServerClient/readme)
+
+### message
+
+`SignableMessage`
+
+### organizationId
+
+`string`
+
+### signWith
+
+`string`
+
+## Returns
+
+`Promise`\<`` `0x${string}` ``\>
diff --git a/sdks/viem/index/signTransaction/readme.mdx b/sdks/viem/index/signTransaction/readme.mdx
new file mode 100644
index 00000000..f20b531b
--- /dev/null
+++ b/sdks/viem/index/signTransaction/readme.mdx
@@ -0,0 +1,42 @@
+---
+title: "SignTransaction"
+mode: wide
+---
+
+# Function: signTransaction()
+
+> **signTransaction**\<`TTransactionSerializable`\>(`client`, `transaction`, `serializer`, `organizationId`, `signWith`): `Promise`\<`` `0x${string}` ``\>
+
+Defined in: [packages/viem/src/index.ts:309](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L309)
+
+## Type Parameters
+
+### TTransactionSerializable
+
+`TTransactionSerializable` *extends* `TransactionSerializable`
+
+## Parameters
+
+### client
+
+`TurnkeyClient` | [`TurnkeyBrowserClient`](../../../sdk-browser/index/TurnkeyBrowserClient/readme) | [`TurnkeyServerClient`](../../../sdk-server/index/TurnkeyServerClient/readme)
+
+### transaction
+
+`TTransactionSerializable`
+
+### serializer
+
+`SerializeTransactionFn`\<`TTransactionSerializable`\>
+
+### organizationId
+
+`string`
+
+### signWith
+
+`string`
+
+## Returns
+
+`Promise`\<`` `0x${string}` ``\>
diff --git a/sdks/viem/index/signTypedData/readme.mdx b/sdks/viem/index/signTypedData/readme.mdx
new file mode 100644
index 00000000..8d854579
--- /dev/null
+++ b/sdks/viem/index/signTypedData/readme.mdx
@@ -0,0 +1,32 @@
+---
+title: "SignTypedData"
+mode: wide
+---
+
+# Function: signTypedData()
+
+> **signTypedData**(`client`, `data`, `organizationId`, `signWith`): `Promise`\<`` `0x${string}` ``\>
+
+Defined in: [packages/viem/src/index.ts:328](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/viem/src/index.ts#L328)
+
+## Parameters
+
+### client
+
+`TurnkeyClient` | [`TurnkeyBrowserClient`](../../../sdk-browser/index/TurnkeyBrowserClient/readme) | [`TurnkeyServerClient`](../../../sdk-server/index/TurnkeyServerClient/readme)
+
+### data
+
+\{ `[key: `uint256[${string}]`]`: `undefined`; `[key: `uint248[${string}]`]`: `undefined`; `[key: `uint240[${string}]`]`: `undefined`; `[key: `uint232[${string}]`]`: `undefined`; `[key: `uint224[${string}]`]`: `undefined`; `[key: `uint216[${string}]`]`: `undefined`; `[key: `uint208[${string}]`]`: `undefined`; `[key: `uint200[${string}]`]`: `undefined`; `[key: `uint192[${string}]`]`: `undefined`; `[key: `uint184[${string}]`]`: `undefined`; `[key: `uint176[${string}]`]`: `undefined`; `[key: `uint168[${string}]`]`: `undefined`; `[key: `uint160[${string}]`]`: `undefined`; `[key: `uint152[${string}]`]`: `undefined`; `[key: `uint144[${string}]`]`: `undefined`; `[key: `uint136[${string}]`]`: `undefined`; `[key: `uint128[${string}]`]`: `undefined`; `[key: `uint120[${string}]`]`: `undefined`; `[key: `uint112[${string}]`]`: `undefined`; `[key: `uint104[${string}]`]`: `undefined`; `[key: `uint96[${string}]`]`: `undefined`; `[key: `uint88[${string}]`]`: `undefined`; `[key: `uint80[${string}]`]`: `undefined`; `[key: `uint72[${string}]`]`: `undefined`; `[key: `uint64[${string}]`]`: `undefined`; `[key: `uint56[${string}]`]`: `undefined`; `[key: `uint48[${string}]`]`: `undefined`; `[key: `uint40[${string}]`]`: `undefined`; `[key: `uint32[${string}]`]`: `undefined`; `[key: `uint24[${string}]`]`: `undefined`; `[key: `uint16[${string}]`]`: `undefined`; `[key: `uint8[${string}]`]`: `undefined`; `[key: `uint[${string}]`]`: `undefined`; `[key: `int256[${string}]`]`: `undefined`; `[key: `int248[${string}]`]`: `undefined`; `[key: `int240[${string}]`]`: `undefined`; `[key: `int232[${string}]`]`: `undefined`; `[key: `int224[${string}]`]`: `undefined`; `[key: `int216[${string}]`]`: `undefined`; `[key: `int208[${string}]`]`: `undefined`; `[key: `int200[${string}]`]`: `undefined`; `[key: `int192[${string}]`]`: `undefined`; `[key: `int184[${string}]`]`: `undefined`; `[key: `int176[${string}]`]`: `undefined`; `[key: `int168[${string}]`]`: `undefined`; `[key: `int160[${string}]`]`: `undefined`; `[key: `int152[${string}]`]`: `undefined`; `[key: `int144[${string}]`]`: `undefined`; `[key: `int136[${string}]`]`: `undefined`; `[key: `int128[${string}]`]`: `undefined`; `[key: `int120[${string}]`]`: `undefined`; `[key: `int112[${string}]`]`: `undefined`; `[key: `int104[${string}]`]`: `undefined`; `[key: `int96[${string}]`]`: `undefined`; `[key: `int88[${string}]`]`: `undefined`; `[key: `int80[${string}]`]`: `undefined`; `[key: `int72[${string}]`]`: `undefined`; `[key: `int64[${string}]`]`: `undefined`; `[key: `int56[${string}]`]`: `undefined`; `[key: `int48[${string}]`]`: `undefined`; `[key: `int40[${string}]`]`: `undefined`; `[key: `int32[${string}]`]`: `undefined`; `[key: `int24[${string}]`]`: `undefined`; `[key: `int16[${string}]`]`: `undefined`; `[key: `int8[${string}]`]`: `undefined`; `[key: `int[${string}]`]`: `undefined`; `[key: `bytes32[${string}]`]`: `undefined`; `[key: `bytes31[${string}]`]`: `undefined`; `[key: `bytes30[${string}]`]`: `undefined`; `[key: `bytes29[${string}]`]`: `undefined`; `[key: `bytes28[${string}]`]`: `undefined`; `[key: `bytes27[${string}]`]`: `undefined`; `[key: `bytes26[${string}]`]`: `undefined`; `[key: `bytes25[${string}]`]`: `undefined`; `[key: `bytes24[${string}]`]`: `undefined`; `[key: `bytes23[${string}]`]`: `undefined`; `[key: `bytes22[${string}]`]`: `undefined`; `[key: `bytes21[${string}]`]`: `undefined`; `[key: `bytes20[${string}]`]`: `undefined`; `[key: `bytes19[${string}]`]`: `undefined`; `[key: `bytes18[${string}]`]`: `undefined`; `[key: `bytes17[${string}]`]`: `undefined`; `[key: `bytes16[${string}]`]`: `undefined`; `[key: `bytes15[${string}]`]`: `undefined`; `[key: `bytes14[${string}]`]`: `undefined`; `[key: `bytes13[${string}]`]`: `undefined`; `[key: `bytes12[${string}]`]`: `undefined`; `[key: `bytes11[${string}]`]`: `undefined`; `[key: `bytes10[${string}]`]`: `undefined`; `[key: `bytes9[${string}]`]`: `undefined`; `[key: `bytes8[${string}]`]`: `undefined`; `[key: `bytes7[${string}]`]`: `undefined`; `[key: `bytes6[${string}]`]`: `undefined`; `[key: `bytes5[${string}]`]`: `undefined`; `[key: `bytes4[${string}]`]`: `undefined`; `[key: `bytes3[${string}]`]`: `undefined`; `[key: `bytes2[${string}]`]`: `undefined`; `[key: `bytes1[${string}]`]`: `undefined`; `[key: `bool[${string}]`]`: `undefined`; `[key: `bytes[${string}]`]`: `undefined`; `[key: `address[${string}]`]`: `undefined`; `[key: `function[${string}]`]`: `undefined`; `[key: `string[${string}]`]`: `undefined`; `[key: string]`: readonly `TypedDataParameter`[]; `address`: `undefined`; `bool`: `undefined`; `bytes`: `undefined`; `bytes1`: `undefined`; `bytes10`: `undefined`; `bytes11`: `undefined`; `bytes12`: `undefined`; `bytes13`: `undefined`; `bytes14`: `undefined`; `bytes15`: `undefined`; `bytes16`: `undefined`; `bytes17`: `undefined`; `bytes18`: `undefined`; `bytes19`: `undefined`; `bytes2`: `undefined`; `bytes20`: `undefined`; `bytes21`: `undefined`; `bytes22`: `undefined`; `bytes23`: `undefined`; `bytes24`: `undefined`; `bytes25`: `undefined`; `bytes26`: `undefined`; `bytes27`: `undefined`; `bytes28`: `undefined`; `bytes29`: `undefined`; `bytes3`: `undefined`; `bytes30`: `undefined`; `bytes31`: `undefined`; `bytes32`: `undefined`; `bytes4`: `undefined`; `bytes5`: `undefined`; `bytes6`: `undefined`; `bytes7`: `undefined`; `bytes8`: `undefined`; `bytes9`: `undefined`; `int104`: `undefined`; `int112`: `undefined`; `int120`: `undefined`; `int128`: `undefined`; `int136`: `undefined`; `int144`: `undefined`; `int152`: `undefined`; `int16`: `undefined`; `int160`: `undefined`; `int168`: `undefined`; `int176`: `undefined`; `int184`: `undefined`; `int192`: `undefined`; `int200`: `undefined`; `int208`: `undefined`; `int216`: `undefined`; `int224`: `undefined`; `int232`: `undefined`; `int24`: `undefined`; `int240`: `undefined`; `int248`: `undefined`; `int256`: `undefined`; `int32`: `undefined`; `int40`: `undefined`; `int48`: `undefined`; `int56`: `undefined`; `int64`: `undefined`; `int72`: `undefined`; `int8`: `undefined`; `int80`: `undefined`; `int88`: `undefined`; `int96`: `undefined`; `string`: `undefined`; `uint104`: `undefined`; `uint112`: `undefined`; `uint120`: `undefined`; `uint128`: `undefined`; `uint136`: `undefined`; `uint144`: `undefined`; `uint152`: `undefined`; `uint16`: `undefined`; `uint160`: `undefined`; `uint168`: `undefined`; `uint176`: `undefined`; `uint184`: `undefined`; `uint192`: `undefined`; `uint200`: `undefined`; `uint208`: `undefined`; `uint216`: `undefined`; `uint224`: `undefined`; `uint232`: `undefined`; `uint24`: `undefined`; `uint240`: `undefined`; `uint248`: `undefined`; `uint256`: `undefined`; `uint32`: `undefined`; `uint40`: `undefined`; `uint48`: `undefined`; `uint56`: `undefined`; `uint64`: `undefined`; `uint72`: `undefined`; `uint8`: `undefined`; `uint80`: `undefined`; `uint88`: `undefined`; `uint96`: `undefined`; \} | \{\}
+
+### organizationId
+
+`string`
+
+### signWith
+
+`string`
+
+## Returns
+
+`Promise`\<`` `0x${string}` ``\>
diff --git a/sdks/viem/readme.mdx b/sdks/viem/readme.mdx
new file mode 100644
index 00000000..6e693e97
--- /dev/null
+++ b/sdks/viem/readme.mdx
@@ -0,0 +1,124 @@
+---
+title: "Viem"
+mode: wide
+---
+
+# @turnkey/viem
+
+[](https://www.npmjs.com/package/@turnkey/viem)
+
+This package contains helpers to use [Viem](https://viem.sh/) with [Turnkey](https://turnkey.com).
+
+We provide a Turnkey [Custom Account](https://viem.sh/docs/accounts/custom.html#custom-account) (signer) which implements the signing APIs expected by Viem clients.
+
+If you need a lower-level, fully typed HTTP client for interacting with Turnkey API, check out [`@turnkey/http`](https://www.npmjs.com/package/@turnkey/http).
+
+## Getting started
+
+```bash
+$ npm install viem @turnkey/viem
+```
+
+```typescript
+import { createAccount } from "@turnkey/viem";
+import { TurnkeyClient } from "@turnkey/http";
+import { ApiKeyStamper } from "@turnkey/api-key-stamper";
+import { createWalletClient, http } from "viem";
+import { sepolia } from "viem/chains";
+
+async function main() {
+ // Create a Turnkey HTTP client with API key credentials
+ const httpClient = new TurnkeyClient(
+ {
+ baseUrl: "https://api.turnkey.com",
+ },
+ // This uses API key credentials.
+ // If you're using passkeys, use `@turnkey/webauthn-stamper` to collect webauthn signatures:
+ // new WebauthnStamper({...options...})
+ new ApiKeyStamper({
+ apiPublicKey: "...",
+ apiPrivateKey: "...",
+ }),
+ );
+
+ // Create the Viem custom account
+ const turnkeyAccount = await createAccount({
+ client: httpClient,
+ organizationId: "...",
+ signWith: "...",
+ // optional; will be fetched from Turnkey if not provided
+ ethereumAddress: "...",
+ });
+
+ // Below: standard Viem APIs are used, nothing special!
+
+ const client = createWalletClient({
+ account: turnkeyAccount,
+ chain: sepolia,
+ transport: http(`https://sepolia.infura.io/v3/$(YOUR_INFURA_API_KEY)`),
+ });
+
+ const transactionRequest = {
+ to: "0x08d2b0a37F869FF76BACB5Bab3278E26ab7067B7" as `0x${string}`,
+ value: 1000000000000000n, // 0.001 ETH
+ };
+
+ const txHash = await client.sendTransaction(transactionRequest);
+ console.log(`Success! Transaction broadcast with hash ${txHash}`);
+}
+
+main().catch((error) => {
+ console.error(error);
+ process.exit(1);
+});
+```
+
+## Testing (Local)
+
+1. Copy `.env.example` to `.env`
+
+ ```bash
+ $ cp .env.example .env
+ ```
+
+2. Start the Anvil node in one shell:
+
+ - Install [Foundry](https://book.getfoundry.sh/getting-started/installation) & Anvil if you haven't done so already
+ - Add Foundry to your `$PATH`
+ ```bash
+ $ export PATH="$PATH:$HOME/.foundry/bin"
+ ```
+ - Source your env e.g.
+ ```bash
+ $ source ~/.zshrc
+ ```
+ - Run `foundryup` to install `Anvil`
+ ```bash
+ $ foundryup
+ ```
+ - Start Anvil
+ ```
+ $ pnpm anvil
+ ```
+
+3. Run the tests in a new shell:
+
+ ```
+ $ pnpm test
+ ```
+
+## See also
+
+- [`@turnkey/example-with-viem`](https://github.com/tkhq/sdk/tree/main/examples/with-viem): example using this package to create, sign, and broadcast a transaction on Sepolia (Ethereum testnet)
+- [`@turnkey/http`](https://www.npmjs.com/package/@turnkey/http): lower-level fully typed HTTP client for interacting with Turnkey API
+- [`@turnkey/api-key-stamper`](https://www.npmjs.com/package/@turnkey/api-key-stamper): package to authenticate to Turnkey using API key credentials
+- [`@turnkey/webauthn-stamper`](https://www.npmjs.com/package/@turnkey/webauthn-stamper): package to authenticate to Turnkey using Webauthn/passkeys.
+
+## Documents
+
+- [documents/docs](documents/docs/readme)
+
+
+## Modules
+
+- [index](index/readme)
diff --git a/sdks/wallet-stamper/WalletStamper/readme.mdx b/sdks/wallet-stamper/WalletStamper/readme.mdx
new file mode 100644
index 00000000..fc573f77
--- /dev/null
+++ b/sdks/wallet-stamper/WalletStamper/readme.mdx
@@ -0,0 +1,184 @@
+---
+title: "WalletStamper"
+mode: wide
+---
+
+## Introduction
+
+The [`@turnkey/wallet-stamper`](https://www.npmjs.com/package/@turnkey/wallet-stamper) package provides a flexible mechanism for using your Solana or EVM wallet to stamp and approve activity requests for Turnkey's API. This stamping process leverages your wallet's signature key to authenticate requests securely.
+
+## Installing
+
+To get started, install the [`@turnkey/wallet-stamper`](https://www.npmjs.com/package/@turnkey/wallet-stamper) client.
+
+
+
+```bash npm
+npm i @turnkey/wallet-stamper
+```
+
+```bash pnpm
+pnpm i @turnkey/wallet-stamper
+```
+
+```bash yarn
+yarn add @turnkey/wallet-stamper
+```
+
+
+## Initializing
+
+The `WalletStamper` class implements the `TStamper` interface used by the [TurnkeyClient](/sdks/advanced/turnkey-client) in the [`@turnkey/http`](https://www.npmjs.com/package/@turnkey/http) package. It encapsulates the logic necessary to sign activity requests using your wallet and generate the appropriate HTTP headers for authentication.
+
+### `constructor(wallet: WalletInterface): TStamper`
+
+#### Parameters
+
+
+
+An object representing your wallet, either a Solana or EVM wallet.
+
+
+
+
+The type of wallet, either `solana` or `evm`.
+
+
+
+
+A function that signs a message using your wallet's private key.
+
+
+
+
+A function that recovers the public key from the signed message (required for EVM wallets).
+
+
+#### Types
+
+##### `SolanaWalletInterface`
+
+```js
+export interface SolanaWalletInterface extends BaseWalletInterface {
+ recoverPublicKey: () => string;
+ type: "solana";
+}
+```
+
+##### `EvmWalletInterface`
+
+```js
+export interface EvmWalletInterface extends BaseWalletInterface {
+ recoverPublicKey: (message: string, signature: string) => Promise;
+ type: "evm";
+}
+```
+
+##### `WalletInterface`
+
+```js
+export type WalletInterface = SolanaWalletInterface | EvmWalletInterface;
+```
+
+## Methods
+
+### `stamp: (input: string) => Promise`
+
+Signs the payload using the wallet's private key and returns the stamp to be used in the HTTP headers for authenticating requests to Turnkey's API.
+
+#### Parameters
+
+
+
+The payload that to be stamped. This is the stringified JSON request body that you want to send to Turnkey's API.
+
+
+#### Types
+
+##### `TStamp`
+
+```js
+type TStamp = {
+ stampHeaderName: string;
+ stampHeaderValue: string;
+};
+```
+
+##### `TStamper`
+
+```js
+interface TStamper {
+ stamp: (input: string) => Promise;
+}
+```
+
+## Example
+
+The example below shows how to initialize and use the `WalletStamper` with the `TurnkeyClient` to make a request to Turnkey's [`/public/v1/query/whoami`](/api-reference/sessions/who-am-i) endpoint:
+
+```js
+// Import the dependencies for the Solana
+import { Keypair } from "@solana/web3.js";
+import { decodeUTF8 } from "tweetnacl-util";
+import nacl from "tweetnacl";
+
+import { TurnkeyClient } from "@turnkey/http";
+import { WalletStamper, SolanaWalletInterface } from "@turnkey/wallet-stamper";
+
+class SolanaWallet implements SolanaWalletInterface {
+ keypair = Keypair.fromSecretKey(SOLANA_PRIVATE_KEY);
+ type = "solana" as const;
+
+ async signMessage(message: string): Promise {
+ const messageBytes = decodeUTF8(message);
+ const signature = nacl.sign.detached(messageBytes, this.keypair.secretKey);
+ return Buffer.from(signature).toString("hex");
+ }
+
+ recoverPublicKey(): string {
+ // Convert the base24 encoded Solana wallet public key (the one displayed in the wallet)
+ // into the ed25519 decoded public key
+ const ed25519PublicKey = Buffer.from(
+ this.keypair.publicKey.toBuffer(),
+ ).toString("hex");
+ return ed25519PublicKey;
+ }
+}
+
+// Instantiate the WalletStamper with the SolanaWallet
+const walletStamper = new WalletStamper(new SolanaWallet());
+
+// Instantiate the TurnkeyClient with the WalletStamper
+const client = new TurnkeyClient({ baseUrl: BASE_URL }, walletStamper);
+
+// You're now ready to make requests to Turnkey's API 🎉
+```
+
+## Conclusion
+
+The `WalletStamper` class provides a seamless integration with Turnkey's API, enabling you to leverage your existing wallet for secure, authenticated requests. By following this guide, you can quickly set up and start using `WalletStamper` in your projects.
diff --git a/sdks/wallet-stamper/index/BaseEthereumWallet/readme.mdx b/sdks/wallet-stamper/index/BaseEthereumWallet/readme.mdx
new file mode 100644
index 00000000..1ffb9df5
--- /dev/null
+++ b/sdks/wallet-stamper/index/BaseEthereumWallet/readme.mdx
@@ -0,0 +1,96 @@
+---
+title: "BaseEthereumWallet"
+mode: wide
+---
+
+# Class: `abstract` BaseEthereumWallet
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:23](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L23)
+
+Abstract class representing a base Ethereum wallet.
+This class is used for stamping requests with an Ethereum wallet.
+
+To use this class, extend it and implement the `signMessage` method
+to provide a custom signing function. The `signMessage` method should
+return a promise that resolves to a hexadecimal string representing
+the signature of the provided message.
+
+## Extended by
+
+- [`EthereumWallet`](../EthereumWallet/readme)
+
+## Implements
+
+- [`EthereumWalletInterface`](../EthereumWalletInterface/readme)
+
+## Constructors
+
+### Constructor
+
+> **new BaseEthereumWallet**(): `BaseEthereumWallet`
+
+#### Returns
+
+`BaseEthereumWallet`
+
+## Properties
+
+### type
+
+> **type**: [`Ethereum`](../WalletType/readme#ethereum) = `WalletType.Ethereum`
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:24](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L24)
+
+The type of the wallet.
+
+#### Implementation of
+
+[`EthereumWalletInterface`](../EthereumWalletInterface/readme).[`type`](../EthereumWalletInterface/readme#type)
+
+## Methods
+
+### getPublicKey()
+
+> **getPublicKey**(): `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:40](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L40)
+
+Returns the public key, which is the SECP256K1 hex encoded public key from your Ethereum wallet.
+
+#### Returns
+
+`Promise`\<`string`\>
+
+A promise that resolves to a string representing the compressed public key.
+
+#### Implementation of
+
+[`EthereumWalletInterface`](../EthereumWalletInterface/readme).[`getPublicKey`](../EthereumWalletInterface/readme#getpublickey)
+
+***
+
+### signMessage()
+
+> `abstract` **signMessage**(`message`): `Promise`\<`` `0x${string}` ``\>
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:33](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L33)
+
+Signs a message and returns the hex signature as a string.
+
+#### Parameters
+
+##### message
+
+`string`
+
+The message to be signed, either as a string or a Hex.
+
+#### Returns
+
+`Promise`\<`` `0x${string}` ``\>
+
+A promise that resolves to a Hex string representing the signature.
+
+#### Implementation of
+
+[`EthereumWalletInterface`](../EthereumWalletInterface/readme).[`signMessage`](../EthereumWalletInterface/readme#signmessage)
diff --git a/sdks/wallet-stamper/index/BaseWalletInterface/readme.mdx b/sdks/wallet-stamper/index/BaseWalletInterface/readme.mdx
new file mode 100644
index 00000000..6579ae33
--- /dev/null
+++ b/sdks/wallet-stamper/index/BaseWalletInterface/readme.mdx
@@ -0,0 +1,58 @@
+---
+title: "BaseWalletInterface"
+mode: wide
+---
+
+# Interface: BaseWalletInterface
+
+Defined in: [packages/wallet-stamper/src/types.ts:25](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L25)
+
+Base interface for wallet functionalities common across different blockchain chains.
+ BaseWalletInterface
+
+## Extended by
+
+- [`SolanaWalletInterface`](../SolanaWalletInterface/readme)
+- [`EthereumWalletInterface`](../EthereumWalletInterface/readme)
+
+## Properties
+
+### getPublicKey()
+
+> **getPublicKey**: () => `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/types.ts:28](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L28)
+
+Retrieves the public key as a string.
+
+#### Returns
+
+`Promise`\<`string`\>
+
+***
+
+### signMessage()
+
+> **signMessage**: (`message`) => `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/types.ts:27](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L27)
+
+Signs a message and returns the hex signature as a string.
+
+#### Parameters
+
+##### message
+
+`string`
+
+#### Returns
+
+`Promise`\<`string`\>
+
+***
+
+### type
+
+> **type**: [`WalletType`](../WalletType/readme)
+
+Defined in: [packages/wallet-stamper/src/types.ts:26](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L26)
diff --git a/sdks/wallet-stamper/index/EthereumWallet/readme.mdx b/sdks/wallet-stamper/index/EthereumWallet/readme.mdx
new file mode 100644
index 00000000..0602b501
--- /dev/null
+++ b/sdks/wallet-stamper/index/EthereumWallet/readme.mdx
@@ -0,0 +1,99 @@
+---
+title: "EthereumWallet"
+mode: wide
+---
+
+# Class: EthereumWallet
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:56](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L56)
+
+EthereumWallet class extends the BaseEthereumWallet to provide
+specific implementations for Ethereum-based wallets.
+
+This class is responsible for signing messages using the Ethereum
+provider available in the browser (e.g., MetaMask). It interacts
+with the Ethereum provider to request account access and sign
+messages.
+
+## Extends
+
+- [`BaseEthereumWallet`](../BaseEthereumWallet/readme)
+
+## Constructors
+
+### Constructor
+
+> **new EthereumWallet**(): `EthereumWallet`
+
+#### Returns
+
+`EthereumWallet`
+
+#### Inherited from
+
+[`BaseEthereumWallet`](../BaseEthereumWallet/readme).[`constructor`](../BaseEthereumWallet/readme#constructor)
+
+## Properties
+
+### type
+
+> **type**: [`Ethereum`](../WalletType/readme#ethereum) = `WalletType.Ethereum`
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:24](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L24)
+
+The type of the wallet.
+
+#### Inherited from
+
+[`BaseEthereumWallet`](../BaseEthereumWallet/readme).[`type`](../BaseEthereumWallet/readme#type)
+
+## Methods
+
+### getPublicKey()
+
+> **getPublicKey**(): `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:40](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L40)
+
+Returns the public key, which is the SECP256K1 hex encoded public key from your Ethereum wallet.
+
+#### Returns
+
+`Promise`\<`string`\>
+
+A promise that resolves to a string representing the compressed public key.
+
+#### Inherited from
+
+[`BaseEthereumWallet`](../BaseEthereumWallet/readme).[`getPublicKey`](../BaseEthereumWallet/readme#getpublickey)
+
+***
+
+### signMessage()
+
+> **signMessage**(`message`): `Promise`\<`` `0x${string}` ``\>
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:66](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L66)
+
+Signs a message and returns the hex signature as a string.
+
+#### Parameters
+
+##### message
+
+`string`
+
+The message to be signed, either as a string or a Hex.
+
+#### Returns
+
+`Promise`\<`` `0x${string}` ``\>
+
+A promise that resolves to a Hex string representing the signature.
+
+This method uses the 'personal_sign' method of the Ethereum provider
+to sign the message with the user's account.
+
+#### Overrides
+
+[`BaseEthereumWallet`](../BaseEthereumWallet/readme).[`signMessage`](../BaseEthereumWallet/readme#signmessage)
diff --git a/sdks/wallet-stamper/index/EthereumWalletInterface/readme.mdx b/sdks/wallet-stamper/index/EthereumWalletInterface/readme.mdx
new file mode 100644
index 00000000..788f47dd
--- /dev/null
+++ b/sdks/wallet-stamper/index/EthereumWalletInterface/readme.mdx
@@ -0,0 +1,77 @@
+---
+title: "EthereumWalletInterface"
+mode: wide
+---
+
+# Interface: EthereumWalletInterface
+
+Defined in: [packages/wallet-stamper/src/types.ts:53](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L53)
+
+Ethereum wallets require a signed message to derive the public key.
+
+## Remarks
+
+This is the SECP256K1 public key of the Ethereum wallet, not the address.
+This requires that the wallet signs a message in order to derive the public key.
+
+ EthereumWalletInterface
+
+## Extends
+
+- [`BaseWalletInterface`](../BaseWalletInterface/readme)
+
+## Properties
+
+### getPublicKey()
+
+> **getPublicKey**: () => `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/types.ts:28](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L28)
+
+Returns the public key, which is the SECP256K1 hex encoded public key from your Ethereum wallet.
+
+#### Returns
+
+`Promise`\<`string`\>
+
+#### Inherited from
+
+[`BaseWalletInterface`](../BaseWalletInterface/readme).[`getPublicKey`](../BaseWalletInterface/readme#getpublickey)
+
+***
+
+### signMessage()
+
+> **signMessage**: (`message`) => `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/types.ts:27](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L27)
+
+Signs a message and returns the hex signature as a string.
+
+#### Parameters
+
+##### message
+
+`string`
+
+#### Returns
+
+`Promise`\<`string`\>
+
+#### Inherited from
+
+[`BaseWalletInterface`](../BaseWalletInterface/readme).[`signMessage`](../BaseWalletInterface/readme#signmessage)
+
+***
+
+### type
+
+> **type**: [`Ethereum`](../WalletType/readme#ethereum)
+
+Defined in: [packages/wallet-stamper/src/types.ts:54](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L54)
+
+The type of the wallet.
+
+#### Overrides
+
+[`BaseWalletInterface`](../BaseWalletInterface/readme).[`type`](../BaseWalletInterface/readme#type)
diff --git a/sdks/wallet-stamper/index/SIGNATURE_SCHEME_TK_API_ED25519/readme.mdx b/sdks/wallet-stamper/index/SIGNATURE_SCHEME_TK_API_ED25519/readme.mdx
new file mode 100644
index 00000000..28cf022f
--- /dev/null
+++ b/sdks/wallet-stamper/index/SIGNATURE_SCHEME_TK_API_ED25519/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "SIGNATURE_SCHEME_TK_API_ED25519"
+mode: wide
+---
+
+# Variable: SIGNATURE\_SCHEME\_TK\_API\_ED25519
+
+> `const` **SIGNATURE\_SCHEME\_TK\_API\_ED25519**: `"SIGNATURE_SCHEME_TK_API_ED25519"` = `"SIGNATURE_SCHEME_TK_API_ED25519"`
+
+Defined in: [packages/wallet-stamper/src/constants.ts:3](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/constants.ts#L3)
diff --git a/sdks/wallet-stamper/index/SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191/readme.mdx b/sdks/wallet-stamper/index/SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191/readme.mdx
new file mode 100644
index 00000000..8d9ff08f
--- /dev/null
+++ b/sdks/wallet-stamper/index/SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191"
+mode: wide
+---
+
+# Variable: SIGNATURE\_SCHEME\_TK\_API\_SECP256K1\_EIP191
+
+> `const` **SIGNATURE\_SCHEME\_TK\_API\_SECP256K1\_EIP191**: `"SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191"` = `"SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191"`
+
+Defined in: [packages/wallet-stamper/src/constants.ts:1](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/constants.ts#L1)
diff --git a/sdks/wallet-stamper/index/STAMP_HEADER_NAME/readme.mdx b/sdks/wallet-stamper/index/STAMP_HEADER_NAME/readme.mdx
new file mode 100644
index 00000000..9242d00f
--- /dev/null
+++ b/sdks/wallet-stamper/index/STAMP_HEADER_NAME/readme.mdx
@@ -0,0 +1,10 @@
+---
+title: "STAMP_HEADER_NAME"
+mode: wide
+---
+
+# Variable: STAMP\_HEADER\_NAME
+
+> `const` **STAMP\_HEADER\_NAME**: `"X-Stamp"` = `"X-Stamp"`
+
+Defined in: [packages/wallet-stamper/src/constants.ts:5](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/constants.ts#L5)
diff --git a/sdks/wallet-stamper/index/SolanaWalletInterface/readme.mdx b/sdks/wallet-stamper/index/SolanaWalletInterface/readme.mdx
new file mode 100644
index 00000000..4e7d4229
--- /dev/null
+++ b/sdks/wallet-stamper/index/SolanaWalletInterface/readme.mdx
@@ -0,0 +1,71 @@
+---
+title: "SolanaWalletInterface"
+mode: wide
+---
+
+# Interface: SolanaWalletInterface
+
+Defined in: [packages/wallet-stamper/src/types.ts:38](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L38)
+
+Solana wallets can directly access the public key without needing a signed message.
+ SolanaWalletInterface
+
+## Extends
+
+- [`BaseWalletInterface`](../BaseWalletInterface/readme)
+
+## Properties
+
+### getPublicKey()
+
+> **getPublicKey**: () => `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/types.ts:28](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L28)
+
+Returns the public key, which is the ED25519 hex encoded public key from your Solana wallet public key.
+
+#### Returns
+
+`Promise`\<`string`\>
+
+#### Inherited from
+
+[`BaseWalletInterface`](../BaseWalletInterface/readme).[`getPublicKey`](../BaseWalletInterface/readme#getpublickey)
+
+***
+
+### signMessage()
+
+> **signMessage**: (`message`) => `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/types.ts:27](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L27)
+
+Signs a message and returns the hex signature as a string.
+
+#### Parameters
+
+##### message
+
+`string`
+
+#### Returns
+
+`Promise`\<`string`\>
+
+#### Inherited from
+
+[`BaseWalletInterface`](../BaseWalletInterface/readme).[`signMessage`](../BaseWalletInterface/readme#signmessage)
+
+***
+
+### type
+
+> **type**: [`Solana`](../WalletType/readme#solana)
+
+Defined in: [packages/wallet-stamper/src/types.ts:39](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L39)
+
+The type of the wallet.
+
+#### Overrides
+
+[`BaseWalletInterface`](../BaseWalletInterface/readme).[`type`](../BaseWalletInterface/readme#type)
diff --git a/sdks/wallet-stamper/index/TStamp/readme.mdx b/sdks/wallet-stamper/index/TStamp/readme.mdx
new file mode 100644
index 00000000..5b228f2a
--- /dev/null
+++ b/sdks/wallet-stamper/index/TStamp/readme.mdx
@@ -0,0 +1,30 @@
+---
+title: "TStamp"
+mode: wide
+---
+
+# Type Alias: TStamp
+
+> **TStamp** = `object`
+
+Defined in: [packages/wallet-stamper/src/types.ts:6](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L6)
+
+## Properties
+
+### stampHeaderName
+
+> **stampHeaderName**: `"X-Stamp"`
+
+Defined in: [packages/wallet-stamper/src/types.ts:7](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L7)
+
+The name of the stamp header.
+
+***
+
+### stampHeaderValue
+
+> **stampHeaderValue**: `string`
+
+Defined in: [packages/wallet-stamper/src/types.ts:8](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L8)
+
+The value of the stamp header.
diff --git a/sdks/wallet-stamper/index/TStamper/readme.mdx b/sdks/wallet-stamper/index/TStamper/readme.mdx
new file mode 100644
index 00000000..337306e6
--- /dev/null
+++ b/sdks/wallet-stamper/index/TStamper/readme.mdx
@@ -0,0 +1,30 @@
+---
+title: "TStamper"
+mode: wide
+---
+
+# Interface: TStamper
+
+Defined in: [packages/wallet-stamper/src/types.ts:15](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L15)
+
+TStamper
+
+## Properties
+
+### stamp()
+
+> **stamp**: (`input`) => `Promise`\<[`TStamp`](../TStamp/readme)\>
+
+Defined in: [packages/wallet-stamper/src/types.ts:16](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L16)
+
+Function to stamp an input string.
+
+#### Parameters
+
+##### input
+
+`string`
+
+#### Returns
+
+`Promise`\<[`TStamp`](../TStamp/readme)\>
diff --git a/sdks/wallet-stamper/index/WalletInterface/readme.mdx b/sdks/wallet-stamper/index/WalletInterface/readme.mdx
new file mode 100644
index 00000000..8a68d556
--- /dev/null
+++ b/sdks/wallet-stamper/index/WalletInterface/readme.mdx
@@ -0,0 +1,12 @@
+---
+title: "WalletInterface"
+mode: wide
+---
+
+# Type Alias: WalletInterface
+
+> **WalletInterface** = [`SolanaWalletInterface`](../SolanaWalletInterface/readme) \| [`EthereumWalletInterface`](../EthereumWalletInterface/readme)
+
+Defined in: [packages/wallet-stamper/src/types.ts:61](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L61)
+
+Union type for wallet interfaces, supporting both Solana and Ethereum wallets.
diff --git a/sdks/wallet-stamper/index/WalletStamper/readme.mdx b/sdks/wallet-stamper/index/WalletStamper/readme.mdx
new file mode 100644
index 00000000..48773274
--- /dev/null
+++ b/sdks/wallet-stamper/index/WalletStamper/readme.mdx
@@ -0,0 +1,56 @@
+---
+title: "WalletStamper"
+mode: wide
+---
+
+# Class: WalletStamper
+
+Defined in: [packages/wallet-stamper/src/stamper.ts:18](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/stamper.ts#L18)
+
+TStamper
+
+## Implements
+
+- [`TStamper`](../TStamper/readme)
+
+## Constructors
+
+### Constructor
+
+> **new WalletStamper**(`wallet`): `WalletStamper`
+
+Defined in: [packages/wallet-stamper/src/stamper.ts:21](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/stamper.ts#L21)
+
+#### Parameters
+
+##### wallet
+
+[`WalletInterface`](../WalletInterface/readme)
+
+#### Returns
+
+`WalletStamper`
+
+## Methods
+
+### stamp()
+
+> **stamp**(`payload`): `Promise`\<[`TStamp`](../TStamp/readme)\>
+
+Defined in: [packages/wallet-stamper/src/stamper.ts:25](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/stamper.ts#L25)
+
+Function to stamp an input string.
+
+#### Parameters
+
+##### payload
+
+`string`
+
+#### Returns
+
+`Promise`\<[`TStamp`](../TStamp/readme)\>
+
+#### Implementation of
+
+[`TStamper`](../TStamper/readme).[`stamp`](../TStamper/readme#stamp)
diff --git a/sdks/wallet-stamper/index/WalletStamperError/readme.mdx b/sdks/wallet-stamper/index/WalletStamperError/readme.mdx
new file mode 100644
index 00000000..7f54790c
--- /dev/null
+++ b/sdks/wallet-stamper/index/WalletStamperError/readme.mdx
@@ -0,0 +1,46 @@
+---
+title: "WalletStamperError"
+mode: wide
+---
+
+# Class: WalletStamperError
+
+Defined in: [packages/wallet-stamper/src/errors.ts:1](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/errors.ts#L1)
+
+## Extends
+
+- `Error`
+
+## Constructors
+
+### Constructor
+
+> **new WalletStamperError**(`message`, `originalError`): `WalletStamperError`
+
+Defined in: [packages/wallet-stamper/src/errors.ts:2](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/errors.ts#L2)
+
+#### Parameters
+
+##### message
+
+`string`
+
+##### originalError
+
+`any` = `null`
+
+#### Returns
+
+`WalletStamperError`
+
+#### Overrides
+
+`Error.constructor`
+
+## Properties
+
+### originalError
+
+> **originalError**: `any` = `null`
+
+Defined in: [packages/wallet-stamper/src/errors.ts:4](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/errors.ts#L4)
diff --git a/sdks/wallet-stamper/index/WalletType/readme.mdx b/sdks/wallet-stamper/index/WalletType/readme.mdx
new file mode 100644
index 00000000..fc694dd2
--- /dev/null
+++ b/sdks/wallet-stamper/index/WalletType/readme.mdx
@@ -0,0 +1,26 @@
+---
+title: "WalletType"
+mode: wide
+---
+
+# Enumeration: WalletType
+
+Defined in: [packages/wallet-stamper/src/types.ts:66](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L66)
+
+Enum representing the type of wallet the user is stamping with.
+
+## Enumeration Members
+
+### Ethereum
+
+> **Ethereum**: `"ethereum"`
+
+Defined in: [packages/wallet-stamper/src/types.ts:67](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L67)
+
+***
+
+### Solana
+
+> **Solana**: `"solana"`
+
+Defined in: [packages/wallet-stamper/src/types.ts:68](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/types.ts#L68)
diff --git a/sdks/wallet-stamper/index/getCompressedPublicKey/readme.mdx b/sdks/wallet-stamper/index/getCompressedPublicKey/readme.mdx
new file mode 100644
index 00000000..64c40eb4
--- /dev/null
+++ b/sdks/wallet-stamper/index/getCompressedPublicKey/readme.mdx
@@ -0,0 +1,24 @@
+---
+title: "GetCompressedPublicKey"
+mode: wide
+---
+
+# Function: getCompressedPublicKey()
+
+> **getCompressedPublicKey**(`signature`, `message`): `Promise`\<`string`\>
+
+Defined in: [packages/wallet-stamper/src/ethereum.ts:117](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/wallet-stamper/src/ethereum.ts#L117)
+
+## Parameters
+
+### signature
+
+`` `0x${string}` ``
+
+### message
+
+`string`
+
+## Returns
+
+`Promise`\<`string`\>
diff --git a/sdks/wallet-stamper/index/readme.mdx b/sdks/wallet-stamper/index/readme.mdx
new file mode 100644
index 00000000..169314c4
--- /dev/null
+++ b/sdks/wallet-stamper/index/readme.mdx
@@ -0,0 +1,39 @@
+---
+title: "Index"
+mode: wide
+---
+
+# index
+
+## Enumerations
+
+- [WalletType](WalletType/readme)
+
+## Classes
+
+- [BaseEthereumWallet](BaseEthereumWallet/readme)
+- [EthereumWallet](EthereumWallet/readme)
+- [WalletStamper](WalletStamper/readme)
+- [WalletStamperError](WalletStamperError/readme)
+
+## Interfaces
+
+- [BaseWalletInterface](BaseWalletInterface/readme)
+- [EthereumWalletInterface](EthereumWalletInterface/readme)
+- [SolanaWalletInterface](SolanaWalletInterface/readme)
+- [TStamper](TStamper/readme)
+
+## Type Aliases
+
+- [TStamp](TStamp/readme)
+- [WalletInterface](WalletInterface/readme)
+
+## Variables
+
+- [SIGNATURE\_SCHEME\_TK\_API\_ED25519](SIGNATURE_SCHEME_TK_API_ED25519/readme)
+- [SIGNATURE\_SCHEME\_TK\_API\_SECP256K1\_EIP191](SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191/readme)
+- [STAMP\_HEADER\_NAME](STAMP_HEADER_NAME/readme)
+
+## Functions
+
+- [getCompressedPublicKey](getCompressedPublicKey/readme)
diff --git a/sdks/wallet-stamper/readme.mdx b/sdks/wallet-stamper/readme.mdx
new file mode 100644
index 00000000..f95ece2f
--- /dev/null
+++ b/sdks/wallet-stamper/readme.mdx
@@ -0,0 +1,246 @@
+---
+title: "Wallet Stamper"
+mode: wide
+---
+
+# Turnkey Wallet Stamper
+
+The `@turnkey/wallet-stamper` package provides a mechanism to stamp requests using a wallet public key and signature. This package supports both Solana and Ethereum wallets, allowing for seamless integration with various blockchain applications.
+
+## Installation
+
+Before you start using the Turnkey Wallet Stamper, make sure to install the necessary packages in your project. This guide assumes you have a Node.js environment ready for development.
+
+Install the required packages using NPM, Yarn, or PNPM:
+
+```bash
+npm install @turnkey/wallet-stamper @turnkey/http
+```
+
+## Usage
+
+### Prerequisites
+
+#### Add Wallet Public Key as Authenticator
+
+To use the wallet stamper, you must add the user's wallet public key as an API key authenticator.
+This can be achieved either by creating a sub-organization activity or by generating a new API key and passing in the wallet's public key.
+
+The API key stamper is necessary because we need to use the parent organization's API key to add the authenticator initially.
+Once this is done, the wallet can stamp activity requests independently without needing the parent organization's API private and public keys.
+
+Below are the steps to add a Solana public key as a wallet authenticator:
+
+```typescript
+const apiKeyStamper = new ApiKeyStamper({
+ apiPublicKey: process.env.API_PUBLIC_KEY ?? "",
+ apiPrivateKey: process.env.API_PRIVATE_KEY ?? "",
+});
+
+const client = new TurnkeyClient({ baseUrl: BASE_URL }, apiKeyStamper);
+
+const activityPoller = createActivityPoller({
+ client,
+ requestFn: client.createApiKeys,
+});
+
+// See "Example: Signing with a Solana Wallet" below for how to implement the SolanaWallet interface
+const mockWallet = new MockSolanaWallet();
+
+// This is the public key of the wallet that will be added as an API key and used to stamp future requests
+const publicKey = mockWallet.recoverPublicKey();
+
+// The userId of the user that we will add the wallet public key as an authenticator
+const userId = "f4a5e6b4-3b9c-4f69-b7f6-9c2f456a4d23";
+
+// We set the curve type to 'API_KEY_CURVE_ED25519' for solana wallets
+// If using an Ethereum wallet, set the curve type to 'API_KEY_CURVE_SECP256K1'
+const curveType = "API_KEY_CURVE_ED25519";
+
+const result = activityPoller({
+ type: "ACTIVITY_TYPE_CREATE_API_KEYS_V2",
+ timestampMs: new Date().getTime().toString(),
+ organizationId: "acd0bc97-2af5-475b-bc34-0fa7ca3bdc75",
+ parameters: {
+ apiKeys: [
+ {
+ apiKeyName: "solana-wallet",
+ publicKey,
+ curveType,
+ },
+ ],
+ userId,
+ },
+});
+```
+
+#### Using the Wallet Stamper
+
+To use the `@turnkey/wallet-stamper` package, follow these steps:
+
+1. **Choose Your Wallet Type**: Decide whether you will use an EVM-based wallet (e.g., Ethereum) or a Solana-based wallet.
+
+2. **Implement the Wallet Interface**: Depending on your chosen blockchain, implement the wallet interface. This involves creating methods to sign messages and recover public keys.
+
+> Note: We've provided a default implementation for Ethereum wallets via the `EthereumWallet` class. For custom implementations, you may implement the `WalletInterface` yourself.
+
+3. **Instantiate the WalletStamper**: Create an instance of the `WalletStamper` using the wallet interface.
+
+4. **Instantiate the TurnkeyClient**: Create an instance of the `TurnkeyClient` with the `WalletStamper` instance.
+
+5. **Stamp Requests**: Now when making request using the `TurnkeyClient`, the wallet stamper will automatically stamp the request with the user's wallet public key and signature.
+
+### Example: Signing with a Solana Wallet
+
+In this example, we are using a local Solana wallet.
+For information on using an injected Solana wallet such as Solflare, please refer to the [`with-wallet-stamper`](../../examples/with-wallet-stamper) example.
+
+```typescript
+import { Keypair } from "@solana/web3.js";
+import { decodeUTF8 } from "tweetnacl-util";
+import nacl from "tweetnacl";
+import { TurnkeyClient } from "@turnkey/http";
+import { WalletStamper, SolanaWalletInterface } from "@turnkey/wallet-stamper";
+
+class SolanaWallet implements SolanaWalletInterface {
+ keypair = Keypair.fromSecretKey(SOLANA_PRIVATE_KEY);
+ type = "solana" as const;
+
+ async signMessage(message: string): Promise {
+ const messageBytes = decodeUTF8(message);
+ const signature = nacl.sign.detached(messageBytes, this.keypair.secretKey);
+ return Buffer.from(signature).toString("hex");
+ }
+
+ async getPublicKey(): Promise {
+ // Convert the base24 encoded Solana wallet public key (the one displayed in the wallet)
+ // into the ed25519 decoded public key
+ const ed25519PublicKey = Buffer.from(
+ this.keypair.publicKey.toBuffer(),
+ ).toString("hex");
+ return ed25519PublicKey;
+ }
+}
+
+// Instantiate the WalletStamper with the SolanaWallet
+const walletStamper = new WalletStamper(new SolanaWallet());
+
+// Instantiate the TurnkeyClient with the WalletStamper
+const client = new TurnkeyClient({ baseUrl: BASE_URL }, walletStamper);
+
+// Call getWhoami to get the sub org's organizationId and userId passing in the parent org id
+// whoami { organizationId: string; organizationName: string; userId: string; username: string; }
+const whoami = await client.getWhoami({
+ organizationId: process.env.NEXT_PUBLIC_ORGANIZATION_ID,
+});
+
+// Now that we have the sub organization id, we can make requests using that sub org id
+
+// Get the wallets for this sub organization
+const wallets = await client.getWallets({
+ organizationId: whoami.organizationId,
+});
+```
+
+### Example: Signing with an Ethereum Wallet
+
+The main distinction between signing with an Ethereum Wallet and a Solana Wallet lies in how the public key is obtained.
+For Solana, the public key can be directly derived from the wallet.
+In contrast, with Ethereum, the secp256k1 public key isn't directly accessible.
+Instead, you need to first obtain a signature from the user and then recover the public key from that signature.
+
+```typescript
+import {
+ createWalletClient,
+ custom,
+ recoverPublicKey,
+ hashMessage,
+} from "viem";
+import { privateKeyToAccount } from "viem/accounts";
+import { mainnet } from "viem/chains";
+
+import { WalletStamper, EthereumWallet } from "@turnkey/wallet-stamper";
+
+// Instantiate the WalletStamper with the EthereumWallet
+const walletStamper = new WalletStamper(new EthereumWallet());
+
+// Instantiate the TurnkeyClient with the WalletStamper
+const client = new TurnkeyClient({ baseUrl: BASE_URL }, walletStamper);
+
+// Call getWhoami to get the sub-org's organizationId and userId passing in the parent org id
+// whoami { organizationId: string; organizationName: string; userId: string; username: string; }
+const whoami = await client.getWhoami({
+ organizationId: process.env.ORGANIZATION_ID,
+});
+
+let subOrganizationId = whoami?.organizationId;
+
+// User does not yet have a sub-organization, so we need to create one
+if (!subOrganizationId) {
+ // We'll need to use the parent org's API keys to create the sub-org on behalf of the user
+ const { ApiKeyStamper } = await import("@turnkey/api-key-stamper");
+
+ // Instantiate the TurnkeyClient with the ApiKeyStamper
+ const parentOrgClient = new TurnkeyClient(
+ { baseUrl: BASE_URL },
+ new ApiKeyStamper({
+ // In practice we'll want to ensure these keys do not get exposed to the client
+ apiPublicKey: process.env.API_PUBLIC_KEY ?? "",
+ apiPrivateKey: process.env.API_PRIVATE_KEY ?? "",
+ }),
+ );
+
+ const apiKeys = [
+ {
+ apiKeyName: "Wallet Auth - Embedded Wallet",
+ // The public key of the wallet that will be added as an API key and used to stamp future requests
+ publicKey,
+ // We set the curve type to 'API_KEY_CURVE_ED25519' for solana wallets
+ // If using an Ethereum wallet, set the curve type to 'API_KEY_CURVE_SECP256K1'
+ curveType,
+ },
+ ];
+
+ const subOrg = await parentOrgClient.createSubOrganization({
+ organizationId: process.env.ORGANIZATION_ID,
+ subOrganizationName: `Sub Org - ${publicKey}`,
+ rootUsers: [
+ {
+ // Replace with user provided values
+ userName: "New User",
+ userEmail: "wallet@domain.com",
+ apiKeys,
+ },
+ ],
+ rootQuorumThreshold: 1,
+ wallet: {
+ walletName: "Default Wallet",
+ accounts: DEFAULT_ETHEREUM_ACCOUNTS,
+ },
+ });
+
+ subOrganizationId = subOrg.subOrganizationId;
+}
+
+// Get the wallets for this sub-organization
+const wallets = await client.getWallets({
+ organizationId: subOrganizationId,
+});
+```
+
+## Contributing
+
+Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.
+
+## License
+
+The `@turnkey/wallet-stamper` package is licensed under the [MIT License](../_media/LICENSE-1).
+
+## Documents
+
+- [WalletStamper](WalletStamper/readme)
+
+
+## Modules
+
+- [index](index/readme)
diff --git a/sdks/webauthn-stamper/WebauthnStamper/readme.mdx b/sdks/webauthn-stamper/WebauthnStamper/readme.mdx
new file mode 100644
index 00000000..c4c72071
--- /dev/null
+++ b/sdks/webauthn-stamper/WebauthnStamper/readme.mdx
@@ -0,0 +1,160 @@
+---
+title: "WebauthnStamper"
+mode: wide
+---
+
+## Introduction
+
+The [`@turnkey/webauthn-stamper`](https://www.npmjs.com/package/@turnkey/webauthn-stamper) package is used for stamping requests made to Turnkey's API with WebAuthn credentials, but specifically for use with passkeys.
+
+For more information on passkeys and WebAuthn refer to [this section](/authentication/passkeys/introduction).
+
+## Installing
+
+To get started install the [`@turnkey/webauthn-stamper`](https://www.npmjs.com/package/@turnkey/webauthn-stamper) client.
+
+
+
+```bash npm
+npm i @turnkey/webauthn-stamper
+```
+
+```bash pnpm
+pnpm i @turnkey/webauthn-stamper
+```
+
+```bash yarn
+yarn add @turnkey/webauthn-stamper
+```
+
+
+
+## Initializing
+
+The `WebauthnStamper` class is a utility designed to facilitate the process of creating a digital stamp using WebAuthn credentials. This stamp is essential for authenticating requests made to a web server or API that utilizes WebAuthn for secure, passwordless authentication. You can initialize a new `WebauthnStamper` using the WebauthnStamper constructor:
+
+### `constructor(config: TWebauthnStamperConfig): WebauthnStamper`
+
+#### Parameters
+
+
+
+An object containing configuration settings for the stamper.
+
+
+
+The RPID ("Relying Party ID") for your origin. For an origin named `https://www.example.com`, the RPID is typically `example.com`. If you're testing on localhost, the RPID should be `localhost`.
+
+
+
+The time in milliseconds before the stamp request times out. Defaults to 300000 milliseconds (5 minutes) if not specified.
+
+
+
+Specifies the user verification requirements. Can be set to values like `required`, `preferred`, or `discouraged`. Defaults to `preferred` if not provided.
+
+
+
+An array of credential descriptors specifying the credentials to be allowed during authentication. This is optional and defaults to an empty array.
+
+
+#### Types
+
+##### `TWebauthnStamperConfig`
+
+```js
+type TWebauthnStamperConfig = {
+ rpId: string;
+ timeout?: number;
+ userVerification?: UserVerificationRequirement;
+ allowCredentials?: PublicKeyCredentialDescriptor[];
+};
+```
+
+##### `UserVerificationRequirement`
+
+```js
+type UserVerificationRequirement = "discouraged" | "preferred" | "required";
+```
+
+Refer to our guide on [using passkeys](/authentication/passkeys/options#userverification) for more information on this type and its usage.
+
+##### `PublicKeyCredentialDescriptor`
+
+```js
+interface PublicKeyCredentialDescriptor {
+ id: BufferSource;
+ transports?: AuthenticatorTransport[];
+ type: PublicKeyCredentialType;
+}
+```
+
+Refer to our guide on [using passkeys](/authentication/passkeys/options#allowcredentials) for more information on this type and its usage.
+
+#### Example
+
+```js
+import { WebauthnStamper } from "@turnkey/webauthn-stamper";
+import { TurnkeyClient } from "@turnkey/http";
+
+const stamper = new WebAuthnStamper({
+ rpId: "example.com",
+});
+
+// New HTTP client able to sign with passkeys!
+const httpClient = new TurnkeyClient(
+ { baseUrl: "https://api.turnkey.com" },
+ stamper,
+);
+```
+
+## Methods
+
+### `stamp: (input: string) => Promise`
+
+Creates a digital stamp, which includes the public key, signature scheme, and a signature based on WebAuthn credentials.
+
+#### Parameters
+
+
+
+The Turnkey activity request, or query to be sent to Turnkey's API.
+
+
+#### Types
+
+##### `TStamp`
+
+```js
+type TStamp = {
+ stampHeaderName: string;
+ stampHeaderValue: string;
+};
+```
diff --git a/sdks/webauthn-stamper/index/TWebauthnStamperConfig/readme.mdx b/sdks/webauthn-stamper/index/TWebauthnStamperConfig/readme.mdx
new file mode 100644
index 00000000..17c63a2c
--- /dev/null
+++ b/sdks/webauthn-stamper/index/TWebauthnStamperConfig/readme.mdx
@@ -0,0 +1,42 @@
+---
+title: "TWebauthnStamperConfig"
+mode: wide
+---
+
+# Type Alias: TWebauthnStamperConfig
+
+> **TWebauthnStamperConfig** = `object`
+
+Defined in: [index.ts:8](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L8)
+
+## Properties
+
+### allowCredentials?
+
+> `optional` **allowCredentials**: `PublicKeyCredentialDescriptor`[]
+
+Defined in: [index.ts:18](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L18)
+
+***
+
+### rpId
+
+> **rpId**: `string`
+
+Defined in: [index.ts:12](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L12)
+
+***
+
+### timeout?
+
+> `optional` **timeout**: `number`
+
+Defined in: [index.ts:14](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L14)
+
+***
+
+### userVerification?
+
+> `optional` **userVerification**: `UserVerificationRequirement`
+
+Defined in: [index.ts:16](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L16)
diff --git a/sdks/webauthn-stamper/index/WebauthnStamper/readme.mdx b/sdks/webauthn-stamper/index/WebauthnStamper/readme.mdx
new file mode 100644
index 00000000..2f14d572
--- /dev/null
+++ b/sdks/webauthn-stamper/index/WebauthnStamper/readme.mdx
@@ -0,0 +1,78 @@
+---
+title: "WebauthnStamper"
+mode: wide
+---
+
+# Class: WebauthnStamper
+
+Defined in: [index.ts:27](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L27)
+
+Stamper to use with `@turnkey/http`'s `TurnkeyClient`
+
+## Constructors
+
+### Constructor
+
+> **new WebauthnStamper**(`config`): `WebauthnStamper`
+
+Defined in: [index.ts:33](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L33)
+
+#### Parameters
+
+##### config
+
+[`TWebauthnStamperConfig`](../TWebauthnStamperConfig/readme)
+
+#### Returns
+
+`WebauthnStamper`
+
+## Properties
+
+### allowCredentials
+
+> **allowCredentials**: `PublicKeyCredentialDescriptor`[]
+
+Defined in: [index.ts:31](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L31)
+
+***
+
+### rpId
+
+> **rpId**: `string`
+
+Defined in: [index.ts:28](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L28)
+
+***
+
+### timeout
+
+> **timeout**: `number`
+
+Defined in: [index.ts:29](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L29)
+
+***
+
+### userVerification
+
+> **userVerification**: `UserVerificationRequirement`
+
+Defined in: [index.ts:30](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L30)
+
+## Methods
+
+### stamp()
+
+> **stamp**(`payload`): `Promise`\<\{ `stampHeaderName`: `string`; `stampHeaderValue`: `string`; \}\>
+
+Defined in: [index.ts:40](https://github.com/tkhq/sdk/blob/ee72856c3f450731d7501ab05001215768b71500/packages/webauthn-stamper/src/index.ts#L40)
+
+#### Parameters
+
+##### payload
+
+`string`
+
+#### Returns
+
+`Promise`\<\{ `stampHeaderName`: `string`; `stampHeaderValue`: `string`; \}\>
diff --git a/sdks/webauthn-stamper/index/readme.mdx b/sdks/webauthn-stamper/index/readme.mdx
new file mode 100644
index 00000000..6da3b51b
--- /dev/null
+++ b/sdks/webauthn-stamper/index/readme.mdx
@@ -0,0 +1,14 @@
+---
+title: "Index"
+mode: wide
+---
+
+# index
+
+## Classes
+
+- [WebauthnStamper](WebauthnStamper/readme)
+
+## Type Aliases
+
+- [TWebauthnStamperConfig](TWebauthnStamperConfig/readme)
diff --git a/sdks/webauthn-stamper/readme.mdx b/sdks/webauthn-stamper/readme.mdx
new file mode 100644
index 00000000..8199bad9
--- /dev/null
+++ b/sdks/webauthn-stamper/readme.mdx
@@ -0,0 +1,36 @@
+---
+title: "Webauthn Stamper"
+mode: wide
+---
+
+# @turnkey/webauthn-stamper
+
+[](https://www.npmjs.com/package/@turnkey/webauthn-stamper)
+
+This package contains functions to stamp a Turnkey request. It is meant to be used with [`@turnkey/http`](https://www.npmjs.com/package/@turnkey/http)
+
+Usage:
+
+```ts
+import { WebauthnStamper } from "@turnkey/webauthn-stamper";
+import { TurnkeyClient } from "@turnkey/http";
+
+const stamper = new WebAuthnStamper({
+ rpId: "example.com",
+});
+
+// New HTTP client able to sign with passkeys!
+const httpClient = new TurnkeyClient(
+ { baseUrl: "https://api.turnkey.com" },
+ stamper
+);
+```
+
+## Documents
+
+- [WebauthnStamper](WebauthnStamper/readme)
+
+
+## Modules
+
+- [index](index/readme)