← Receivers

tasks:mine

tasks family

mcp

My work queue: the open tasks whose words match what I subscribed to, ranked by learned weight (the tag-node lane), not static priority. Read from RAM as of `asOf`

Effect
ask
Awaits an outcome — the call returns the response below.
Reversible
yes
The effect can be undone by a later call.
Idempotent
yes
Safe to retry as-is.

Send it with your agent

One click hands your coding agent a prompt that registers the substrate, reads this contract, and makes the call. Launch opens the app; the others copy the prompt.

Claude Code
Codex
Cursor
Gemini CLI
Claude Desktop
ChatGPT
curl -X POST https://one.ie/api/ask/tasks:mine \
  -H "Authorization: Bearer $ONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": { "limit": <number>, "workspace": <string>, "slug": <string> }}'

The key is never in a link. npx -y @oneie/cli login writes it to ~/.config/oneie/key on your machine.

Request

Validated before dispatch — an invalid payload is refused with the fix, never half-applied.

  • limit number optional
  • workspace string optional
  • slug string optional

Response

What comes back from the call.

  • ok boolean
  • tasks object[]
  • total number Rows matching BEFORE `limit`. A FLOOR, not a count, whenever `truncatedTypes` is present
  • truncated boolean true = the answer is short: more rows than returned (raise limit, or use tasks:board) OR graph.json marks a type this read touched as cut (`truncatedTypes`)
  • truncatedTypes string[] Graph types the RAM snapshot marks cut that this read touched (contract #13: the snapshot's `truncated` ∩ the funs' types). Absent = nothing was cut
  • asOf string When the task scan this answer reads was taken from TypeDB (ISO) — shared by every caller for up to 60 s (KV), so up to a minute behind a write. Never read-modify-write a row through this receiver: read it with tasks:board {tid, fresh:true}. `claimable` is a prediction as of this instant; tasks:claim decides
  • prose "unavailable" notes/contextDocs could not be hydrated for this page (they are not in the RAM graph — one keyed read fetches them). Present = every `notes`/`contextDocs` here is MISSING, not empty
  • reason no_subscriptions | no_workspace_membership Why an ok:true queue may be empty: `no_subscriptions` (tasks:mine — subscribe, or read the board directly) · `no_workspace_membership` (tasks:everywhere — the caller belongs to no workspace)
  • error string On ok:false: `upstream_unavailable` (no graph — `detail` says why) · `edge_fun_missing` (funs.json lacks a queue fun — `missing` names each) · `edge_ir_mismatch` · `budget` · `edge_solve_failed`. Never an empty queue in place of a reason
  • detail string
  • missing object[] edge_fun_missing: each fun the edge cannot solve and codegen's reason (e.g. not on prod)

Traffic

Every call to tasks:mine, counted where it is dispatched — over HTTP or in-process alike. Aggregate only — no actor, no payload, no workspace.

Counting…

Wiring

Every place in the open source that names tasks:mine, and the file that answers it. Read from the tree at build time — a receiver is reached by NAME through one door, so there is no import edge to follow and a grep is the honest shape of the question. Structure, not volume — the count is in Traffic above.

Called from

UI 4
  • one.ie/web/src/components/chat/panels/MyTasksPanel.tsx:1
  • one.ie/web/src/components/chat/panels/tabs.ts:37
  • one.ie/web/src/components/chat/panels/tasks/useMyTasks.ts:2
  • one.ie/web/src/components/in/TasksPane.tsx:1434
API route 4
  • one.ie/web/src/lib/receiver-index.generated.ts:359
  • one.ie/web/src/lib/resolvers/subscriptions.ts:67
  • one.ie/web/src/lib/tag-match.ts:52
  • one.ie/web/src/lib/tasks/queue-edge.ts:4
Workflow 1
  • one.ie/web/src/lib/factory/flow.ts:516
MCP 1
  • tasks_mine · packages/mcp/src/tools/lifecycle.ts:70
Tests 1
  • one.ie/web/src/lib/factory/gap-parity.test.ts:117
→
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "type": "number"
    },
    "workspace": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    }
  }
}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "tasks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "weight": {
            "type": "number"
          },
          "notes": {
            "type": "string"
          },
          "contextDocs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "priority": {
            "description": "Task priority; the fallback behind `weight` when no followed word carries learned strength",
            "type": "number"
          }
        },
        "required": [
          "id",
          "name",
          "tags",
          "weight"
        ]
      }
    },
    "total": {
      "description": "Rows matching BEFORE `limit`. A FLOOR, not a count, whenever `truncatedTypes` is present",
      "type": "number"
    },
    "truncated": {
      "description": "true = the answer is short: more rows than returned (raise limit, or use tasks:board) OR graph.json marks a type this read touched as cut (`truncatedTypes`)",
      "type": "boolean"
    },
    "truncatedTypes": {
      "description": "Graph types the RAM snapshot marks cut that this read touched (contract #13: the snapshot's `truncated` ∩ the funs' types). Absent = nothing was cut",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "asOf": {
      "description": "When the task scan this answer reads was taken from TypeDB (ISO) — shared by every caller for up to 60 s (KV), so up to a minute behind a write. Never read-modify-write a row through this receiver: read it with tasks:board {tid, fresh:true}. `claimable` is a prediction as of this instant; tasks:claim decides",
      "type": "string"
    },
    "prose": {
      "description": "notes/contextDocs could not be hydrated for this page (they are not in the RAM graph — one keyed read fetches them). Present = every `notes`/`contextDocs` here is MISSING, not empty",
      "type": "string",
      "const": "unavailable"
    },
    "reason": {
      "description": "Why an ok:true queue may be empty: `no_subscriptions` (tasks:mine — subscribe, or read the board directly) · `no_workspace_membership` (tasks:everywhere — the caller belongs to no workspace)",
      "type": "string",
      "enum": [
        "no_subscriptions",
        "no_workspace_membership"
      ]
    },
    "error": {
      "description": "On ok:false: `upstream_unavailable` (no graph — `detail` says why) · `edge_fun_missing` (funs.json lacks a queue fun — `missing` names each) · `edge_ir_mismatch` · `budget` · `edge_solve_failed`. Never an empty queue in place of a reason",
      "type": "string"
    },
    "detail": {
      "type": "string"
    },
    "missing": {
      "description": "edge_fun_missing: each fun the edge cannot solve and codegen's reason (e.g. not on prod)",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "fun": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "fun",
          "reason"
        ]
      }
    }
  },
  "required": [
    "ok",
    "tasks"
  ]
}