Skip to main content
Glama

lore_resume

Destructive

Resume interrupted lore, novel, or webtoon workflows by answering pending model questions; the original run continues from its saved checkpoint.

Instructions

status=needs_model 로 중단된 작업을 이어받는다. requests 의 각 질문에 답한 텍스트를 answers 에 { id: 답변 } 형태로 넘기면 중단 지점부터 계속한다. 한 응답의 requests는 서로 독립이므로 모두 답해 한 번에 넘긴다. 원래 도구를 처음 받은 인자 그대로 다시 실행하므로 인자를 바꾸려면 원래 도구를 새로 호출한다. 재개된 도구의 부작용(저장·교체·커밋)을 그대로 가진다. 다음 단계에 새 모델 작업이 필요하면 새 requests와 함께 needs_model을 다시 돌려주므로 여러 번 이어지는 것이 정상이다. 빈 answers나 맞지 않는 id는 작업을 끝내지 않고 같은 requests를 다시 돌려준다. runId는 첫 생성 후 24시간 뒤 만료되고 완료되면 삭제된다. 답을 멈추면 소설·설계 도구는 needs_model 응답의 deterministicResult가 유일한 결과이고(lore_write는 멈춘 workflow 식별 정보뿐이며 awaiting_model로 남는다), 웹툰은 같은 단계에서 대기하며 lore_workflow_status(lane=webtoon)로 확인한다.

Input Schema

NameRequiredDescriptionDefault
runIdYesneeds_model 응답의 runId(run-…). lore_write의 runId를 잃었으면 lore_workflow_status의 resume.runId로 찾는다.
workIdNo작품 식별자 ([A-Za-z0-9_-]). 한 디렉터리에는 작품 하나만 둔다.
answersNo{ 질문 id: 모델이 만든 답변 텍스트 }. 이전 라운드에 보낸 답은 저장돼 있으므로 새 질문만 보내면 된다. jsonMode 요청은 코드 펜스 없는 순수 JSON으로 답한다.
projectNo작품 디렉터리의 절대 경로. 생략하면 서버 실행 디렉터리.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.4.8
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "deterministicResult": {
      +          "type": "object"
      +        },
      +        "instruction": {
      +          "type": "string"
      +        },
      +        "requests": {
      +          "items": {
      +            "properties": {
      +              "id": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "jsonMode": {
      +                "type": "boolean"
      +              },
      +              "promptCache": {
      +                "type": "object"
      +              },
      +              "step": {
      +                "type": "string"
      +              },
      +              "system": {
      +                "type": "string"
      +              },
      +              "user": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "system",
      +              "user"
      +            ],
      +            "type": "object"
      +          },
      +          "minItems": 1,
      +          "type": "array"
      +        },
      +        "runId": {
      +          "minLength": 5,
      +          "pattern": "^run-",
      +          "type": "string"
      +        },
      +        "sharedBlocks": {
      +          "items": {
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "enum": [
      +            "needs_model"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "runId",
      +        "requests"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "properties": {
      +        "code": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "nextAction": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "retryable": {
      +          "type": "boolean"
      +        },
      +        "status": {
      +          "enum": [
      +            "error"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "code",
      +        "message",
      +        "retryable",
      +        "nextAction"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "not": {
      +        "properties": {
      +          "status": {
      +            "enum": [
      +              "needs_model",
      +              "error"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "properties": {
      +        "status": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "description": "needs_model은 runId와 requests를 반환한다. 완료 응답은 원래 도구의 설계·집필·웹툰 결과이며 error는 구조화 오류다.",
      +  "type": "object"
      +}
  2. Changed3 schema fields changedv0.4.4
    • changedInput schema / properties / answers / description
      Previous value: -"{ 질문 id: 모델이 만든 답변 텍스트 }"New value: +"{ 질문 id: 모델이 만든 답변 텍스트 }. 이전 라운드에 보낸 답은 저장돼 있으므로 새 질문만 보내면 된다. jsonMode 요청은 코드 펜스 없는 순수 JSON으로 답한다."
    • addedInput schema / properties / runId / description
      Added value: +"needs_model 응답의 runId(run-…). lore_write의 runId를 잃었으면 lore_workflow_status의 resume.runId로 찾는다."
    • changedInput schema / properties / workId / description
      Previous value: -"작품 식별자 ([A-Za-z0-9_-])."New value: +"작품 식별자 ([A-Za-z0-9_-]). 한 디렉터리에는 작품 하나만 둔다."
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare destructiveHint=true and non-idempotent, but the description goes well beyond them: it discloses that side effects (save/replace/commit) of the resumed tool are carried over, retry semantics for empty or mismatched-id answers, 24-hour runId expiry, deletion on completion, and the deterministicResult fallback when answers stop. This is unusually rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single dense paragraph, but it is front-loaded with the core action and each subsequent sentence addresses a distinct operational concern (batching, argument immutability, side effects, continuation, error handling, expiry, fallback). For a complex multi-round workflow tool, the length is largely justified, though it could be structured into clearer segments.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description still covers the full round-trip lifecycle: input format, continuation loop, failure/retry behavior, expiry, and what state remains if the agent stops. Nothing an agent needs to invoke this correctly across multiple rounds is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents runId, workId, answers and project, making the baseline a 3. The description adds genuine meaning for answers: batch-pass semantics across independent requests, that prior-round answers are stored, and the jsonMode no-code-fence requirement, which is more than restating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'status=needs_model 로 중단된 작업을 이어받는다' specifies a concrete verb (resume) and the exact precondition (needs_model status), clearly distinguishing it from siblings like lore_write that initiate work. An agent can identify this as the continuation counterpart to the workflow-starting tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use it (resuming a needs_model-halted task), how to supply answers, that multiple requests are independent and must be answered in one batch, and routing to lore_workflow_status to recover a lost runId. It also explains the alternative behavior when you decline to answer, which is explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.