# Site settings

## Update Site Setting

`TOOL discourse_update_site_setting`

Set or reset one ordinary admin-visible Discourse site setting after a fresh optimistic-concurrency check. Secret and structured settings are excluded.

Authentication: no security requirement declared for this operation.

Request body: application/json (required)

Type: object

- `setting` (required)
  Type: string
  
  maxLength: 200
  
  pattern: "^[a-z0-9_]+$"

- `operation` (required)
  Type: string
  
  enum: ["set","reset_to_default"]

- `value` (optional)
  Type: string | number | boolean | Array<string | number>
  
  anyOf:
    Type: string
    
    maxLength: 20000
  
    Type: number
  
    Type: boolean
  
    Type: Array<string | number>
    
    maxItems: 200
    
    Items:
      Type: string | number
      
      anyOf:
        Type: string
        
        maxLength: 2000
      
        Type: number

- `expected_current_value` (required)
  Type: string | number | boolean | Array<string | number>
  
  anyOf:
    Type: string
    
    maxLength: 20000
  
    Type: number
  
    Type: boolean
  
    Type: Array<string | number>
    
    maxItems: 200
    
    Items:
      Type: string | number
      
      anyOf:
        Type: string
        
        maxLength: 2000
      
        Type: number

- `confirm_change` (required)
  Type: boolean
  
  const: true

- `confirm_required_setting` (optional)
  Type: boolean
  
  const: true

Additional properties: false

Declared MCP annotations:

```json
{
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
```

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "discourse_update_site_setting",
    "arguments": {
        "setting": "string",
        "operation": "set",
        "value": "string",
        "expected_current_value": "string",
        "confirm_change": true,
        "confirm_required_setting": true
      }
  }
}
```

### TypeScript

```typescript
const result = await client.callTool({
  "name": "discourse_update_site_setting",
  "arguments": {
    "setting": "string",
    "operation": "set",
    "value": "string",
    "expected_current_value": "string",
    "confirm_change": true,
    "confirm_required_setting": true
  }
});
```

### Python

```python
result = await session.call_tool("discourse_update_site_setting", arguments={
  "setting": "string",
  "operation": "set",
  "value": "string",
  "expected_current_value": "string",
  "confirm_change": true,
  "confirm_required_setting": true
})
```
