2ools
Qué hace este MCP
Builds, versions, reviews, deploys, shares, and coordinates work on websites, web applications, and games through project workflows.
Herramientas
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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."}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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}}}]}}}
Esquema de entrada
{'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."}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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}}}
Esquema de entrada
{'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.'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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)$'}}}
Esquema de entrada
{'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.'}}}
Cambios recientes en herramientas
Servidores MCP similares
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.