Clawvisor Tasks API
Declare, approve, expand, and complete task scopes.
Declare, approve, expand, and complete task scopes.
openapi: 3.1.0
info:
title: Clawvisor Gateway Auth Tasks API
version: 0.2.0
description: The Clawvisor gateway API — the authorization layer AI agents call to act on external services (Gmail, Calendar, Drive, Contacts, GitHub, Slack, Notion, Linear, Stripe, Twilio, iMessage) without ever holding the underlying credentials. Agents declare a **task** describing their purpose and the service/action pairs they need; the user approves the scope once; and every subsequent gateway request is checked against restrictions, task scope, intent verification, and (optionally) per-request human approval before Clawvisor injects credentials, executes through an adapter, and returns a clean semantic result. This description is GENERATED by the API Evangelist enrichment pipeline from Clawvisor's public README and agent protocol (skills/clawvisor/SKILL.md.tmpl); Clawvisor does not publish an OpenAPI document. Every path, method, field, and status below is documented in github.com/clawvisor/clawvisor.
x-generated-by: api-evangelist-enrichment-pipeline
x-source: https://github.com/clawvisor/clawvisor/blob/main/README.md
license:
name: MIT
url: https://github.com/clawvisor/clawvisor/blob/main/LICENSE
contact:
name: Clawvisor
url: https://clawvisor.com
servers:
- url: https://app.clawvisor.com
description: Hosted Clawvisor (managed service)
- url: http://localhost:25297
description: Self-hosted local daemon (default port)
security:
- agentToken: []
tags:
- name: Tasks
description: Declare, approve, expand, and complete task scopes.
paths:
/api/tasks:
post:
operationId: createTask
tags:
- Tasks
summary: Declare a task scope
description: Declare a purpose and the authorized service/action pairs the agent needs. The task starts as `pending_approval`; the user approves the scope via dashboard, Telegram, or a mobile push. Use `?wait=true` to block until the user approves or denies in a single round-trip.
parameters:
- name: wait
in: query
required: false
description: Long-poll until the task is approved or denied.
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TaskCreate'
responses:
'200':
description: Task created (and resolved when wait=true).
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
'401':
description: Missing or invalid agent token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
get:
operationId: listTasks
tags:
- Tasks
summary: List tasks
description: List the agent's active, standing, pending, and completed tasks.
responses:
'200':
description: A list of tasks.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Task'
/api/tasks/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
get:
operationId: getTask
tags:
- Tasks
summary: Get a task (supports long-polling)
description: Retrieve a task's current state. Use `?wait=true` to long-poll until the status changes to `active` or `denied`.
parameters:
- name: wait
in: query
required: false
schema:
type: boolean
responses:
'200':
description: The task.
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
'404':
description: Task not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/api/tasks/{id}/expand:
post:
operationId: expandTask
tags:
- Tasks
summary: Request a scope expansion
description: Add an action not in the original task scope. The user is notified and can approve or deny; on approval the action is added and the session task TTL is reset. Standing tasks cannot be expanded.
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AuthorizedAction'
responses:
'200':
description: Expansion requested / resolved.
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
/api/tasks/{id}/complete:
post:
operationId: completeTask
tags:
- Tasks
summary: Mark a task complete
description: Signal the task is done; chain-context facts are cleaned up.
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Task completed.
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
components:
schemas:
AuthorizedAction:
type: object
required:
- service
- action
properties:
service:
type: string
description: Service (optionally with account alias), e.g. `google.gmail:user@example.com`.
action:
type: string
description: Action on the service, e.g. `list_messages`, `send_message`.
auto_execute:
type: boolean
description: When true, in-scope requests run immediately; false requires per-request approval.
expected_use:
type: string
description: Per-action description checked against actual request params by intent verification.
verification:
type: string
enum:
- strict
- lenient
- false
description: Per-scope intent verification mode.
Task:
type: object
properties:
id:
type: string
purpose:
type: string
status:
type: string
enum:
- pending_approval
- active
- pending_scope_expansion
- completed
- denied
- expired
- revoked
lifetime:
type: string
enum:
- session
- standing
- sliding
authorized_actions:
type: array
items:
$ref: '#/components/schemas/AuthorizedAction'
expires_at:
type: string
format: date-time
PlannedCall:
type: object
required:
- service
- action
- params
properties:
service:
type: string
action:
type: string
params:
type: object
additionalProperties: true
description: Known params, or `$chain` for values that come from a prior call's results.
reason:
type: string
Error:
type: object
properties:
status:
type: string
error:
type: string
code:
type: string
TaskCreate:
type: object
required:
- purpose
- authorized_actions
properties:
purpose:
type: string
description: Capability statement shown at approval and checked by intent verification.
authorized_actions:
type: array
items:
$ref: '#/components/schemas/AuthorizedAction'
planned_calls:
type: array
items:
$ref: '#/components/schemas/PlannedCall'
lifetime:
type: string
enum:
- session
- standing
- sliding
description: session (default, TTL), standing (until revoked), or sliding (auto-extends on use).
expires_in_seconds:
type: integer
description: Task TTL for session tasks.
callback_url:
type: string
format: uri
description: URL Clawvisor POSTs a task callback to on approval/denial/expansion/expiry.
securitySchemes:
agentToken:
type: http
scheme: bearer
description: Agent token (or dashboard JWT for admin-gated endpoints), sent as Authorization Bearer header.
agentTokenHeader:
type: apiKey
in: header
name: X-Clawvisor-Agent-Token
description: Agent token for the skill catalog endpoint.