> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plungeai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Who am I

> Your identity, tier, key label and rate-limit window over MCP with plungeai_whoami.


<Note>
Available now over MCP; a REST route is tracked as TI-79.
</Note>

Read the identity behind your key: the user, the auth type and tier, the key label and id, and the current rate-limit window. It is the `plungeai_whoami` tool of the MCP server, so any MCP client can call it, and it is read-only.

<!-- Handler: orchestration/mcp-gateway/extras.ts:692-737 (WhoamiSchema and plungeaiWhoami: the Markdown text at :725, the JSON fields at :728-735; tier, key_label and key_id are null when absent). -->

## Endpoint

```text
POST https://mcp.plungeai.com/v1  ·  tools/call  ·  name: plungeai_whoami
```

## Authorizations

`Authorization: Bearer $PLUNGE_API_KEY` or `X-API-Key: $PLUNGE_API_KEY`, an `ozk_` key from **Dashboard → One API → Keys**. The call counts toward your rate limit, so the window it reports includes it.

## Arguments

<ParamField body="user_request" type="string">
The user's words, up to 4,000 characters. Optional.
</ParamField>

<ParamField body="format" type="string" default="markdown">
`markdown` or `json`. `json` returns the fields below as a JSON document and as `structuredContent`.
</ParamField>

## Output

With `format: "markdown"` (the default) the text starts with `# Who am I` and lists User, Auth (type and tier), Key (label and key id), Rate window (`<n>/min used · <n>/day used`, left out when the counter cannot be read) and Server. With `format: "json"`:

<ResponseField name="user" type="string">
Your user id.
</ResponseField>

<ResponseField name="auth_type" type="string">
How the request authenticated, `api-key` for an `ozk_` key.
</ResponseField>

<ResponseField name="tier" type="string | null">
The key's tier: `free`, `pro` or `enterprise`, or `null` when the key carries none.
</ResponseField>

<ResponseField name="key_label" type="string | null">
The name you gave the key in the Dashboard, or `null` when it has none.
</ResponseField>

<ResponseField name="key_id" type="string | null">
The key's id, or `null` when it is not known.
</ResponseField>

<ResponseField name="rate_window" type="object | null">
`{ "minute_used", "day_used" }` for the current windows, or `null` when the counter cannot be read.
</ResponseField>

<ResponseField name="server" type="string">
The server name and host, `plungeai.com (mcp.plungeai.com)`.
</ResponseField>

## Example

```python Python
import json, os, requests

r = requests.post(
    "https://mcp.plungeai.com/v1",
    headers={
        "Authorization": f"Bearer {os.environ['PLUNGE_API_KEY']}",
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
    },
    json={"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "plungeai_whoami", "arguments": {"user_request": "who am I?", "format": "json"}}},
)
frames = [line[len("data: "):] for line in r.text.splitlines() if line.startswith("data: ")]
print(json.loads(frames[-1])["result"]["structuredContent"])
```

```typescript TypeScript
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'

const transport = new StreamableHTTPClientTransport(new URL('https://mcp.plungeai.com/v1'), {
  requestInit: { headers: { Authorization: `Bearer ${process.env.PLUNGE_API_KEY}` } },
})
const client = new Client({ name: 'whoami-example', version: '1.0.0' })
await client.connect(transport)
const result = await client.callTool({ name: 'plungeai_whoami', arguments: { user_request: 'who am I?' } })
console.log(result.content)
```

```bash cURL
curl -s https://mcp.plungeai.com/v1 \
  -H "Authorization: Bearer $PLUNGE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plungeai_whoami","arguments":{"user_request":"who am I?"}}}'
```

Result shape, Markdown form (the field layout of the tool reference; every value is a placeholder):

```markdown
# Who am I

- **User:** `00000000-0000-4000-8000-000000000005`
- **Auth:** api-key · tier **free**
- **Key:** my-laptop (`00000000-0000-4000-8000-000000000008`)
- **Rate window:** 1/min used · 12/day used
- **Server:** plungeai.com (mcp.plungeai.com)
```

Result shape, JSON form (`format: "json"`, the `structuredContent`; every value is a placeholder):

```json
{
  "user": "00000000-0000-4000-8000-000000000005",
  "auth_type": "api-key",
  "tier": "free",
  "key_label": "my-laptop",
  "key_id": "00000000-0000-4000-8000-000000000008",
  "rate_window": { "minute_used": 1, "day_used": 12 },
  "server": "plungeai.com (mcp.plungeai.com)"
}
```

The same tool is documented field by field on [plungeai_whoami](/mcp-reference/tools/plungeai_whoami).
