이 MCP로 할 수 있는 일
Builds, versions, reviews, deploys, shares, and coordinates work on websites, web applications, and games through project workflows.
도구
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'approval'], 'properties': {'approval': {'type': 'string', 'const': 'USE_TWOOLS', 'description': 'Explicit confirmation from the person to use 2ools for this project.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Exact readable 2ools project ID.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'change'], 'properties': {'change': {'oneOf': [{'type': 'object', 'required': ['action', 'assignment_id', 'expected_revision', 'answer', 'idempotency_key', 'confirm'], 'properties': {'action': {'type': 'string', 'const': 'answer'}, 'answer': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'reason': {'type': 'string', 'default': 'Answered from the native Project OS panel.', 'maxLength': 2000}, 'confirm': {'type': 'boolean', 'const': True}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}, {'type': 'object', 'required': ['action', 'assignment_id', 'expected_revision', 'reason', 'idempotency_key', 'confirm'], 'properties': {'action': {'enum': ['park', 'continue'], 'type': 'string'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'confirm': {'type': 'boolean', 'const': True}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}, {'type': 'object', 'required': ['action', 'assignment_id', 'expected_revision', 'reason', 'idempotency_key', 'confirm'], 'properties': {'action': {'type': 'string', 'const': 'cancel'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'confirm': {'type': 'boolean', 'const': True}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}]}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'version_id', 'comment', 'idempotency_key'], 'properties': {'x': {'type': 'number', 'default': 50, 'maximum': 100, 'minimum': 0, 'description': 'Horizontal position as a percentage.'}, 'y': {'type': 'number', 'default': 50, 'maximum': 100, 'minimum': 0, 'description': 'Vertical position as a percentage.'}, 'page': {'type': 'string', 'default': 'Home', 'maxLength': 120, 'minLength': 1}, 'label': {'type': 'string', 'default': '', 'maxLength': 120}, 'comment': {'type': 'string', 'maxLength': 600, 'minLength': 1}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated retry key. Reusing it returns the original feedback item.'}, 'reply_to_feedback_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Root feedback ID to reply to. Replies inherit the root pin position and cannot be nested.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'kind', 'idempotency_key'], 'properties': {'x': {'type': 'number', 'default': 0.5, 'maximum': 1, 'minimum': 0}, 'y': {'type': 'number', 'default': 0.5, 'maximum': 1, 'minimum': 0}, 'url': {'type': 'string', 'format': 'uri', 'maxLength': 2000}, 'kind': {'enum': ['note', 'link'], 'type': 'string'}, 'label': {'type': 'string', 'default': '', 'maxLength': 200}, 'surface': {'enum': ['chrome', 'preview'], 'type': 'string', 'default': 'chrome'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated retry key. Reusing it returns the original pin.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Exact project whose saved Agent Mode should advance.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'decision_id', 'expected_revision', 'answer', 'note', 'idempotency_key', 'confirm'], 'properties': {'note': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'Durable human rationale recorded in the canonical decision history.'}, 'answer': {'oneOf': [{'type': 'object', 'required': ['kind', 'choice'], 'properties': {'kind': {'type': 'string', 'const': 'choice'}, 'choice': {'enum': ['accept', 'reject'], 'type': 'string'}}}, {'type': 'object', 'required': ['kind', 'choices'], 'properties': {'kind': {'type': 'string', 'const': 'multi'}, 'choices': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 20, 'minItems': 1}}}, {'type': 'object', 'required': ['kind', 'text'], 'properties': {'kind': {'type': 'string', 'const': 'freeform'}, 'text': {'type': 'string', 'maxLength': 5000, 'minLength': 1}}}]}, 'confirm': {'type': 'boolean', 'const': True, 'description': 'Explicit confirmation that this durable engineering decision should be recorded.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'risk_level': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Optional chosen risk classification; high-risk decisions require the project owner.'}, 'decision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'supersedes_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_id'], 'properties': {'note': {'type': 'string', 'maxLength': 2000}, 'request_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'version_id', 'confirmation'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project containing the candidate version.'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Saved candidate version to approve.'}, 'confirmation': {'type': 'string', 'const': 'APPROVE', 'description': 'Explicit approval confirmation.'}, 'decision_note': {'type': 'string', 'default': '', 'maxLength': 2000, 'description': 'Optional review note stored with the delegated decision.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'engine_id', 'workspace_id', 'expected_revision', 'confirm'], 'properties': {'confirm': {'type': 'boolean', 'const': True, 'description': 'Required explicit confirmation after showing the exact computer and workspace.'}, 'engine_id': {'type': 'string', 'pattern': '^engine_[A-Za-z0-9_-]{16,32}$', 'description': 'Exact opaque Engine identity returned by list_connected_engines.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Exact owned project to attach.'}, 'workspace_id': {'type': 'string', 'pattern': '^workspace_[A-Za-z0-9_-]{16,64}$', 'description': 'Exact opaque workspace identity returned for that Engine.'}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Revision returned by get_project_engine_workspace. Use 0 only when no workspace is attached.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_name', 'conversation_summary', 'idempotency_key'], 'properties': {'model': {'enum': ['studio', 'openai', 'claude', 'gemini', 'grok'], 'type': 'string', 'default': 'studio', 'description': 'Generation engine. studio is keyless; other models require an available account provider or linked Engine.'}, 'pages': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'default': ['Home'], 'maxItems': 8, 'minItems': 1, 'description': 'Pages to generate. Use Home for a one-page site or widget.'}, 'entity': {'type': 'object', 'properties': {'name': {'type': 'string', 'maxLength': 200, 'description': 'Exact person, business, product, or project name.'}, 'category': {'type': 'string', 'maxLength': 200, 'description': 'Entity category, such as musician, restaurant, or SaaS.'}, 'source_url': {'type': 'string', 'format': 'uri', 'maxLength': 2000, 'description': 'Optional source URL supplied by the user.'}, 'description': {'type': 'string', 'maxLength': 5000, 'description': 'Grounded description; omit unsupported claims.'}}, 'description': 'Grounded identity facts that must survive the build.'}, 'audience': {'type': 'string', 'maxLength': 1000, 'description': 'Primary audience and the job they need to complete.'}, 'headline': {'type': 'string', 'maxLength': 140, 'minLength': 1, 'description': 'Exact hero headline to preserve verbatim in the generated site.'}, 'project_name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Short name for the new 2ools project.'}, 'requirements': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 20, 'description': 'Concrete functionality, content, and section requirements.'}, 'output_target': {'enum': ['web', 'game', 'tauri', 'electron', 'widget', 'float', 'freeform'], 'type': 'string', 'default': 'web', 'description': 'Delivery target: site, browser game, desktop wrapper, embeddable component, floating overlay, or standalone HTML.'}, 'max_iterations': {'type': 'integer', 'default': 6, 'maximum': 12, 'minimum': 1, 'description': 'Hard project cap for later outside-agent child revisions. Defaults to 6 and cannot exceed 12.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated unique key. Reusing it returns the original project/job instead of creating a duplicate.'}, 'visual_direction': {'type': 'string', 'maxLength': 2000, 'description': 'Desired visual character, composition, color, typography, or references.'}, 'creative_system_id': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Optional account-created creative system ID returned by list_build_systems. Omit for private 2ools selection.'}, 'operating_rules_id': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Optional account-created operating rules ID returned by list_build_systems. Omit for private 2ools selection.'}, 'content_constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 20, 'description': 'Claims, wording, exclusions, or fidelity constraints the build must obey.'}, 'conversation_summary': {'type': 'string', 'maxLength': 12000, 'minLength': 1, 'description': 'Factual build brief distilled from the conversation, including the intended artifact and key decisions.'}, 'create_separate_project': {'type': 'boolean', 'default': False, 'description': "Set true only when the person explicitly wants a distinct project that intentionally shares an existing project's name. Changing AI providers is not a reason."}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'agent_id', 'run_id', 'job_id', 'confirm'], 'properties': {'job_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Agent job ID returned by run_project_agent.'}, 'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Agent run ID returned by run_project_agent.'}, 'confirm': {'type': 'boolean', 'const': True, 'description': 'Confirms the person explicitly chose to stop this exact run.'}, 'agent_id': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'minLength': 8, 'description': 'Agent that owns the run.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project the Agent run belongs to.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id', 'reason', 'confirm'], 'properties': {'job_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Build job ID returned by build_from_conversation.'}, 'reason': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'Why this exact build should be canceled; stored in the audit receipt.'}, 'confirm': {'type': 'boolean', 'const': True, 'description': 'Explicit confirmation to cancel this exact job_id.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'checkpoint', 'idempotency_key'], 'properties': {'reason': {'type': 'string', 'maxLength': 2000}, 'checkpoint': {'type': 'string', 'maxLength': 5000, 'minLength': 1}, 'session_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'used_steps': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'disposition': {'enum': ['continue', 'waiting', 'blocked'], 'type': 'string', 'default': 'continue'}, 'model_calls': {'type': 'integer', 'maximum': 10000000, 'minimum': 0}, 'waiting_for': {'type': 'string', 'maxLength': 500}, 'effect_state': {'enum': ['pre_effect', 'effect_committed', 'outcome_unknown'], 'type': 'string', 'default': 'pre_effect'}, 'input_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}, 'output_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'used_spend_cents': {'type': 'integer', 'maximum': 1000000, 'minimum': 0}, 'cached_input_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['assignment_id', 'idempotency_key'], 'properties': {'input_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['builder_version', 'artifact_version', 'project', 'url', 'test_run', 'audit_event', 'commit'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'maxLength': 100}}}, 'default': [], 'maxItems': 40}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 8}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'left_version_id', 'right_version_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project containing both versions.'}, 'left_version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Earlier or baseline version ID.'}, 'right_version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Later or candidate version ID.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'enabled', 'expected_revision', 'idempotency_key', 'confirm'], 'properties': {'confirm': {'type': 'boolean', 'const': True, 'description': 'Confirms this project-wide coordination change and exact runner destination.'}, 'enabled': {'type': 'boolean', 'description': 'Whether Agent Mode should keep advancing approved safe work.'}, 'agent_id': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'minLength': 8, 'description': 'Armed Agent assigned to this project. Required when enabling.'}, 'provider': {'enum': ['openai', 'claude', 'gemini', 'grok'], 'type': 'string', 'description': 'Authenticated provider on the selected Engine. Required when enabling.'}, 'engine_id': {'type': 'string', 'pattern': '^engine_[A-Za-z0-9_-]{16,32}$', 'description': 'Exact connected Engine. Required when enabling.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Exact project to coordinate.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Stable operation key reused only when recovering this exact configuration change.'}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Exact Agent Mode revision shown to the person. Use 0 before the first configuration.'}, 'include_approved_plan': {'type': 'boolean', 'default': True, 'description': 'Compatibility flag. Agent Mode remains limited to steps already reviewed as safe-auto.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Readable 2ools project ID.'}, 'response_format': {'enum': ['summary', 'markdown'], 'type': 'string', 'default': 'summary'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'html', 'idempotency_key'], 'properties': {'html': {'type': 'string', 'maxLength': 200000, 'minLength': 80, 'description': 'Complete standalone HTML document beginning with <!doctype html> or <html>, including its CSS and JavaScript.'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Short public preview name.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated retry key. Reuse returns the same preview instead of storing a duplicate.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'version_id', 'access', 'idempotency_key'], 'properties': {'page': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'access': {'enum': ['public', 'code'], 'type': 'string'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'title', 'brief', 'idempotency_key'], 'properties': {'brief': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'due_at': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$'}, 'goal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Active Mission Goal. Required automatically when the project has an active Mission.'}, 'priority': {'enum': ['low', 'normal', 'high', 'urgent'], 'type': 'string', 'default': 'normal'}, 'max_steps': {'type': 'integer', 'default': 50, 'maximum': 500, 'minimum': 1}, 'max_tokens': {'type': 'integer', 'default': 250000, 'maximum': 10000000, 'minimum': 1000}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'max_minutes': {'type': 'integer', 'default': 30, 'maximum': 1440, 'minimum': 1}, 'dependency_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'default': [], 'maxItems': 40}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'max_spend_cents': {'type': 'integer', 'default': 0, 'maximum': 1000000, 'minimum': 0}, 'output_surfaces': {'type': 'array', 'items': {'enum': ['code', 'ui', 'artifact', 'test', 'api', 'deploy'], 'type': 'string'}, 'default': [], 'maxItems': 6}, 'continuation_mode': {'enum': ['manual', 'safe_auto'], 'type': 'string', 'default': 'manual'}, 'acceptance_criteria': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 20}, 'quality_gate_policy': {'type': 'object', 'properties': {'expected_routes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'required_checks': {'type': 'array', 'items': {'enum': ['build', 'typecheck', 'lint', 'tests', 'browser_smoke', 'responsive_layout', 'overflow_overlap', 'contrast_focus', 'screenshot_evidence', 'artifact_evidence', 'route_reachability', 'console_runtime', 'truth_fixture'], 'type': 'string'}, 'maxItems': 13}, 'max_evidence_age_minutes': {'type': 'integer', 'maximum': 43200, 'minimum': 5}, 'human_visual_review_required': {'type': 'boolean'}}}, 'required_evidence_kinds': {'type': 'array', 'items': {'enum': ['builder_version', 'artifact_version', 'project', 'test_run', 'audit_event'], 'type': 'string'}, 'default': [], 'maxItems': 5}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['assignment_id', 'decision', 'idempotency_key'], 'properties': {'note': {'type': 'string', 'maxLength': 2000}, 'decision': {'enum': ['completed', 'reopened'], 'type': 'string'}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 8}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'assignment_id', 'expected_revision', 'agent_id', 'engine_id', 'provider', 'protocol', 'idempotency_key', 'confirm'], 'properties': {'note': {'type': 'string', 'maxLength': 4000, 'description': 'Optional owner direction that narrows this run without changing the saved task or Agent Limits.'}, 'confirm': {'type': 'boolean', 'const': True, 'description': 'Confirms the person explicitly chose this task, Agent, computer, and provider.'}, 'agent_id': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'minLength': 8, 'description': 'Already-tested, armed Agent assigned to this project.'}, 'protocol': {'type': 'string', 'const': 'agent-v1', 'description': 'Exact governed Agent protocol advertised by the selected Engine.'}, 'provider': {'enum': ['openai', 'claude', 'gemini', 'grok'], 'type': 'string', 'description': 'Exact authenticated provider CLI available on the selected Engine.'}, 'engine_id': {'type': 'string', 'pattern': '^engine_[A-Za-z0-9_-]{16,32}$', 'description': 'Exact online Engine selected from list_connected_engines.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project that owns both the task and Agent.'}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Exact open Project OS task to run.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated stable key. Reuse returns the same dispatch and cannot duplicate work.'}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Task revision shown to the person. A stale revision is refused.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['agent_id'], 'properties': {'agent_id': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'minLength': 8, 'description': '2ools Agent ID.'}, 'run_limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum recent runs to include.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'artifact_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Build job ID returned by build_from_conversation.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Dispatch job ID returned by start_project_on_engine.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': '2ools project ID.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'limit': {'type': 'integer', 'default': 40, 'maximum': 100, 'minimum': 1, 'description': 'Maximum activity items to return.'}, 'cursor': {'type': 'string', 'maxLength': 1000, 'description': 'Opaque next_cursor from a prior response.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': '2ools project ID.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Exact 2ools project.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': '2ools project ID.'}, 'include_governance_text': {'type': 'boolean', 'default': True, 'description': 'Deprecated compatibility flag. It is accepted but ignored; private operating text is never returned.'}, 'include_project_input_files': {'type': 'boolean', 'default': False, 'description': 'Include sanitized observed file contents from the latest explicit project input. Default false keeps the operating packet compact; manifest facts and provenance are always returned.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Exact saved 2ools project.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'view': {'enum': ['contract', 'goals', 'templates', 'scope_changes', 'history'], 'type': 'string', 'default': 'contract'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'cursor': {'type': 'string', 'maxLength': 120}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'job_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Job ID returned by dispatch_project_work.'}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Saved Project OS task ID, used to rediscover its latest governed Engine run after app relaunch.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Original dispatch key, used to recover a receipt after an interrupted response.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['assignment_id'], 'properties': {'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'version_id'], 'properties': {'page': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['assignment_id'], 'properties': {'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'checkpoint': {'type': 'string', 'maxLength': 5000}, 'session_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'used_steps': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'model_calls': {'type': 'integer', 'maximum': 10000000, 'minimum': 0}, 'effect_state': {'enum': ['pre_effect', 'effect_committed'], 'type': 'string'}, 'input_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}, 'output_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}, 'handoff_reason': {'type': 'string', 'maxLength': 2000}, 'request_handoff': {'type': 'boolean'}, 'used_spend_cents': {'type': 'integer', 'maximum': 1000000, 'minimum': 0}, 'cached_input_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}, 'context_signal_kind': {'enum': ['provider_reported', 'estimated', 'explicit', 'user_request', 'recovery'], 'type': 'string'}, 'context_signal_label': {'type': 'string', 'maxLength': 200}, 'handoff_idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'remaining_context_tokens': {'type': 'integer', 'maximum': 10000000, 'minimum': 0}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'identity'], 'properties': {'role': {'enum': ['collaborator', 'viewer'], 'type': 'string', 'default': 'collaborator'}, 'identity': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Existing 2ools username or invitee email address.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Optional same-project version for activation attribution.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum approval requests to return.'}, 'status': {'enum': ['pending', 'approved', 'rejected', 'all'], 'type': 'string', 'default': 'pending', 'description': 'Review-request status to return.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'status': {'enum': ['pending', 'approved', 'rejected'], 'type': 'string', 'default': 'pending'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'output_target': {'enum': ['web', 'game', 'tauri', 'electron', 'widget', 'float', 'freeform'], 'type': 'string', 'description': 'Optional target filter. Omit to list every compatible system available to the account.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Readable 2ools project ID.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'state': {'enum': ['pending', 'resolved', 'all'], 'type': 'string', 'default': 'pending'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': '2ools project ID.'}, 'include_resolved': {'type': 'boolean', 'default': False, 'description': 'Include feedback already marked resolved.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum projects to return.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'status': {'enum': ['open', 'in_progress', 'review', 'waiting', 'blocked', 'completed', 'canceled'], 'type': 'string'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'change'], 'properties': {'change': {'oneOf': [{'type': 'object', 'required': ['action', 'category', 'question', 'decision', 'rationale', 'request_key', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'propose_decision'}, 'goal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'category': {'enum': ['architecture', 'cost', 'security', 'reliability', 'scope', 'product'], 'type': 'string'}, 'decision': {'type': 'string', 'maxLength': 5000, 'minLength': 1}, 'question': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'rationale': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'risk_level': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'default': 'medium', 'description': 'Advisory proposed impact. It never weakens permission or approval policy.'}, 'constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'request_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'alternatives': {'type': 'array', 'items': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'default': [], 'maxItems': 20}, 'evidence_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['version', 'artifact', 'artifact_version', 'project', 'audit_event', 'test_run', 'url', 'commit'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}, 'default': [], 'maxItems': 40}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'goal_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}, {'type': 'object', 'required': ['action', 'key', 'name', 'expected_revision', 'input', 'expected_behavior', 'idempotency_key'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z0-9]+(?:[-_][a-z0-9]+)*$', 'maxLength': 80, 'minLength': 1}, 'kind': {'enum': ['ai_behavior', 'retrieval', 'agent', 'tool_output'], 'type': 'string', 'default': 'ai_behavior'}, 'name': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'input': {'type': 'string', 'maxLength': 25000, 'minLength': 1}, 'action': {'type': 'string', 'const': 'save_eval_case'}, 'reason': {'type': 'string', 'default': '', 'maxLength': 2000}, 'rubric': {'type': 'array', 'items': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'default': [], 'maxItems': 50}, 'error_taxonomy': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 50}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'expected_behavior': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['action', 'eval_case_revision_id', 'provider', 'model', 'prompt_fingerprint', 'artifact_fingerprint', 'environment_fingerprint', 'status', 'run_key', 'idempotency_key'], 'properties': {'model': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'score': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'action': {'type': 'string', 'const': 'record_eval_run'}, 'status': {'enum': ['passed', 'failed', 'error'], 'type': 'string'}, 'run_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'provider': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'actual_output': {'type': 'string', 'default': '', 'maxLength': 50000}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'evidence_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['version', 'artifact', 'artifact_version', 'project', 'audit_event', 'test_run', 'url', 'commit'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}, 'default': [], 'maxItems': 40}, 'error_analysis': {'type': 'string', 'default': '', 'maxLength': 10000}, 'error_category': {'type': 'string', 'default': '', 'maxLength': 160}, 'rubric_results': {'type': 'array', 'items': {}, 'default': [], 'maxItems': 100}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'regression_status': {'enum': ['none', 'baseline', 'new_regression', 'known_failure', 'fixed', 'pass'], 'type': 'string', 'default': 'none'}, 'prompt_fingerprint': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'quality_gate_run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'artifact_fingerprint': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'eval_case_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'environment_fingerprint': {'type': 'string', 'maxLength': 300, 'minLength': 1}}}, {'type': 'object', 'required': ['action', 'key', 'name', 'description', 'kind', 'expected_revision', 'instructions', 'idempotency_key'], 'properties': {'key': {'type': 'string', 'pattern': '^[a-z0-9]+(?:[-_][a-z0-9]+)*$', 'maxLength': 80, 'minLength': 1}, 'kind': {'enum': ['manual', 'command_receipt', 'ci_check', 'mcp_tool', 'quality_check'], 'type': 'string'}, 'name': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'action': {'type': 'string', 'const': 'save_verifier'}, 'config': {'type': 'object', 'default': {}, 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'reason': {'type': 'string', 'default': '', 'maxLength': 2000}, 'description': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'instructions': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'timeout_seconds': {'type': 'integer', 'default': 300, 'maximum': 3600, 'minimum': 5}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'supported_surfaces': {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'default': [], 'maxItems': 20}, 'required_evidence_kinds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'default': [], 'maxItems': 30}}}, {'type': 'object', 'required': ['action', 'assignment_id', 'quality_gate_run_id', 'verifier_revision_id', 'status', 'summary', 'run_key', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'record_verifier_run'}, 'status': {'enum': ['passed', 'failed', 'blocked', 'error'], 'type': 'string'}, 'details': {'type': 'object', 'default': {}, 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'run_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'summary': {'type': 'string', 'maxLength': 5000, 'minLength': 1}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'evidence_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['version', 'artifact', 'artifact_version', 'project', 'audit_event', 'test_run', 'url', 'commit'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}, 'default': [], 'maxItems': 40}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'quality_gate_run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'verifier_revision_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}]}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'change'], 'properties': {'change': {'oneOf': [{'type': 'object', 'required': ['action', 'enabled', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'configure'}, 'policy': {'type': 'object', 'properties': {'quiet_hours': {'anyOf': [{'type': 'object', 'required': ['start', 'end', 'timezone'], 'properties': {'end': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$'}, 'start': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$'}, 'timezone': {'type': 'string', 'maxLength': 100, 'minLength': 1}}}, {'type': 'null'}]}, 'max_concurrency': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'max_blind_minutes': {'type': 'integer', 'maximum': 1440, 'minimum': 1}, 'notification_mode': {'enum': ['meaningful', 'off'], 'type': 'string'}, 'max_recovery_attempts': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'question_refresh_minutes': {'type': 'integer', 'maximum': 10080, 'minimum': 5}}}, 'reason': {'type': 'string', 'default': '', 'maxLength': 1000}, 'enabled': {'type': 'boolean'}, 'grace_minutes': {'type': 'integer', 'maximum': 1440, 'minimum': 1}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}}}, {'type': 'object', 'required': ['action', 'assignment_id', 'expected_revision', 'idempotency_key'], 'properties': {'action': {'enum': ['pause', 'park', 'resume', 'reprioritize'], 'type': 'string'}, 'reason': {'type': 'string', 'default': '', 'maxLength': 2000}, 'priority': {'enum': ['low', 'normal', 'high', 'urgent'], 'type': 'string'}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}]}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'artifact_id', 'artifact_version_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'artifact_version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'kind', 'name', 'filename', 'media_type', 'byte_size', 'sha256'], 'properties': {'kind': {'enum': ['site', 'widget', 'freeform', 'document', 'pdf', 'presentation', 'spreadsheet', 'image', 'archive', 'message', 'dataset', 'file'], 'type': 'string'}, 'name': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'sha256': {'type': 'string', 'pattern': '^[a-fA-F0-9]{64}$'}, 'filename': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'byte_size': {'type': 'integer', 'maximum': 10000000, 'exclusiveMinimum': 0}, 'media_type': {'type': 'string', 'maxLength': 200, 'minLength': 3}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'artifact_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Existing artifact to version. Omit when creating a new artifact.'}, 'review_note': {'type': 'string', 'maxLength': 2000}, 'parent_version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Required latest version id when updating an existing artifact.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'version_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'idempotency_key'], 'properties': {'reason': {'type': 'string', 'maxLength': 2000}, 'session_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'signal_kind': {'enum': ['provider_reported', 'estimated', 'explicit', 'user_request', 'recovery'], 'type': 'string', 'default': 'explicit'}, 'signal_label': {'type': 'string', 'maxLength': 200}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'request_handoff': {'type': 'boolean', 'default': True}, 'remaining_context_tokens': {'type': 'integer', 'maximum': 10000000, 'minimum': 0}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'base_version_id', 'feedback', 'idempotency_key'], 'properties': {'model': {'enum': ['studio', 'openai', 'claude', 'gemini', 'grok'], 'type': 'string', 'default': 'studio', 'description': 'Generation engine for this child revision. Studio safely preserves the parent but cannot apply substantive edits; choose an AI model or linked Engine for real revisions.'}, 'feedback': {'type': 'string', 'maxLength': 5000, 'minLength': 1, 'description': 'Specific requested changes. Requirements not explicitly changed remain in force.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project containing the saved base version.'}, 'base_version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Authoritative saved version to use as the parent and current source.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Unique retry key. Reuse returns the original revision job without consuming another iteration.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Readable 2ools project ID already open in the MCP App.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_name', 'goal', 'current_state', 'next_step', 'approval', 'idempotency_key'], 'properties': {'goal': {'type': 'string', 'maxLength': 8000, 'minLength': 1, 'description': 'Approved outcome or mission for the existing project.'}, 'approval': {'type': 'string', 'const': 'REGISTER', 'description': 'Explicit confirmation that the person approved this proposed record.'}, 'decisions': {'type': 'array', 'items': {'type': 'string', 'maxLength': 400, 'minLength': 1}, 'default': [], 'maxItems': 20, 'description': 'Approved decisions that future work must preserve.'}, 'next_step': {'type': 'string', 'maxLength': 1500, 'minLength': 1, 'description': 'Approved next useful step.'}, 'project_name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Approved project name.'}, 'current_state': {'type': 'string', 'maxLength': 8000, 'minLength': 1, 'description': 'Approved factual summary of where the project stands now.'}, 'output_target': {'enum': ['web', 'game', 'tauri', 'electron', 'widget', 'float', 'freeform'], 'type': 'string', 'default': 'freeform', 'description': 'What the existing project ultimately produces; use freeform when it is not a build artifact.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated unique key. Reusing it returns the original project instead of creating a duplicate.'}, 'existing_project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Known canonical project ID from list_projects or a Project OS URL. Passing it prevents creation and reuses that exact accessible project.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['request_id', 'note'], 'properties': {'note': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'request_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'version_id', 'confirmation', 'decision_note'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project containing the candidate version.'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Saved candidate version to reject.'}, 'confirmation': {'type': 'string', 'const': 'REJECT', 'description': 'Explicit rejection confirmation.'}, 'decision_note': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'Review feedback explaining what the next child revision should change.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'member_id', 'confirm'], 'properties': {'confirm': {'type': 'boolean', 'const': True, 'description': 'Explicit confirmation to remove this exact member from this exact project.'}, 'member_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'pin_id'], 'properties': {'pin_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'version_id'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project containing the saved version.'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Saved version to display.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'feedback_id'], 'properties': {'resolved': {'type': 'boolean', 'default': True}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'feedback_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'change'], 'properties': {'change': {'oneOf': [{'type': 'object', 'required': ['action', 'revision', 'expected_revision', 'reason', 'confirm', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'restore_mission'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'confirm': {'type': 'boolean', 'const': True}, 'revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}, {'type': 'object', 'required': ['action', 'goal_id', 'restore_revision', 'expected_revision', 'reason', 'confirm', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'restore_goal'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'confirm': {'type': 'boolean', 'const': True}, 'goal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'restore_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}, {'type': 'object', 'required': ['action', 'revision', 'expected_stack_revision', 'reason', 'confirm', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'restore_stack'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'confirm': {'type': 'boolean', 'const': True}, 'revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_stack_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}, {'type': 'object', 'required': ['action', 'scope_change_id', 'decision', 'reason', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'decide_scope_change'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'decision': {'enum': ['accepted', 'deferred', 'rejected'], 'type': 'string'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'scope_change_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}, {'type': 'object', 'required': ['action', 'goal_id', 'request_key', 'criteria_results', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'review_completion'}, 'reason': {'type': 'string', 'default': '', 'maxLength': 2000}, 'goal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'request_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'evidence_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['builder_version', 'artifact_version', 'project', 'test_run', 'audit_event'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'maxLength': 100}}}, 'default': [], 'maxItems': 40}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'criteria_results': {'type': 'array', 'items': {'type': 'object', 'required': ['criterion', 'passed'], 'properties': {'note': {'type': 'string', 'default': '', 'maxLength': 1000}, 'passed': {'type': 'boolean'}, 'criterion': {'type': 'string', 'maxLength': 500, 'minLength': 1}}}, 'maxItems': 30}}}]}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['invite_id', 'confirm'], 'properties': {'confirm': {'type': 'boolean', 'const': True, 'description': 'Explicit confirmation to revoke this exact invitation.'}, 'invite_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'version_id', 'idempotency_key'], 'properties': {'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'version_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'agent_id', 'task', 'model', 'idempotency_key'], 'properties': {'task': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': "Concrete task for this run. This cannot widen the Agent's saved tools, folders, network, send, change, or spend authority."}, 'model': {'enum': ['openai', 'claude', 'gemini', 'grok'], 'type': 'string', 'description': "CLI model available through the account's online Engine."}, 'agent_id': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 64, 'minLength': 8, 'description': 'Already-armed 2ools Agent ID.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Project this Agent is assigned to.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated unique key. Reusing it returns the original run instead of starting another.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['change'], 'properties': {'change': {'oneOf': [{'type': 'object', 'required': ['action', 'assignment_id', 'expected_revision', 'artifact_fingerprint', 'environment_fingerprint', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'begin'}, 'assignment_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'route_fingerprint': {'type': 'string', 'maxLength': 300}, 'artifact_fingerprint': {'type': 'string', 'maxLength': 300, 'minLength': 1}, 'environment_fingerprint': {'type': 'string', 'maxLength': 300, 'minLength': 1}}}, {'type': 'object', 'required': ['action', 'run_id', 'check_results'], 'properties': {'action': {'type': 'string', 'const': 'complete'}, 'run_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'findings': {'type': 'array', 'items': {'type': 'object', 'required': ['severity', 'check', 'affected_surface', 'affected_state', 'summary', 'next_action'], 'properties': {'check': {'enum': ['build', 'typecheck', 'lint', 'tests', 'browser_smoke', 'responsive_layout', 'overflow_overlap', 'contrast_focus', 'screenshot_evidence', 'artifact_evidence', 'route_reachability', 'console_runtime', 'truth_fixture'], 'type': 'string'}, 'summary': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'severity': {'enum': ['low', 'medium', 'high', 'critical'], 'type': 'string'}, 'next_action': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'evidence_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['builder_version', 'artifact_version', 'project', 'url', 'test_run', 'audit_event', 'commit'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'maxLength': 100}}}, 'default': [], 'maxItems': 40}, 'affected_state': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'affected_surface': {'type': 'string', 'maxLength': 300, 'minLength': 1}}}, 'default': [], 'maxItems': 100}, 'check_results': {'type': 'array', 'items': {'type': 'object', 'required': ['check', 'status', 'summary', 'evidence_refs'], 'properties': {'check': {'enum': ['build', 'typecheck', 'lint', 'tests', 'browser_smoke', 'responsive_layout', 'overflow_overlap', 'contrast_focus', 'screenshot_evidence', 'artifact_evidence', 'route_reachability', 'console_runtime', 'truth_fixture'], 'type': 'string'}, 'status': {'enum': ['passed', 'failed', 'blocked'], 'type': 'string'}, 'details': {'type': 'object', 'properties': {'expected_routes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'observed_routes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}}, 'additionalProperties': {}}, 'summary': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'evidence_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['builder_version', 'artifact_version', 'project', 'url', 'test_run', 'audit_event', 'commit'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'maxLength': 100}}}, 'maxItems': 40, 'minItems': 1}}}, 'maxItems': 13, 'minItems': 1}, 'evidence_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['builder_version', 'artifact_version', 'project', 'url', 'test_run', 'audit_event', 'commit'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'maxLength': 100}}}, 'default': [], 'maxItems': 40}}}]}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_name', 'conversation_summary', 'provider', 'engine_id', 'protocol', 'idempotency_key'], 'properties': {'pages': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'default': ['Home'], 'maxItems': 8, 'minItems': 1, 'description': 'Pages to generate. Use Home for a one-page site or widget.'}, 'entity': {'type': 'object', 'properties': {'name': {'type': 'string', 'maxLength': 200, 'description': 'Exact person, business, product, or project name.'}, 'category': {'type': 'string', 'maxLength': 200, 'description': 'Entity category, such as musician, restaurant, or SaaS.'}, 'source_url': {'type': 'string', 'format': 'uri', 'maxLength': 2000, 'description': 'Optional source URL supplied by the user.'}, 'description': {'type': 'string', 'maxLength': 5000, 'description': 'Grounded description; omit unsupported claims.'}}, 'description': 'Grounded identity facts that must survive the build.'}, 'audience': {'type': 'string', 'maxLength': 1000, 'description': 'Primary audience and the job they need to complete.'}, 'headline': {'type': 'string', 'maxLength': 140, 'minLength': 1, 'description': 'Exact hero headline to preserve verbatim in the generated site.'}, 'protocol': {'type': 'string', 'const': 'build-v1', 'description': 'Exact Engine dispatch protocol returned by list_connected_engines.'}, 'provider': {'enum': ['openai', 'claude', 'gemini', 'grok'], 'type': 'string', 'description': 'Exact provider CLI already authenticated on the selected Engine.'}, 'engine_id': {'type': 'string', 'pattern': '^engine_[A-Za-z0-9_-]{22}$', 'description': 'Opaque exact Engine identity returned by list_connected_engines.'}, 'project_name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Short name for the new 2ools project.'}, 'requirements': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 20, 'description': 'Concrete functionality, content, and section requirements.'}, 'output_target': {'enum': ['web', 'game', 'tauri', 'electron', 'widget', 'float', 'freeform'], 'type': 'string', 'default': 'web', 'description': 'Delivery target: site, browser game, desktop wrapper, embeddable component, floating overlay, or standalone HTML.'}, 'max_iterations': {'type': 'integer', 'default': 6, 'maximum': 12, 'minimum': 1, 'description': 'Hard project cap for later outside-agent child revisions.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated retry key. Reuse returns the original project and dispatch receipt.'}, 'visual_direction': {'type': 'string', 'maxLength': 2000, 'description': 'Desired visual character, composition, color, typography, or references.'}, 'creative_system_id': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Optional account-created creative system ID returned by list_build_systems.'}, 'operating_rules_id': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Optional account-created operating rules ID returned by list_build_systems.'}, 'content_constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 20, 'description': 'Claims, wording, exclusions, or fidelity constraints the build must obey.'}, 'conversation_summary': {'type': 'string', 'maxLength': 12000, 'minLength': 1, 'description': 'Factual build brief distilled from the conversation, including the intended artifact and key decisions.'}, 'create_separate_project': {'type': 'boolean', 'default': False, 'description': "Set true only when the person explicitly wants a distinct project that intentionally shares an existing project's name. Changing AI providers is not a reason."}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'result_summary', 'idempotency_key'], 'properties': {'session_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'used_steps': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'model_calls': {'type': 'integer', 'maximum': 10000000, 'minimum': 0}, 'output_refs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'kind': {'enum': ['builder_version', 'artifact_version', 'project', 'url', 'test_run', 'audit_event', 'commit'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 160}, 'artifact_id': {'type': 'string', 'maxLength': 100}}}, 'default': [], 'maxItems': 40}, 'input_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}, 'output_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}, 'result_summary': {'type': 'string', 'maxLength': 5000, 'minLength': 1}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'used_spend_cents': {'type': 'integer', 'maximum': 1000000, 'minimum': 0}, 'cached_input_tokens': {'type': 'integer', 'maximum': 2000000000, 'minimum': 0}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'bio': {'type': 'string', 'maxLength': 500}, 'locale': {'type': 'string', 'maxLength': 40}, 'website': {'type': 'string', 'maxLength': 2000}, 'timezone': {'type': 'string', 'maxLength': 100}, 'username': {'type': 'string', 'maxLength': 40, 'minLength': 1}, 'job_title': {'type': 'string', 'maxLength': 120}, 'display_name': {'type': 'string', 'maxLength': 120}, 'default_location': {'type': 'string', 'maxLength': 120}, 'profile_use_cases': {'type': 'array', 'items': {'enum': ['personal', 'business', 'clients', 'team', 'explore'], 'type': 'string'}, 'maxItems': 5}, 'preferred_audience': {'type': 'string', 'maxLength': 80}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'change'], 'properties': {'change': {'oneOf': [{'type': 'object', 'required': ['action', 'title', 'brief', 'idempotency_key'], 'properties': {'brief': {'type': 'string', 'maxLength': 10000, 'minLength': 1, 'description': 'Useful context for the person or AI that will do the work.'}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Short outcome-oriented plan item.'}, 'action': {'type': 'string', 'const': 'add'}, 'due_at': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'Optional ISO-8601 due time.'}, 'priority': {'enum': ['low', 'normal', 'high', 'urgent'], 'type': 'string', 'default': 'normal'}, 'dependency_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'default': [], 'maxItems': 40, 'description': 'Existing same-project work that must be verified first.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8, 'description': 'Caller-generated retry key. Reuse does not add a duplicate item.'}, 'acceptance_criteria': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 20, 'description': 'Observable conditions that prove the work is ready for review.'}}}, {'type': 'object', 'required': ['action', 'item_id', 'idempotency_key'], 'properties': {'lane': {'enum': ['next', 'waiting'], 'type': 'string', 'description': 'Move the item without declaring it complete. Working begins only through claim_work_assignment.'}, 'brief': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'action': {'type': 'string', 'const': 'edit'}, 'item_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Existing editable Living Plan item.'}, 'priority': {'enum': ['low', 'normal', 'high', 'urgent'], 'type': 'string'}, 'dependency_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'maxItems': 40, 'description': 'Replace the dependency set. Cycles and active-session edits are rejected.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'acceptance_criteria': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 20}}}, {'type': 'object', 'required': ['action', 'ordered_item_ids', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'reorder'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'ordered_item_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'maxItems': 100, 'minItems': 1, 'description': 'Editable item IDs in the requested order. Omitted editable items follow afterward.'}}}, {'type': 'object', 'required': ['action', 'item_id', 'lane', 'ordered_item_ids', 'idempotency_key'], 'properties': {'lane': {'enum': ['next', 'waiting'], 'type': 'string', 'description': 'Working begins only through claim_work_assignment.'}, 'action': {'type': 'string', 'const': 'arrange'}, 'item_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Item being dragged or moved with the keyboard.'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'ordered_item_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'maxItems': 100, 'minItems': 1, 'description': 'Editable item IDs in their intended visual order after the move.'}}}, {'type': 'object', 'required': ['action', 'target_type', 'target_id', 'note', 'idempotency_key'], 'properties': {'note': {'type': 'string', 'maxLength': 4000, 'minLength': 1, 'description': 'Direction that should constrain future work or create a correction from factual history.'}, 'action': {'type': 'string', 'const': 'steer'}, 'target_id': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'target_type': {'enum': ['assignment', 'activity', 'suggestion'], 'type': 'string'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}}}, {'type': 'object', 'required': ['action', 'suggestion_id', 'decision', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'decide_suggestion'}, 'decision': {'enum': ['add', 'dismiss'], 'type': 'string'}, 'suggestion_id': {'enum': ['direction', 'current_state', 'living_plan', 'review', 'feedback', 'recovery'], 'type': 'string'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}}}]}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Editable 2ools project ID.'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'change'], 'properties': {'change': {'oneOf': [{'type': 'object', 'required': ['action', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'initialize'}, 'subject': {'type': 'string', 'maxLength': 1000, 'minLength': 1}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}}}, {'type': 'object', 'required': ['action', 'expected_revision', 'snapshot', 'reason', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'save_snapshot'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'snapshot': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 200, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}]}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'member_id', 'role', 'confirm'], 'properties': {'role': {'enum': ['owner', 'collaborator', 'viewer'], 'type': 'string'}, 'confirm': {'type': 'boolean', 'const': True, 'description': 'Explicit confirmation for this exact member, project, and role.'}, 'member_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'change'], 'properties': {'change': {'oneOf': [{'type': 'object', 'required': ['action', 'original_intent', 'outcome', 'expected_revision', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'write_mission'}, 'reason': {'type': 'string', 'default': '', 'maxLength': 2000}, 'outcome': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'activate': {'type': 'boolean', 'default': False}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'original_intent': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'scope_constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'definition_of_done': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'requested_authority': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'confirm_active_change': {'type': 'boolean', 'default': False}}}, {'type': 'object', 'required': ['action', 'contract', 'expected_stack_revision', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'create_goal'}, 'reason': {'type': 'string', 'default': '', 'maxLength': 2000}, 'activate': {'type': 'boolean', 'default': False}, 'contract': {'type': 'object', 'required': ['original_intent', 'outcome', 'stop_rule'], 'properties': {'outcome': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'priority': {'enum': ['low', 'normal', 'high', 'urgent'], 'type': 'string', 'default': 'normal'}, 'stop_rule': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'proof_gates': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'default': [], 'maxItems': 20}, 'original_intent': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'scope_constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'definition_of_done': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'risky_action_policy': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'default': [], 'maxItems': 20}}}, 'template_key': {'enum': ['ship_feature', 'incident_fix', 'research_recommend', 'launch'], 'type': 'string'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_stack_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['action', 'goal_id', 'expected_revision', 'contract', 'reason', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'revise_goal'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'confirm': {'type': 'boolean', 'default': False}, 'goal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'contract': {'type': 'object', 'required': ['original_intent', 'outcome', 'stop_rule'], 'properties': {'outcome': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'priority': {'enum': ['low', 'normal', 'high', 'urgent'], 'type': 'string', 'default': 'normal'}, 'stop_rule': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'proof_gates': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'default': [], 'maxItems': 20}, 'original_intent': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'scope_constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'definition_of_done': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'risky_action_policy': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'default': [], 'maxItems': 20}}}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}, {'type': 'object', 'required': ['action', 'goal_id', 'transition', 'expected_revision', 'reason', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'transition_goal'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'confirm': {'type': 'boolean', 'default': False}, 'goal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'transition': {'enum': ['activate', 'pause', 'park', 'queue', 'remove', 'merge', 'claim_ownership'], 'type': 'string'}, 'conflict_choice': {'enum': ['replace', 'pause', 'queue'], 'type': 'string'}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'merge_into_goal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}, {'type': 'object', 'required': ['action', 'ordered_goal_ids', 'expected_stack_revision', 'reason', 'idempotency_key'], 'properties': {'action': {'type': 'string', 'const': 'reorder_goals'}, 'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'ordered_goal_ids': {'type': 'array', 'items': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'maxItems': 200}, 'expected_stack_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}}, {'type': 'object', 'required': ['action', 'key', 'name', 'mode', 'definition_of_done', 'stop_rule', 'proof_gates', 'idempotency_key'], 'properties': {'key': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'mode': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'name': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'action': {'type': 'string', 'const': 'save_template'}, 'reason': {'type': 'string', 'default': '', 'maxLength': 2000}, 'stop_rule': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'proof_gates': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'maxItems': 20, 'minItems': 1}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'expected_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'scope_constraints': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 30}, 'definition_of_done': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 30, 'minItems': 1}, 'risky_action_policy': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'default': [], 'maxItems': 20}}}, {'type': 'object', 'required': ['action', 'goal_id', 'request_key', 'what', 'why', 'proposed_work', 'idempotency_key'], 'properties': {'why': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'what': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'action': {'type': 'string', 'const': 'propose_scope_change'}, 'goal_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'priority': {'enum': ['low', 'normal', 'high', 'urgent'], 'type': 'string', 'default': 'normal'}, 'request_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'proposed_work': {'type': 'object', 'required': ['title', 'brief'], 'properties': {'brief': {'type': 'string', 'maxLength': 10000, 'minLength': 1}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'acceptance_criteria': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 20}}}, 'idempotency_key': {'type': 'string', 'pattern': '^[A-Za-z0-9._:-]+$', 'maxLength': 120, 'minLength': 8}, 'dependency_impact': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'default': [], 'maxItems': 40}}}]}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project_id', 'after_cursor'], 'properties': {'limit': {'type': 'integer', 'default': 40, 'maximum': 100, 'minimum': 1, 'description': 'Maximum new events to return.'}, 'project_id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': '2ools project ID.'}, 'after_cursor': {'type': 'string', 'maxLength': 1000, 'minLength': 1, 'description': 'Opaque head_cursor from get_project_activity or next_cursor from a prior wait.'}, 'timeout_seconds': {'type': 'integer', 'default': 20, 'maximum': 20, 'minimum': 1, 'description': 'Maximum time to wait before returning timed_out=true.'}}}
최근 도구 변경
유사한 MCP 서버
Kaiku
Manages team issues, comments, attachments, projects, wiki pages, and related development workflows.
SmartTools
Provides general-purpose calculators, unit converters, text and data transformations, hashing, code-generation helpers, and forma…
Wakatime
Provides WakaTime coding-activity data, including durations, projects, commits, goals, heartbeats, editor usage, leaders, and use…
TaskLite
Builds and manages hosted project backends, structured boards, REST APIs, automations, authentication access, databases, and fron…
Keelen
Manages autonomous software projects connected to GitHub, including repository setup, roadmap intake, task execution, scheduling,…
Linear
Manages and searches Linear teams and issues, including issue creation and detailed issue retrieval.
Jira
Searches Jira issues and retrieves project, issue, status, assignee, priority, comment, attachment, and linked-issue details.
Crontab
Parses cron expressions, validates them, explains their schedules, and computes upcoming run times.