# Resources

## site_categories

`RESOURCE discourse://site/categories`

DEPRECATED compatibility resource. Use discourse_list_categories (opt-in administration toolset) for the canonical structured directory. Lists categories with hierarchy (parent_category_id; legacy pid), optional permissions (perms), counts, and truthful completeness metadata.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://site/categories"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://site/categories"
});
```

### Python

```python
result = await session.read_resource("discourse://site/categories")
```


## site_tags

`RESOURCE discourse://site/tags`

List all tags with usage counts. Returns empty if tags are disabled.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://site/tags"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://site/tags"
});
```

### Python

```python
result = await session.read_resource("discourse://site/tags")
```


## site_groups

`RESOURCE discourse://site/groups`

DEPRECATED compatibility resource. Use discourse_list_groups (opt-in groups toolset) for the canonical structured directory. Lists all visible groups with visibility and interaction levels plus truthful completeness metadata.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://site/groups"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://site/groups"
});
```

### Python

```python
result = await session.read_resource("discourse://site/groups")
```


## chat_channels

`RESOURCE discourse://chat/channels`

List all public chat channels with id, title, slug, status, members_count, and description.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://chat/channels"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://chat/channels"
});
```

### Python

```python
result = await session.read_resource("discourse://chat/channels")
```


## user_chat_channels

`RESOURCE discourse://user/chat-channels`

List user's chat channels (public + DMs) with unread/mention counts. Requires authentication.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://user/chat-channels"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://user/chat-channels"
});
```

### Python

```python
result = await session.read_resource("discourse://user/chat-channels")
```


## user_drafts

`RESOURCE discourse://user/drafts`

List user's drafts with draft_key, sequence, title, category_id, created_at, and reply_preview. Requires authentication.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://user/drafts"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://user/drafts"
});
```

### Python

```python
result = await session.read_resource("discourse://user/drafts")
```


## explorer_schema

`RESOURCE discourse://explorer/schema`

Database schema (core tables). Format: col, col:int, col:ts, col*, col>fk_table. No type = text. Use explorer_schema_tables for all/specific tables.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://explorer/schema"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://explorer/schema"
});
```

### Python

```python
result = await session.read_resource("discourse://explorer/schema")
```


## explorer_queries

`RESOURCE discourse://explorer/queries`

Saved Data Explorer queries (30/page, by last used). Shows id, name, description. Use explorer_queries_page for other pages.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://explorer/queries"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://explorer/queries"
});
```

### Python

```python
result = await session.read_resource("discourse://explorer/queries")
```


## ai_custom_tools_authoring_guide

`RESOURCE discourse://ai/custom-tools/authoring-guide`

Authoritative selected-site JavaScript preamble and minimal MiniRacer tool template. Admin-only; intended for assistant authoring context.

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://ai/custom-tools/authoring-guide"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://ai/custom-tools/authoring-guide"
});
```

### Python

```python
result = await session.read_resource("discourse://ai/custom-tools/authoring-guide")
```


## explorer_schema_tables

`RESOURCE discourse://explorer/schema/{tables}`

Database schema for specific tables. Use 'all' for all tables, or comma-separated names (e.g., 'users,topics,posts').

Authentication: no security requirement declared for this operation.

Parameters:

- `tables` (path, string, required)
  Type: string

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://explorer/schema/{tables}"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://explorer/schema/{tables}"
});
```

### Python

```python
result = await session.read_resource("discourse://explorer/schema/{tables}")
```


## explorer_queries_page

`RESOURCE discourse://explorer/queries/{page}`

Saved Data Explorer queries - specific page number.

Authentication: no security requirement declared for this operation.

Parameters:

- `page` (path, string, required)
  Type: string

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "resources/read",
  "params": {
    "uri": "discourse://explorer/queries/{page}"
  }
}
```

### TypeScript

```typescript
const result = await client.readResource({
  "uri": "discourse://explorer/queries/{page}"
});
```

### Python

```python
result = await session.read_resource("discourse://explorer/queries/{page}")
```
