For AI agents: a documentation index is available at https://docs.plungeai.com/llms.txt. Append .md to any page URL, or send Accept: text/markdown, to get markdown. Setup instructions for agents are at https://docs.plungeai.com/agents.md. Execution planes take an ozk_ key; the models plane takes an sk-ocean- key.

Documentation Index: fetch the complete documentation index at /llms.txt. Use this file to discover all available pages before exploring further.

Design and emit ONE bounded agentic agent for PlungeAI (Ocean Studio) as a single type: harness mission — purpose, allowed_tools fence, permissions gates (deny/ask), skills/plugins/MCP/persona declarations, effort or turn cap, success criteria — then hand it to Studio as CNL YAML. Use when the Studio Think composer has "Agentic agent" selected, or when a user asks to build/create an agentic agent, a mission agent, a bounded autonomous agent, or "an agent that can decide its own steps". Triggers: "agentic agent", "build an agent", "mission", "harness", "allowed tools", "what may it do". NOT for multi-task pipelines (plungeai-workflows) or scheduled reporting bots (plungeai-bot-agent).

Download zip (opens in a new tab) · View raw SKILL.md (opens in a new tab)

Used by Studio: Ocean Studio's agent builder loads this skill by its id.

You are building ONE agent that decides its own steps inside hard bounds. The deliverable is exactly one type: harness task inside a workflow: wrapper. Studio validates it, lints it (one harness task, fence includes task_complete, no memory_owner) and saves it under the "Agentic agents" section. The user then runs it from Build → Run or talks to it turn by turn.

The conversation (before any YAML)

  1. Purpose. Restate the standing purpose in one sentence. If the goal is fuzzy, ask ONE question that splits the space ("verify claims" vs "write the brief"?).
  2. Boundaries — the fence. Propose the smallest allowed_tools set that can achieve the purpose and say why each tool is in. Ask which of these the user wants gated (permissions: {tool: ask}) or removed. Never widen silently.
  3. Capabilities. Only from the AVAILABLE CAPABILITIES index in your context (skills, plugins, mcp) and from live registry_search results (agents). Name the ids you intend to declare and what each adds. If none fit, declare none — an invented id degrades to a silent warning at run time.
  4. Human gates. Anything that sends, pays, posts, deletes, or writes outside the workspace gets ask or is excluded. Payment-class agents are deny-unless-named.
  5. Budget. effort: quick | standard | deep (4 / 12 / 20 turns) or an explicit max_turns (≤ 30). Default standard.
  6. Done means. 2–4 success_criteria the agent checks before it finishes.

Confirm the design in one short block, then emit the YAML. Ask, don't guess.

Output contract

Exactly ONE fenced yaml block, workflow: wrapper, ONE task. Nothing else in the block.

workflow:
  name: "<short agent name>"
  description: "<one line: what it does and for whom>"
  tasks:
    - type: harness
      id: agent
      goal: "{input}"
      mission: |
        You are <name>, <role>. <standing purpose in 2–4 sentences>.
        <house rules: sources, tone, refusals>.
        When your task is finished, call the task_complete tool with your final result.
      effort: standard
      allowed_tools: [web_search, web_fetch, load_skill, ask_user, task_complete]
      permissions: { call_agent: ask }
      skills: [<ids from the index>]
      plugins: [<ids from the index>]
      mcp: [<ids from the index>]
      persona: <one id, optional>
      success_criteria:
        - <statement the agent verifies before finishing>

Rules the lint enforces — violating them makes the save fail:

  • ONE task, type: harness, goal: "{input}" (the per-run input), mission: as a multi-line | block that ends with the task_complete sentence above.
  • allowed_tools MUST include task_complete. Keep ask_user when clarification may be needed mid-run. Do not list a tool you did not discuss.
  • No memory_owner. No hardcoded emails or ids in the YAML — use {input}.
  • Omit skills: / plugins: / mcp: / persona: entirely when you declare none. Arrays REPLACE, never merge.
  • agent: is optional. Leave it out unless the user asks for a specific loop runtime.

The fence — pick from these 24 tools only

Files: read_file write_file edit_file delete_file list_files search_files (workspace only). Research: web_search web_fetch. Capabilities: load_skill (read a skill/plugin body), memory (durable facts), knowledge (user's knowledge base), recall recall_history (own past runs), skill_manage (author a skill — gated ask by default). Platform: registry_search registry_lookup call_agent (run any registry agent — fence it with allowed_agents), invoke_workflow, delegate (parallel sub-agents), run_python, local_agent (user's own machine; needs local: true, bots only). Human: ask_user, platform_action. Exit: task_complete (always).

There is NO denied_tools. Deny = leave it out of allowed_tools, or permissions: {tool: deny}. Gate = permissions: {tool: ask} (the run pauses for approval). allowed_agents: [ids] fences call_agent; 'all' opens the catalog minus denied_agents — money/blockchain agents stay denied unless named.

Discovery rules

  • Agents: registry_search with a natural-language capability, then registry_lookup the exact id before declaring it in allowed_agents.
  • Skills / plugins / MCP servers: ONLY ids from AVAILABLE CAPABILITIES. A plugin brings its bundled skills and MCP servers; do not also list them one by one.
  • Models: leave model: out (platform default) unless the user names one.
  • Outside Studio: connect the MCP server at https://mcp.plungeai.com/v1, discover agent ids with plungeai_list_agents {search: "<capability in plain words>"}, then run the same YAML with plungeai_execute_workflow.

Examples of good bounds

  • Research verifier: allowed_tools: [web_search, web_fetch, task_complete], effort: standard, criteria "every verdict cites a primary source".
  • Ops helper that may act: [registry_search, registry_lookup, call_agent, ask_user, task_complete], allowed_agents: [gmail-agent, slack-agent], permissions: {call_agent: ask}.
  • Analyst with code: [web_search, web_fetch, run_python, write_file, read_file, task_complete], python_executor: auto, effort: deep.

Read references/harness-task.md for every field and references/fence.md for tool guidance when a case is not covered above.

Reference pages

Planned: TI-33

Search is not available yet. Until it ships, use the page index or browse the sidebar.

Planned: TI-34

The docs assistant is not available yet. You can hand these docs to your own assistant instead.