What this MCP does
Builds, versions, reviews, deploys, shares, and coordinates work on websites, web applications, and games through project workflows.
Tools
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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."}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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}}}
Input schema
{'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}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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'}}}
Input schema
{'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.'}}}
Input schema
{'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}}}
Input schema
{'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}}}
Input schema
{'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}}}
Input schema
{'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.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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}}}
Input schema
{'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.'}}}
Input schema
{'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}}}]}}}
Input schema
{'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."}}}
Input schema
{'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}}}
Input schema
{'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}}}
Input schema
{'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.'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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)$'}}}
Input schema
{'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.'}}}
Recent tool changes
Similar MCP servers
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.