Skip to content
C.W.K.
Stream
Lesson 01 of 04 · published

A Tool Is a Name, a Schema, and a Run

~12 min · tools, schema, admission

Level 0Cold Stick
0 XP0/41 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

The Loop Does Not Know What a Tool Is

The shipping surface is a short roster: read, write, edit, search, bash, job, note, ask, remember on cloud, and delegate. The loop never special-cases their souls. Assemble advertises schemas. Execute admits a call against the schema that request advertised, then hands a sequence number to a runner. Built-ins and optional MCP tools pass one gate. Vocabulary the schema does not declare is ignored — admission control, not a linter.

That clause was documented from the start and unenforced until a write without its required content created an empty file and reported success. Admission now records tool_call_invalid with a schema reason, writes no durable tool_call, and the correction tells the model which argument failed. A ready call is still the only execution authority.

Name plus schema plus run. A tool the loop understands as English is a tool the next dialect will misunderstand. A tool the record can replay is a tool.

Bounds Speak Out Loud

A bounded read streams a line window. When a scan budget runs short the result carries truncated and a lines_at_least lower bound — not an empty success. search names every file it skipped for size. A pattern that cannot be interrupted is refused before it starts. Silence is the lie these tools were written to stop.

Code

Admission sees the advertised schema, not a vibe·json
{
  "name": "write",
  "schema": {
    "type": "object",
    "required": ["path", "content"],
    "properties": {
      "path": {"type": "string"},
      "content": {"type": "string"}
    }
  }
}

External links

Exercise

Pick one tool in a harness you use. Write the required fields. Then write what happens today if the model omits one. If the answer is 'a file appears anyway,' you found the hole Firebrand closed.
Hint
The hole is usually a default that looks like success.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.