Skip to main content

system.ping

Health check endpoint that returns the current server time.

Request

{"jsonrpc":"2.0","id":1,"method":"system.ping","params":{}}

Parameters

No parameters required.

Response

ok
boolean
required
Always returns true
time
string
required
Current server time in ISO 8601 format

Example

{"jsonrpc":"2.0","id":1,"result":{"ok":true,"time":"2026-01-01T00:00:00.000Z"}}

system.shutdown

Gracefully shutdown the loaf runtime server. Aborts all active sessions and clears queues.

Request

{"jsonrpc":"2.0","id":2,"method":"system.shutdown","params":{"reason":"client_disconnect"}}

Parameters

reason
string
Optional reason for shutdown (for logging/debugging)

Response

accepted
boolean
required
Always returns true if shutdown was initiated
reason
string
The reason provided for shutdown

Example

{"jsonrpc":"2.0","id":2,"result":{"accepted":true,"reason":"client_disconnect"}}

state.get

Retrieve the current runtime state snapshot including auth, model selection, sessions, and skills.

Request

{"jsonrpc":"2.0","id":3,"method":"state.get","params":{}}

Parameters

No parameters required.

Response

auth
object
required
Authentication state
enabledProviders
array
required
Array of enabled auth providers: ["openai", "openrouter", "antigravity"]
hasOpenAiToken
boolean
required
Whether OpenAI OAuth token is configured
hasOpenRouterKey
boolean
required
Whether OpenRouter API key is configured
hasAntigravityToken
boolean
required
Whether Antigravity OAuth token is configured
antigravityProfile
object
Antigravity user profile (if authenticated)
onboarding
object
required
completed
boolean
required
Whether onboarding flow has been completed
model
object
required
Model selection state
selectedModel
string
required
Currently selected model ID
selectedThinking
string
required
Selected thinking level: "low", "medium", "high", or "extended"
selectedOpenRouterProvider
string
Selected OpenRouter provider (if using OpenRouter)
selectedProvider
string
required
Selected provider: "openai", "openrouter", or "antigravity"
sessions
object
required
Active sessions summary
count
number
required
Number of active sessions
ids
array
required
Array of session IDs
skills
object
required
Skills catalog summary
count
number
required
Number of available skills
directories
array
required
Skill directories being scanned

Example

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "auth": {
      "enabledProviders": ["openai"],
      "hasOpenAiToken": true,
      "hasOpenRouterKey": false,
      "hasAntigravityToken": false,
      "antigravityProfile": null
    },
    "onboarding": {
      "completed": true
    },
    "model": {
      "selectedModel": "gpt-4o",
      "selectedThinking": "medium",
      "selectedOpenRouterProvider": null,
      "selectedProvider": "openai"
    },
    "sessions": {
      "count": 1,
      "ids": ["550e8400-e29b-41d4-a716-446655440000"]
    },
    "skills": {
      "count": 5,
      "directories": ["/home/user/.config/loaf/skills"]
    }
  }
}

onboarding.status

Get the current onboarding status.

Request

{"jsonrpc":"2.0","id":4,"method":"onboarding.status","params":{}}

Response

completed
boolean
required
Whether the onboarding flow has been completed
has_auth
boolean
required
Whether at least one provider is authenticated
{"jsonrpc":"2.0","id":4,"result":{"completed":true,"has_auth":true}}

onboarding.complete

Mark the onboarding flow as complete.

Request

{"jsonrpc":"2.0","id":5,"method":"onboarding.complete","params":{}}

Response

{"jsonrpc":"2.0","id":5,"result":{"ok":true}}

command.execute

Execute a slash command in a session context.

Request

session_id
string
required
Session ID to execute the command in
raw_command
string
required
Raw command string (e.g., /model, /skills, /clear)
{"jsonrpc":"2.0","id":6,"method":"command.execute","params":{"session_id":"ses_abc123","raw_command":"/clear"}}

Response

ok
boolean
required
Whether the command executed successfully
output
string
Command output (if any)
{"jsonrpc":"2.0","id":6,"result":{"ok":true,"output":"Conversation cleared"}}

skills.list

List all discovered skills.

Request

{"jsonrpc":"2.0","id":7,"method":"skills.list","params":{}}

Response

skills
array
required
Array of skill objects with name, path, and description fields
{"jsonrpc":"2.0","id":7,"result":{"skills":[{"name":"frontend-design","path":"/path/to/.agents/skills/frontend-design/SKILL.md","description":"Design and implement frontend components"}]}}

tools.list

List all registered tools (built-in and custom).

Request

{"jsonrpc":"2.0","id":8,"method":"tools.list","params":{}}

Response

tools
array
required
Array of tool names
{"jsonrpc":"2.0","id":8,"result":{"tools":["bash","read_file","list_dir","grep_files","apply_patch","run_js","search_web","create_persistent_tool"]}}

debug.set

Enable or disable super debug mode.

Request

super_debug
boolean
required
Whether to enable super debug mode
{"jsonrpc":"2.0","id":9,"method":"debug.set","params":{"super_debug":true}}

Response

{"jsonrpc":"2.0","id":9,"result":{"ok":true}}

Build docs developers (and LLMs) love