이 MCP로 할 수 있는 일
Provides a self-hosted agent operating system with agent work delegation, access controls, federation, hooks, SSO, security administration, and knowledge management.
도구
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['action_id', 'provider_gaii'], 'properties': {'input': {'type': 'object', 'description': 'Input parameters for the action.'}, 'action_id': {'type': 'string', 'description': 'Action identifier.'}, 'ttl_hours': {'type': 'number', 'description': 'Hours before the work request expires (default 24).'}, 'provider_gaii': {'type': 'string', 'description': "The provider_gaii the catalogue lists for the action: an agent's GAII, or a person's GHII when a person published it."}}}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Maximum number of agents to return.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['who', 'origins'], 'properties': {'who': {'type': 'string', 'description': "A person's address (owner@node), a bare owner name, or an agent's address (name#owner@node)."}, 'origins': {'type': 'array', 'description': 'The origins to allow, each an http(s) URL or "*"; null clears the list.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['node_id', 'relay_claim'], 'properties': {'node_id': {'type': 'string', 'description': 'The peer, by its node id as aimeat_admin_federation lists it.'}, 'relay_claim': {'enum': ['optional', 'required', 'node'], 'type': 'string', 'description': '"optional" or "required" for this peer alone, or "node" to follow this node\'s setting again.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['hook', 'actions'], 'properties': {'hook': {'type': 'string', 'description': 'The moment, e.g. "pre_owner_registration".'}, 'actions': {'type': 'array', 'description': 'Action references to call, in order, each naming an action already published here. An empty list clears the moment.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "The incident id, from the overview's incidents list."}, 'name': {'type': 'string', 'description': "To decide one name of an incident the move to the full identity opened: the account name, from the incident's names."}, 'resolution': {'type': 'string', 'description': 'With `name`: "holder" (its rows, cortexes, ecosystem apps, app grants and access tokens are the account\'s that holds the name now) or "previous" (they were a previous holder\'s).'}}}
입력 스키마
{'type': 'object', 'required': ['action'], 'properties': {'action': {'enum': ['plan', 'apply', 'list'], 'type': 'string', 'description': 'plan: what the set would make, and every problem, writing nothing. apply: make it. list: the sets applied on this node.'}, 'secrets': {'type': 'object', 'description': 'For plan and apply: secret config values, { <package group id>: { <component id>: { <field>: value } } }. Never stored in the record.'}, 'install_set': {'type': 'object', 'description': 'For plan and apply: the install set, a JSON object with spec "aimeat.install-set/1".'}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Free text over the name, the author and the tags.'}, 'page': {'type': 'number', 'description': 'Which page of packages, from 1. A page past the end comes back as the last page rather than empty.'}, 'limit': {'type': 'number', 'description': 'How many packages on the page. 20 by default, 50 at most.'}, 'flagged': {'type': 'boolean', 'description': 'Only packages somebody has reported.'}, 'author_key': {'type': 'string', 'description': 'One author, collapsed across the spellings of their name. Take the key from facets.authors.'}, 'content_type': {'type': 'string', 'description': 'One kind of package, as facets.kinds names it.'}}}
입력 스키마
{'type': 'object', 'required': ['gaii', 'amount'], 'properties': {'gaii': {'type': 'string', 'description': 'Target agent GAII whose owner balance is credited.'}, 'amount': {'type': 'number', 'description': 'Positive integer amount of morsels to mint.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ghii'], 'properties': {'ghii': {'type': 'string', 'description': "Bare owner name to install as the organism's creator."}, 'organism_id': {'type': 'string', 'description': 'The organism ID to repair.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'organism_id': {'type': 'string', 'description': 'The organism ID.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The owner name to deactivate.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The owner name to reactivate.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string', 'description': 'Permanent slug id (lowercase letters, digits, dashes; 2-31 chars).'}, 'name': {'type': 'string', 'description': "The organisation's name — the sign-in button label when listed."}, 'domains': {'type': 'array', 'description': 'Email domains this organisation vouches for, e.g. ["contoso.com"].'}, 'organism_id': {'type': 'string', 'description': 'Organism its people are added to on first sign-in or provisioning.'}, 'login_visibility': {'type': 'string', 'description': '"listed" shows a sign-in button; "hidden" keeps the organisation off the public modal (default listed).'}, 'allow_idp_initiated': {'type': 'boolean', 'description': "Accept sign-ins started from the IdP's own portal tile (default false)."}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The connection id.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The connection id (slug).'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The connection id.'}, 'url': {'type': 'string', 'description': "The IdP metadata URL (e.g. Entra's federation metadata address)."}, 'xml': {'type': 'string', 'description': 'The IdP metadata document itself, when a URL is not reachable.'}, 'name_id_format': {'type': 'string', 'description': "Requested NameID format, when the IdP's default is not wanted."}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The connection id.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The connection id.'}, 'name': {'type': 'string', 'description': 'New organisation name.'}, 'domains': {'type': 'array', 'description': 'New email-domain list (replaces the old one).'}, 'organism_id': {'type': 'string', 'description': 'New organism binding; an empty string clears it.'}, 'login_visibility': {'type': 'string', 'description': '"listed" or "hidden".'}, 'allow_idp_initiated': {'type': 'boolean', 'description': 'Accept IdP-initiated sign-ins.'}}}
입력 스키마
{'type': 'object', 'properties': {'to': {'type': 'string', 'description': 'Last day of the period, inclusive, as YYYY-MM-DD. Give `from` as well or neither is used.'}, 'from': {'type': 'string', 'description': 'First day of the period, inclusive, as YYYY-MM-DD. Give `to` as well or neither is used.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The owner name whose two-step sign-in should be removed.'}}}
입력 스키마
{'type': 'object', 'properties': {'to': {'type': 'string', 'description': 'Last day of the period, inclusive, as YYYY-MM-DD. Give `from` as well or neither is used.'}, 'from': {'type': 'string', 'description': 'First day of the period, inclusive, as YYYY-MM-DD. Give `to` as well or neither is used.'}, 'ask_provider': {'type': 'boolean', 'description': "Ask the provider what the node's own house and chat keys have spent. One outbound call per key. Off by default."}}}
입력 스키마
{'type': 'object', 'properties': {'days': {'type': 'number', 'description': 'Number of days of history to retrieve.'}, 'granularity': {'enum': ['daily', 'hourly'], 'type': 'string', 'description': 'History granularity.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {'note': {'type': 'string', 'description': 'Optional: one short phrase on why you are asking, shown to the person with the request.'}}}
입력 스키마
{'type': 'object', 'properties': {'domain': {'type': 'array', 'description': 'Array of domain expertise strings.'}, 'languages': {'type': 'array', 'description': 'Array of language codes.'}, 'technical': {'type': 'array', 'description': 'Array of technical capabilities: { name, type }.'}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name', 'console_url'], 'properties': {'console_url': {'type': 'string', 'description': "Absolute http(s) URL of that agent's page in its host, or '' to clear it."}, 'target_agent_name': {'type': 'string', 'description': 'Agent whose console address to set (must be owned by the same owner as the caller). Pass your own name to record your own.'}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name', 'description'], 'properties': {'description': {'type': 'string', 'description': 'What this agent is, in a sentence or two. Up to 2000 characters; empty clears it.'}, 'target_agent_name': {'type': 'string', 'description': 'Agent whose description to set (same owner as the caller). Pass your own name to describe yourself.'}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name', 'mode'], 'properties': {'mode': {'enum': ['autonomous', 'interactive', 'task-runner', 'coordinator', 'workstation'], 'type': 'string', 'description': 'New mode.'}, 'target_agent_name': {'type': 'string', 'description': 'Agent whose mode to update (must be owned by the calling owner).'}}}
입력 스키마
{'type': 'object', 'required': ['gaii'], 'properties': {'gaii': {'type': 'string', 'description': 'Agent GAII identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['name', 'purpose'], 'properties': {'mode': {'type': 'string', 'description': "How the node treats its tasks: 'task-runner' activates a queued task without asking the owner each time; also autonomous, interactive, coordinator, workstation."}, 'name': {'type': 'string', 'description': 'The agent name: 3 to 40 characters, lowercase letters, digits and hyphens, starting with a letter.'}, 'scopes': {'type': 'array', 'description': 'Exactly what it may do, e.g. ["memory:read","memory:write"]. Never more than you hold yourself.'}, 'purpose': {'type': 'string', 'description': 'What this agent is for, in a sentence the owner can decide from. This is what they read.'}, 'crew_def': {'type': 'object', 'description': 'What it would BE, in the crewaimeat crew_def shape — the same document aimeat_crew_publish takes. Strongly recommended.'}, 'run_mode': {'type': 'string', 'description': "'spawn' starts a worker per piece of work (right for bursty jobs); 'resident' stays up (right for an agent that answers people as they write, at a few seconds of cold start saved)."}, 'display_name': {'type': 'string', 'description': 'The name shown to the person. Defaults to the agent name.'}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name', 'run_mode'], 'properties': {'run_mode': {'enum': ['spawn', 'resident'], 'type': 'string', 'description': "'spawn' = started per job and unwound after; 'resident' = kept running; null takes it back to nobody-has-said, so a spawner leaves the agent alone."}, 'target_agent_name': {'type': 'string', 'description': 'Agent whose run mode to set (must be owned by the same owner as the caller). Pass your own name to set your own.'}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name', 'kind'], 'properties': {'file': {'type': 'string', 'description': "Path to the file that runs, relative to your own root, e.g. 'crews/web_researcher_crew.py'."}, 'kind': {'type': 'string', 'description': "What kind of thing runs, e.g. 'python' for a code-backed crew or 'crew-def' for a JSON one."}, 'commit': {'type': 'string', 'description': 'Commit the file came from.'}, 'sha256': {'type': 'string', 'description': "Hash of that file's contents — the only field that changes when the code changes and nothing else does."}, 'runtime': {'type': 'string', 'description': "Which runtime read it, e.g. 'crewaimeat 0.7.0'."}, 'target_agent_name': {'type': 'string', 'description': 'Agent this is about (same owner as the caller). Pass your own name to report your own.'}, 'definition_revision': {'type': 'number', 'description': 'For a JSON crew: which revision of the definition on this node was live.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name', 'tags'], 'properties': {'tags': {'type': 'array', 'description': 'Replacement tag list. Empty array clears all tags.'}, 'target_agent_name': {'type': 'string', 'description': "Agent whose tags to update (must be owned by the same owner as the caller). Pass the calling agent's own name to self-tag."}}}
입력 스키마
{'type': 'object', 'properties': {'data': {'type': 'object', 'description': 'Telemetry data such as tokens, duration, or tool name.'}, 'type': {'enum': ['llm_call', 'tool_call', 'agent_report'], 'type': 'string', 'description': 'Telemetry event type.'}, 'task_id': {'type': 'string', 'description': 'Optional related AIMEAT task id.'}, 'session_id': {'type': 'string', 'description': 'Optional runtime session identifier.'}}}
입력 스키마
{'type': 'object', 'properties': {'app_id': {'type': 'string', 'description': 'The app you act for, when you do: its own model list and preferences count.'}}}
입력 스키마
{'type': 'object', 'required': ['input'], 'properties': {'role': {'type': 'string', 'description': 'The AI role to run as: one of your roles (aimeat_ai_roles), or for an app a role it declares and you bound. A named model or provider wins over it.'}, 'input': {'type': 'array', 'description': 'The texts, one vector each.'}, 'model': {'type': 'string', 'description': "A model reference; omit to let the owner's providers choose."}, 'app_id': {'type': 'string', 'description': 'The app this is for, so its spend is attributed.'}, 'provider': {'type': 'string', 'description': 'A provider id or type to use, with no fallback.'}}}
입력 스키마
{'type': 'object', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'description': 'The job id to stop.'}}}
입력 스키마
{'type': 'object', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'description': 'The job id from aimeat_ai_job_start.'}}}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'How many to return (1-500, default 50).'}, 'state': {'enum': ['queued', 'running', 'done', 'failed', 'cancelled', 'live', 'all'], 'type': 'string', 'description': 'Which jobs to list. "live" (the default) is queued + running.'}}}
입력 스키마
{'type': 'object', 'required': ['result_key'], 'properties': {'op': {'enum': ['text', 'image', 'transcribe'], 'type': 'string', 'description': 'The kind of model call. "text" (default): a completion. "image": one picture from the prompt; json does not apply. "transcribe": speech-to-text over audio_key; no prompt.'}, 'json': {'type': 'boolean', 'description': 'Parse the answer as JSON before storing it, so a malformed answer fails the job instead of becoming a string every reader has to re-parse.'}, 'role': {'type': 'string', 'description': 'The AI role to run as: one of your roles (aimeat_ai_roles), or for an app a role it declares and you bound. A named model or provider wins over it.'}, 'size': {'type': 'string', 'description': 'For op "image": a provider-specific size, e.g. "1024x1024".'}, 'model': {'type': 'string', 'description': "Explicit model id. Omit to use the owner's configured model."}, 'app_id': {'type': 'string', 'description': "App attribution — enables the owner's per-app allowlist and per-app daily quota."}, 'prompt': {'type': 'string', 'description': 'The prompt. Required unless prompt_key names a record holding it.'}, 'on_done': {'type': 'object', 'description': "{ extension, action } — an extension action of the job's OWN owner, invoked with { job_id, state, result_key } when the job finishes."}, 'language': {'type': 'string', 'description': 'For op "transcribe": an ISO-639-1 language hint, e.g. "fi". Omit to use the owner\'s setting or auto-detect.'}, 'provider': {'type': 'string', 'description': "A provider to use, by id or by type. Naming one turns fallback to another provider off. Omit to let the owner's rules choose."}, 'audio_key': {'type': 'string', 'description': 'For op "transcribe" (required there): the storage key of an audio file in your own storage. A key that is not there is refused with NOT_FOUND before the job is written.'}, 'input_keys': {'type': 'array', 'description': 'Memory keys read and appended to the prompt, labelled by key. This is the ONLY way the model sees stored data — it has no tools. A key naming a record this node keeps for itself (an AI key, a payout setting, a spend limit) is refused with RESERVED_KEY, because everything read goes to the model provider.'}, 'prompt_key': {'type': 'string', 'description': 'An owner memory key holding the prompt text (a string, or an object with a `prompt` field), so changing the prompt is a memory write rather than a code change.'}, 'result_key': {'type': 'string', 'description': "Where the answer is written, in the owner's own namespace. A key naming another namespace is refused, and so is a record this node keeps for itself (RESERVED_KEY)."}, 'system_prompt': {'type': 'string', 'description': 'Optional system prompt.'}, 'result_visibility': {'enum': ['private', 'owner', 'public'], 'type': 'string', 'description': 'Visibility of the record written at result_key. Default private.'}}}
입력 스키마
{'type': 'object', 'properties': {'type': {'type': 'string', 'description': 'openrouter | openai | anthropic | xai | mistral | deepseek.'}, 'status': {'type': 'string', 'description': 'Comma-separated: active, retiring, retired; or all. Default active,retiring.'}, 'allowed': {'type': 'boolean', 'description': 'true: only the models you can use now.'}, 'capability': {'type': 'string', 'description': 'text | vision | files | image | speech | transcription | embed.'}}}
입력 스키마
{'type': 'object', 'properties': {'policy': {'type': 'object', 'description': '{ mode: open|recommended|custom, allow?: [refs], appliesTo?: {owner, chat, agents, apps}, apps?: {"owner/file.html": {allow}}, agents?: {name: {allow}} }. Omit to read.'}, 'confirm_token': {'type': 'string', 'description': 'Token from the propose step; omit to propose.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['provider'], 'properties': {'provider': {'type': 'string', 'description': 'The provider id, from aimeat_ai_providers.'}, 'capability': {'type': 'string', 'description': 'text | vision | files | transcription | speech | embed | image. Default text.'}, 'accept_cost': {'type': 'boolean', 'description': 'Required true for an image test, which the provider charges for.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {'roles': {'type': 'object', 'description': '{ "<role id>": { title, purpose?, capabilities: {capability: [{provider, model?}]}, local?, maxCostPerCallUsd? } or null }.'}, 'bindings': {'type': 'object', 'description': '{ "<owner>/<file>.html#<role name>": "<your role id>" or null }. Null unbinds and dismisses the app\'s request; a role that lacks a capability the app\'s role needs is refused.'}, 'confirm_token': {'type': 'string', 'description': 'Token from the propose step; omit to propose.'}}}
입력 스키마
{'type': 'object', 'properties': {'routing': {'type': 'object', 'description': '{ defaults?: {capability: [provider ids]}, rules?: {...}, agent?: name }. Omit to read.'}, 'confirm_token': {'type': 'string', 'description': 'Token from the propose step; omit to propose.'}}}
입력 스키마
{'type': 'object', 'required': ['storage_key'], 'properties': {'role': {'type': 'string', 'description': 'The AI role to run as: one of your roles (aimeat_ai_roles), or for an app a role it declares and you bound. A named model or provider wins over it.'}, 'model': {'type': 'string', 'description': "A model reference; omit to let the owner's providers choose."}, 'app_id': {'type': 'string', 'description': 'The app this is for, so its spend is attributed.'}, 'filename': {'type': 'string', 'description': "The file name the provider sees; its extension names the format. Defaults to the key's last part."}, 'language': {'type': 'string', 'description': 'ISO-639-1 hint (fi, en). Omit to let the model detect it.'}, 'provider': {'type': 'string', 'description': 'A provider id or type to use, with no fallback.'}, 'storage_key': {'type': 'string', 'description': "The audio file's key in your storage."}}}
입력 스키마
{'type': 'object', 'required': ['filename'], 'properties': {'version': {'type': 'number', 'description': 'A specific version number. Omit to archive all versions.'}, 'filename': {'type': 'string', 'description': "App filename to archive (your own owner's)."}}}
입력 스키마
{'type': 'object', 'properties': {'model': {'type': 'string', 'description': 'Your primary model (indicative), e.g. claude-haiku-4.5. Marks proven packs and orders learned pitfalls; filters nothing.'}, 'sections': {'type': 'array', 'description': 'Subset: apps, library_packs, app_templates, skills, pitfalls_curated, pitfalls_learned, template_proposals.'}}}
입력 스키마
{'type': 'object', 'required': ['category', 'slug'], 'properties': {'slug': {'type': 'string', 'description': 'Entry slug.'}, 'category': {'type': 'string', 'description': 'Entry category.'}}}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Page size, default 25 (max 100).'}, 'model': {'type': 'string', 'description': 'Filter learned entries to one model.'}, 'scope': {'enum': ['own', 'platform', 'all'], 'type': 'string', 'description': 'Default all.'}, 'offset': {'type': 'number', 'description': 'Page start, default 0.'}, 'status': {'enum': ['active', 'outdated', 'all'], 'type': 'string', 'description': 'Default active.'}, 'category': {'type': 'string', 'description': 'Filter by category.'}, 'applies_to': {'type': 'string', 'description': 'Filter by area.'}}}
입력 스키마
{'type': 'object', 'required': ['model', 'category', 'title', 'symptom', 'resolution'], 'properties': {'slug': {'type': 'string', 'description': 'Stable kebab-case slug; same {category, slug} updates the entry.'}, 'model': {'type': 'string', 'description': 'YOUR OWN model id — the model that hit/solved this. Self-identify from your own configuration, never ask the user. Indicative attribution.'}, 'share': {'type': 'boolean', 'description': 'true = platform-wide public entry; default private to your owner scope.'}, 'title': {'type': 'string', 'description': 'Short imperative title.'}, 'status': {'enum': ['active', 'outdated'], 'type': 'string', 'description': 'outdated = kept but hidden from default lists.'}, 'app_ref': {'type': 'string', 'description': 'Related app (owner/filename.html).'}, 'symptom': {'type': 'string', 'description': 'What the builder observes.'}, 'category': {'type': 'string', 'description': 'Kebab-case category (auth, ext, cortex, realtime, mobile, publish, ai, data...).'}, 'severity': {'enum': ['info', 'warn', 'critical'], 'type': 'string', 'description': 'Default warn.'}, 'applies_to': {'type': 'array', 'description': 'Areas: app, auth, ext, cortex, iam, realtime, ai, mobile, publish.'}, 'resolution': {'type': 'string', 'description': 'What to do instead.'}}}
입력 스키마
{'type': 'object', 'required': ['subject_type', 'subject_id', 'model', 'verdict', 'evidence'], 'properties': {'model': {'type': 'string', 'description': 'Model the run was made with (indicative).'}, 'tokens': {'type': 'number', 'description': 'Output tokens the run consumed.'}, 'verdict': {'enum': ['pass', 'fail'], 'type': 'string', 'description': 'Did it accelerate the run.'}, 'evidence': {'type': 'string', 'description': 'URL / storage / memory ref to the run evidence.'}, 'test_set': {'type': 'string', 'description': 'Repeatable test-set id, when used.'}, 'subject_id': {'type': 'string', 'description': 'Community pack id (cortex name) or template proposal id.'}, 'subject_type': {'enum': ['library_pack', 'app_template'], 'type': 'string', 'description': 'What the proof attaches to.'}}}
입력 스키마
{'type': 'object', 'required': ['filename'], 'properties': {'owner': {'type': 'string', 'description': 'App owner. Omit for your own apps; another owner requires a development grant.'}, 'filename': {'type': 'string', 'description': 'App filename whose draft to discard.'}}}
입력 스키마
{'type': 'object', 'required': ['filename'], 'properties': {'owner': {'type': 'string', 'description': 'App owner. Omit for your own apps; another owner requires a development grant.'}, 'roadmap': {'type': 'string', 'description': 'What this version changes. Required when the app is shared with another developer.'}, 'filename': {'type': 'string', 'description': 'App filename whose draft to publish.'}, 'spec_ack': {'type': 'string', 'description': 'Owner-declared build spec acknowledgement.'}, 'spec_token': {'type': 'string', 'description': 'Current app build spec digest.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['filename'], 'properties': {'limit': {'type': 'number', 'description': 'How many lines to return. Default 400, maximum 2000.'}, 'owner': {'type': 'string', 'description': 'App owner. Omit for your own apps; another owner requires a development grant.'}, 'offset': {'type': 'number', 'description': 'First line to return, 1-based. Default 1.'}, 'filename': {'type': 'string', 'description': 'App filename whose draft to read.'}}}
입력 스키마
{'type': 'object', 'required': ['filename', 'old_string', 'new_string'], 'properties': {'owner': {'type': 'string', 'description': 'App owner. Omit for your own apps; another owner requires a development grant.'}, 'filename': {'type': 'string', 'description': 'App filename whose draft to edit.'}, 'new_string': {'type': 'string', 'description': 'What to put there instead.'}, 'old_string': {'type': 'string', 'description': 'The exact text to replace, including indentation.'}, 'replace_all': {'type': 'boolean', 'description': 'Replace every occurrence instead of requiring exactly one. Default false.'}}}
입력 스키마
{'type': 'object', 'required': ['filename', 'content'], 'properties': {'name': {'type': 'string', 'description': "Display name (defaults to the live app's)."}, 'owner': {'type': 'string', 'description': 'App owner. Omit for your own apps; another owner requires a development grant.'}, 'content': {'type': 'string', 'description': 'The draft HTML (the next version to test). Use @file:path with the CLI fallback.'}, 'filename': {'type': 'string', 'description': 'App filename this draft stages (e.g. "drumpad.html").'}, 'description': {'type': 'string', 'description': "Description (defaults to the live app's)."}}}
입력 스키마
{'type': 'object', 'required': ['filename'], 'properties': {'owner': {'type': 'string', 'description': 'App owner. Omit for your own apps; another owner requires a development grant.'}, 'version': {'type': 'number', 'description': 'Which published version. Defaults to the newest.'}, 'filename': {'type': 'string', 'description': 'The draft slot to write into.'}, 'from_filename': {'type': 'string', 'description': 'The published app to copy from. Defaults to filename.'}}}
입력 스키마
{'type': 'object', 'required': ['filename', 'content'], 'properties': {'mode': {'enum': ['append', 'replace'], 'type': 'string', 'description': 'append (default) adds to the end; replace overwrites the whole draft.'}, 'name': {'type': 'string', 'description': "Display name (defaults to the live app's, or the draft's once set)."}, 'owner': {'type': 'string', 'description': 'App owner. Omit for your own apps; another owner requires a development grant.'}, 'content': {'type': 'string', 'description': 'The text to write. Plain UTF-8, not base64.'}, 'filename': {'type': 'string', 'description': 'App filename this draft stages (e.g. "pong.html").'}, 'description': {'type': 'string', 'description': "Description (defaults to the live app's, or the draft's once set)."}, 'expected_size_bytes': {'type': 'number', 'description': 'Refuse unless the draft is currently this many bytes. Guards a multi-call build against a lost update.'}}}
입력 스키마
{'type': 'object', 'required': ['owner', 'filename', 'new_filename'], 'properties': {'owner': {'type': 'string', 'description': 'Owner name of the source app.'}, 'version': {'type': 'number', 'description': 'Source version to fork (default: latest).'}, 'filename': {'type': 'string', 'description': 'Filename of the source app.'}, 'new_filename': {'type': 'string', 'description': 'Filename for the fork in your catalogue.'}}}
입력 스키마
{'type': 'object', 'required': ['owner', 'filename'], 'properties': {'owner': {'type': 'string', 'description': 'Owner name of the app.'}, 'filename': {'type': 'string', 'description': 'App filename, e.g. "starwars.html".'}}}
입력 스키마
{'type': 'object', 'properties': {'own': {'type': 'boolean', 'description': "List only your own owner's apps."}, 'tag': {'type': 'string', 'description': 'Filter by tag.'}, 'limit': {'type': 'number', 'description': 'How many to return (default 50, max 200).'}, 'offset': {'type': 'number', 'description': 'How many to skip; with has_more this reads the whole catalogue.'}, 'search': {'type': 'string', 'description': 'Free-text search over name and description.'}, 'building': {'type': 'boolean', 'description': 'List apps another owner lets you build; opt-in and separate from your own.'}, 'category': {'type': 'string', 'description': 'Filter by category.'}}}
입력 스키마
{'type': 'object', 'required': ['action'], 'properties': {'on': {'type': 'boolean', 'description': 'For visitors_measure: true starts counting who opens the app; false stops and keeps what was counted.'}, 'geo': {'enum': ['off', 'country', 'region', 'city'], 'type': 'string', 'description': 'For visitors_measure: the place kept for each person. Choose the coarsest that answers the question. Omit to keep what it was.'}, 'days': {'type': 'number', 'description': 'For visitors: the trailing window in days, 0 to 360. 0 is today only. Default 30.'}, 'kind': {'enum': ['terms', 'privacy', 'imprint', 'refunds', 'accessibility', 'cookies', 'support'], 'type': 'string', 'description': 'For legal: which page. Omit to read where the app stands.'}, 'lang': {'type': 'string', 'description': 'For seo: language tag such as "fi". Empty reads what the app declares.'}, 'name': {'type': 'string', 'description': "For settings: the app's display name. Changes it without a new version."}, 'note': {'type': 'string', 'description': 'For ui_set: one line on what this change was for.'}, 'badge': {'type': 'boolean', 'description': 'For marks: false takes the "publish your own app" badge off the app; true puts it back.'}, 'image': {'type': 'string', 'description': 'For seo: absolute https URL for the social card. Empty uses the app screenshot.'}, 'index': {'type': 'boolean', 'description': 'For seo: true makes the app findable in search engines, false takes it back out. Off until you ask.'}, 'limit': {'type': 'number', 'description': 'For audit: how many of the newest entries. Default 50, at most 500.'}, 'owner': {'type': 'string', 'description': "The app's owner. Omit for your own apps; another owner's app needs a development grant, or is read only where the action is public."}, 'title': {'type': 'string', 'description': 'For seo: title for search results and social cards. Empty derives it from the app name.'}, 'action': {'enum': ['settings', 'seo', 'marks', 'legal', 'audit', 'versions', 'lineage', 'screenshot', 'screenshot_upload', 'screenshot_clear', 'preview_link', 'visitors', 'visitors_measure', 'ui_get', 'ui_set', 'ui_restore', 'config_get', 'config_set', 'cost', 'agent_deploy', 'agent_undeploy', 'agent_instances', 'agent_status', 'grants', 'backup_export', 'subdomain_list', 'subdomain_set', 'subdomain_delete'], 'type': 'string', 'description': 'What to do. The description lists each action with its fields.'}, 'detail': {'type': 'array', 'description': 'For ui_get: names from the catalogue index to get IN FULL: component ids ("table", "statRow") or section names ("effects", "layouts", "ambients"). Omit it for the index alone.'}, 'format': {'enum': ['markdown', 'html', 'url'], 'type': 'string', 'description': "For legal: markdown (rendered with every character escaped), html (served as written on the app's own origin) or url (a link to where the page lives)."}, 'layout': {'type': 'object', 'description': 'For ui_set: the WHOLE layout { v: 1, look?, nav?, blocks: [{ id, component, props }] }. It replaces what is there; read it first with ui_get.'}, 'parked': {'type': 'boolean', 'description': 'For settings: true hides the app from the public catalogue (it still works by link and for you); false lists it again.'}, 'remove': {'type': 'boolean', 'description': 'For legal: true removes the named page.'}, 'target': {'type': 'string', 'description': 'For subdomain_set: what it serves, "owner/filename" for an app or an absolute URL for a redirect.'}, 'values': {'type': 'object', 'description': 'For config_set: the fields to change, { "<field>": value }. A null puts a field back to its default; fields not named keep their values.'}, 'content': {'type': 'string', 'description': 'For legal: the page text, the HTML document, or the absolute https URL.'}, 'enabled': {'type': 'boolean', 'description': 'For subdomain_set: false keeps the entry but stops serving it.'}, 'install': {'type': 'boolean', 'description': 'For marks: false stops offering visitors to install the app in their browser; true offers it again.'}, 'version': {'type': 'number', 'description': 'For ui_restore: the layout version to put back (ui_set answers with the one it replaced).'}, 'filename': {'type': 'string', 'description': 'The app, with its extension (e.g. "shop.html").'}, 'forkable': {'type': 'boolean', 'description': 'For settings: true lets anyone signed in fork the app into their own catalogue.'}, 'keywords': {'type': 'array', 'description': 'For seo: keywords. Empty uses the app tags.'}, 'playtest': {'type': 'boolean', 'description': 'For audit: also open the app in a headless browser, signed out, and report what it did (about a minute).'}, 'subdomain': {'type': 'string', 'description': 'For subdomain_set and subdomain_delete: the subdomain label (e.g. "shop").'}, 'protection': {'type': 'object', 'description': 'For settings: copy protection { obfuscate, domainLock, watermark, noRawDownload }, each true or false.'}, 'screenshot': {'type': 'string', 'description': 'For screenshot_upload: the image as base64, at most 2 MB.'}, 'access_code': {'type': 'string', 'description': 'For settings: a code visitors must type to open the app. An empty string removes it. Never read back.'}, 'description': {'type': 'string', 'description': "For seo: the search-result description (empty derives it). For settings: the app's own catalogue description."}, 'organism_id': {'type': 'string', 'description': 'For agent_deploy: the organism the deployed agent works in, when the app needs one.'}, 'descriptions': {'type': 'object', 'description': 'For settings: the description per language, { "fi": "…", "es": "…" }.'}, 'runner_agent': {'type': 'string', 'description': 'For agent_deploy, agent_undeploy and agent_status: which of your agents runs it. Omit to use your task runner.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'bundled_agent': {'type': 'string', 'description': 'For agent_*: the name of an agent the app declares in its manifest.'}, 'subdomain_kind': {'enum': ['app', 'redirect'], 'type': 'string', 'description': 'For subdomain_set: app serves an app at the subdomain, redirect sends visitors to target.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}, 'screenshot_mime_type': {'type': 'string', 'description': 'For screenshot_upload: image/png, image/jpeg or image/webp. Default image/png.'}}}
입력 스키마
{'type': 'object', 'required': ['filename', 'name'], 'properties': {'icon': {'type': 'string', 'description': 'Emoji icon.'}, 'name': {'type': 'string', 'description': 'Display name shown in the catalogue.'}, 'tags': {'type': 'array', 'description': 'Tags for search and filtering.'}, 'owner': {'type': 'string', 'description': 'App owner. Omit for your own apps; another owner requires a development grant.'}, 'content': {'type': 'string', 'description': 'The app HTML as plain text. Omit for upload mode. Use @file:path with the CLI fallback.'}, 'roadmap': {'type': 'string', 'description': 'What this version changes. Required when the app is shared with another developer.'}, 'version': {'type': 'string', 'description': 'Semver display version. Generated if omitted.'}, 'category': {'type': 'string', 'description': 'Category (default "tool").'}, 'filename': {'type': 'string', 'description': 'App filename, e.g. "starwars.html". Alphanumeric, dots, hyphens, underscores.'}, 'spec_ack': {'type': 'string', 'description': 'Owner-declared build spec acknowledgement.'}, 'spec_token': {'type': 'string', 'description': 'Current app build spec digest.'}, 'description': {'type': 'string', 'description': 'Short description.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'cortex_agents': {'type': 'array', 'description': 'Declarative crew-defs this app ships (manifest.cortex.agents), validated at publish in both modes. Omit on update to carry them forward; [] clears.'}, 'content_base64': {'type': 'string', 'description': 'Already-encoded HTML, if you did the encoding yourself.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Template proposal id.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Template id: a proposal, or one the node ships.'}, 'part': {'type': 'number', 'description': 'Only for a template the node ships whose file is too large for one answer: which part to return (1-based). The first answer says how many parts there are.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['id', 'title', 'description', 'derived_from', 'tier', 'reuse_notes', 'model'], 'properties': {'id': {'type': 'string', 'description': 'Stable kebab-case template id (same id = update).'}, 'tags': {'type': 'array', 'description': 'Discovery tags.'}, 'tier': {'enum': ['T1', 'T2', 'T3'], 'type': 'string', 'description': 'T1 pure client · T2 +cortex · T3 +extension.'}, 'model': {'type': 'string', 'description': 'YOUR OWN model id — the model that built the source app. Self-identify, never ask the user (indicative).'}, 'packs': {'type': 'array', 'description': 'Library-pack ids the template relies on.'}, 'title': {'type': 'string', 'description': 'Template title.'}, 'composes': {'type': 'array', 'description': 'Component template ids it composes.'}, 'start_mode': {'enum': ['fork', 'scaffold', 'either'], 'type': 'string', 'description': 'How the next build starts (default either).'}, 'description': {'type': 'string', 'description': 'What the template is for.'}, 'model_notes': {'type': 'array', 'description': 'Per-model observations [{model, notes, evidence?}].'}, 'reuse_notes': {'type': 'string', 'description': 'What generalizes — the parts a next build should copy/keep.'}, 'derived_from': {'type': 'object', 'description': '{owner, filename} of YOUR published source app.'}, 'start_mode_rationale': {'type': 'string', 'description': 'Why that start mode.'}}}
입력 스키마
{'type': 'object', 'required': ['owner', 'app', 'tool'], 'properties': {'app': {'type': 'string', 'description': 'The provider app filename (e.g. "company-brief").'}, 'tool': {'type': 'string', 'description': 'The tool name to call (e.g. "getCompanyBrief").'}, 'input': {'type': 'object', 'description': "The tool input object (matching the offering's input_schema)."}, 'owner': {'type': 'string', 'description': "The provider app's owner (bare name or GHII)."}}}
입력 스키마
{'type': 'object', 'required': ['app_id'], 'properties': {'owner': {'type': 'string', 'description': 'App owner (bare name). Default: your own owner'}, 'app_id': {'type': 'string', 'description': "The app's published filename"}}}
입력 스키마
{'type': 'object', 'required': ['app_id', 'tools'], 'properties': {'odps': {'type': 'object', 'description': "APP-LEVEL ODPS defaults inherited by every tool: { language, dataHolder: {legalName, businessID, email, URL, addressCountry}, logoURL, brandSlogan, governanceProfile, portfolioPriority, license: {geographicalArea, applicableLaws} }. A tool's own `odps` overrides these field by field."}, 'tools': {'type': 'array', 'description': 'Full tool list: [{ name, description?, inputSchema?, outputSchema?, action_id?, agent?, exchange?, price?: {morsels, unit?}, priceMoney?: {amount /* micro-units */, currency}, usageTerms?, provenance?, odps? }]'}, 'app_id': {'type': 'string', 'description': 'The app\'s published filename (e.g. "shop.html") — the manifest key is apps.{app_id}.tools. A name without the extension ("shop") is stored under your app "shop.html" when you have one, and the answer names the filename.'}, 'provenance': {'type': 'object', 'description': 'APP-LEVEL provenance defaults inherited by every tool: { source, legalBasis, consentStatus, retention, transformations, snapshotHash (SHA-256 hex), lineage: [{source, transform, at}] }. State only what you know.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Board name.'}, 'rules': {'type': 'object', 'description': 'The board\'s own rules, all optional: posting ("owner", "members" or "anyone"), categories (at most 20 names of 64 characters; a post under any other category is refused), default_ttl_hours (more than 0, at most 8760; how long a post lives when it names no lifetime of its own, 168 when unset), post_cost (0 to 100000 morsels per post on a public board; 0 makes posting free and removes the only spam brake a board has).'}, 'visibility': {'type': 'string', 'description': 'Board visibility level.'}, 'description': {'type': 'string', 'description': 'Board description.'}, 'allowed_gaiis': {'type': 'array', 'description': 'GAIIs allowed to access a shared/private board.'}}}
입력 스키마
{'type': 'object', 'required': ['board_id'], 'properties': {'board_id': {'type': 'string', 'description': 'Board identifier.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['board_id'], 'properties': {'add': {'type': 'array', 'description': 'GAIIs to grant access.'}, 'remove': {'type': 'array', 'description': 'GAIIs to revoke access.'}, 'board_id': {'type': 'string', 'description': 'Board identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['board_id', 'title', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Post body.'}, 'title': {'type': 'string', 'description': 'Post title.'}, 'board_id': {'type': 'string', 'description': 'Board identifier.'}, 'category': {'type': 'string', 'description': 'Optional post category.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['board_id', 'post_id', 'emoji'], 'properties': {'emoji': {'type': 'string', 'description': 'Reaction emoji.'}, 'remove': {'type': 'boolean', 'description': 'Take back your own reaction of that emoji instead of adding it. Only ever your own.'}, 'post_id': {'type': 'string', 'description': 'Post identifier.'}, 'board_id': {'type': 'string', 'description': 'Board identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['board_id'], 'properties': {'limit': {'type': 'number', 'description': 'Max posts to return (default 20).'}, 'board_id': {'type': 'string', 'description': 'Board identifier (from aimeat_board_list).'}, 'category': {'type': 'string', 'description': 'Optional category filter.'}}}
입력 스키마
{'type': 'object', 'required': ['board_id', 'post_id', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Reply body.'}, 'post_id': {'type': 'string', 'description': 'Post identifier.'}, 'board_id': {'type': 'string', 'description': 'Board identifier.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['board_id', 'rules'], 'properties': {'rules': {'type': 'object', 'description': 'The whole rule set: posting ("owner", "members" or "anyone"), categories (at most 20 names of 64 characters), default_ttl_hours (more than 0, at most 8760), post_cost (0 to 100000). {} returns the board to the node defaults.'}, 'board_id': {'type': 'string', 'description': 'Board identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['board_id'], 'properties': {'filters': {'type': 'object', 'description': 'Only notify for posts matching these categories/tags.'}, 'board_id': {'type': 'string', 'description': 'Board identifier.'}, 'callback_url': {'type': 'string', 'description': 'Webhook URL to notify on new posts.'}}}
입력 스키마
{'type': 'object', 'required': ['name', 'summary'], 'properties': {'id': {'type': 'string', 'description': 'Custom capability ID (auto-generated UUID if omitted).'}, 'name': {'type': 'string', 'description': 'Human-readable capability name.'}, 'tags': {'type': 'array', 'description': 'Tags for discovery and filtering.'}, 'usage': {'type': 'string', 'description': 'Usage instructions for consumers.'}, 'summary': {'type': 'string', 'description': 'Brief description of what this capability does.'}, 'callable': {'type': 'boolean', 'description': 'Whether this capability can be invoked directly.'}, 'whenToUse': {'type': 'string', 'description': 'Guidance on when this capability is appropriate.'}, 'visibility': {'enum': ['private', 'public'], 'type': 'string', 'description': 'Visibility: private (default) or public.'}, 'inputSchema': {'type': 'object', 'description': 'JSON Schema for input validation.'}, 'outputSchema': {'type': 'object', 'description': 'JSON Schema for output format.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Capability identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Capability identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Capability identifier.'}, 'mode': {'enum': ['normal', 'raw'], 'type': 'string', 'description': 'normal = normalized result, raw = original response.'}, 'input': {'type': 'object', 'description': 'Input parameters.'}}}
입력 스키마
{'type': 'object', 'properties': {'tags': {'type': 'array', 'description': 'Filter by tags.'}, 'search': {'type': 'string', 'description': 'Full-text search on name and summary.'}, 'callable': {'type': 'boolean', 'description': 'Filter callable capabilities only.'}, 'source_type': {'type': 'string', 'description': "Filter by source type: extension (a server extension action, callable), app-tool (a sellable tool from an app manifest, called under a contract), offering (an agent's public offer, commissioned as work), cortex (a browser library the app loads, never callable here), manual (an owner-added webhook), action."}, 'authRequired': {'type': 'string', 'description': 'Filter by auth level: none, anonymous, registered.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Capability identifier.'}, 'name': {'type': 'string', 'description': 'Updated name.'}, 'tags': {'type': 'array', 'description': 'Updated tags.'}, 'usage': {'type': 'string', 'description': 'Updated usage instructions.'}, 'summary': {'type': 'string', 'description': 'Updated summary.'}, 'whenToUse': {'type': 'string', 'description': 'Updated guidance on when to use.'}, 'visibility': {'enum': ['private', 'public'], 'type': 'string', 'description': 'Updated visibility.'}, 'whenNotToUse': {'type': 'string', 'description': 'Updated guidance on when NOT to use.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Capability identifier.'}, 'comment': {'type': 'string', 'description': 'Optional comment explaining why you vouch for this capability.'}}}
입력 스키마
{'type': 'object', 'properties': {'search': {'type': 'string', 'description': 'Free-text search (name/description/GAII).'}, 'category': {'type': 'string', 'description': 'Filter by capability category.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {'city': {'type': 'string', 'description': 'Filter by city.'}, 'interest': {'type': 'string', 'description': 'Filter by interest keyword.'}}}
입력 스키마
{'type': 'object', 'properties': {'search': {'type': 'string', 'description': 'Free-text search over action name/description/GAII.'}, 'category': {'type': 'string', 'description': 'Filter by capability category.'}}}
입력 스키마
{'type': 'object', 'required': ['session_id'], 'properties': {'handler': {'type': 'string', 'description': 'Payment handler id (default io.aimeat.morsels)'}, 'session_id': {'type': 'string', 'description': 'The open session id from aimeat_checkout_open'}}}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max sessions to return (default 20, max 200)'}}}
입력 스키마
{'type': 'object', 'required': ['items'], 'properties': {'note': {'type': 'string', 'description': 'Buyer note delivered with the order'}, 'items': {'type': 'array', 'description': '[{ kind?, agent?, offer_id?, app?, tool?, input?, quantity? }] — offer items need agent+offer_id; app-tool items need kind:"app-tool"+app+tool'}, 'currency': {'type': 'string', 'description': '"morsel" (default) or a money code (EUR/USD)'}}}
입력 스키마
{'type': 'object', 'required': ['action'], 'properties': {'ws': {'type': 'string', 'description': 'A row: its workspace id.'}, 'key': {'type': 'string', 'description': 'get, set, review: the memory key (an organism workspace key included) or the stored file key.'}, 'keys': {'type': 'array', 'description': 'scan: memory keys to classify.'}, 'kind': {'enum': ['memory', 'file', 'row'], 'type': 'string', 'description': 'get, set, review: what the content is. Default memory. explorer: only this kind.'}, 'mode': {'enum': ['off', 'owner', 'all'], 'type': 'string', 'description': "switch_set: the node's switch. off: nothing is classified; owner: each owner decides for their own content; all: on for every owner."}, 'label': {'type': 'string', 'description': 'set: the label id, from policy_get. explorer: only items with this label.'}, 'level': {'enum': ['node', 'owner', 'organism'], 'type': 'string', 'description': 'policy_get, policy_set, audit, exception_list: which level. Default owner. explorer: owner or organism. switch_set: node, the only one.'}, 'limit': {'type': 'number', 'description': 'audit, exception_list: at most this many rows, default 200. explorer: items per page, default 50, at most 200.'}, 'owner': {'type': 'string', 'description': 'get, set, review: the identity that holds the key when it is one of your agents or apps (a memory key or a stored file). Absent: your own.'}, 'since': {'type': 'string', 'description': 'audit, exception_list: only rows from this ISO time on.'}, 'space': {'type': 'string', 'description': 'A row: its row space.'}, 'until': {'type': 'string', 'description': 'exception_set: when the exception ends, ISO. Absent: until it is withdrawn.'}, 'action': {'enum': ['get', 'set', 'review', 'policy_get', 'policy_set', 'audit', 'scan', 'explorer', 'switch_set', 'exception_list', 'exception_set'], 'type': 'string', 'description': 'What to do.'}, 'cursor': {'type': 'string', 'description': 'explorer: the `next` value of the previous page.'}, 'policy': {'type': 'object', 'description': 'policy_set: the WHOLE level as policy_get returned it in `stored`, changed. It replaces the level. A label: { id, name: { fi, en, es }, rank 0-999, color, description, aiVisibility hidden|warning|allowed, audit, mayLeaveOrganism, lowerNeedsJustification, audience: { roles, groups, people } }. A rule: { id, name, kind keyword|regex|classifier, pattern, flags, minLabel, enabled, appliesTo: { kinds, organismId, ws, keyPrefix } }. An owner or organism level also carries enabled, which turns classification on for its content when the node lets each owner decide.'}, 'prefix': {'type': 'string', 'description': 'scan: classify every memory key under this prefix (queued).'}, 'reason': {'type': 'string', 'description': 'set: why you chose the label, when it is your own judgement. exception_set: why the item may go out despite its classification.'}, 'row_id': {'type': 'string', 'description': 'A row: its id.'}, 'pending': {'type': 'boolean', 'description': 'explorer: only the items where a suggestion waits for a person.'}, 'decision': {'enum': ['accept', 'reject'], 'type': 'string', 'description': "review: the person's decision on the waiting suggestion."}, 'confidence': {'type': 'number', 'description': 'set: how sure you are, 0 to 1, when the label is your own judgement.'}, 'human_said': {'type': 'string', 'description': "The person's own words, verbatim, when you relay their instruction. Never your own summary."}, 'organism_id': {'type': 'string', 'description': 'A row: its organism. policy_get, policy_set at level organism: the organism.'}, 'audit_action': {'enum': ['shown', 'used', 'refused', 'changed', 'exception'], 'type': 'string', 'description': 'audit: only this kind of row. exception: an exception made, used or withdrawn.'}, 'justification': {'type': 'string', 'description': 'set: why the content is less sensitive, when lowering from a label that needs a reason.'}, 'exception_action': {'enum': ['leave', 'ai-send', 'lower', 'policy', 'review'], 'type': 'string', 'description': 'exception_list: only exceptions of this act. exception_set: leave (the item may leave) or ai-send (an AI may send it out).'}}}
입력 스키마
{'type': 'object', 'properties': {'ghii': {'type': 'string', 'description': 'Beneficiary owner GHII. Defaults to you when reading.'}, 'state': {'type': 'string', 'description': 'verified | unverified | rejected. Omit to read.'}, 'method': {'type': 'string', 'description': 'How representation was established. Required when verifying.'}, 'subject': {'type': 'string', 'description': 'Namespaced external identity the approval attests to, opaque to the node'}, 'evidence': {'type': 'string', 'description': 'Case number, document reference, mandate id'}}}
입력 스키마
{'type': 'object', 'properties': {'role': {'type': 'string', 'description': 'beneficiary (default) = what you are owed; provider = what you owe'}, 'limit': {'type': 'number', 'description': 'Max entries (default 200, max 1000)'}, 'status': {'type': 'string', 'description': 'accrued | released | reversed'}}}
입력 스키마
{'type': 'object', 'required': ['beneficiary'], 'properties': {'payment': {'type': 'object', 'description': 'The signed x402 exact-scheme payload. Omit to quote.'}, 'currency': {'type': 'string', 'description': 'Defaults to EUR.'}, 'beneficiary': {'type': 'string', 'description': 'The beneficiary owner GHII you owe.'}}}
입력 스키마
{'type': 'object', 'required': ['tracking_code', 'beneficiary'], 'properties': {'beneficiary': {'type': 'string', 'description': 'The beneficiary owner GHII'}, 'tracking_code': {'type': 'string', 'description': 'From aimeat_commerce_beneficiary_earnings with role=provider'}}}
입력 스키마
{'type': 'object', 'properties': {'remove_ext': {'type': 'string', 'description': 'With remove_action: withdraw this split instead of listing'}, 'remove_action': {'type': 'string', 'description': 'With remove_ext: withdraw this split instead of listing'}}}
입력 스키마
{'type': 'object', 'required': ['ext', 'action', 'pool_percent'], 'properties': {'ext': {'type': 'string', 'description': 'Metered coordinate: extension name, apptool:{owner}/{appId}, or agentwork:{owner}/{agent}'}, 'state': {'type': 'string', 'description': 'active (default) or paused'}, 'action': {'type': 'string', 'description': 'The action id, tool name, or task type'}, 'dynamic': {'type': 'boolean', 'description': 'Let the capability name destinations per call via the _revenue key'}, 'capability': {'type': 'string', 'description': 'Human label; defaults to "{ext}/{action}"'}, 'pool_percent': {'type': 'number', 'description': '0-100: the share of YOUR cut routed to beneficiaries'}, 'beneficiaries': {'type': 'array', 'description': 'Standing beneficiaries: [{ ghii, weight?, note? }]. May be empty when dynamic is true.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['provider', 'secret_key'], 'properties': {'provider': {'type': 'string', 'description': 'PSP identifier, e.g. "stripe"'}, 'secret_key': {'type': 'string', 'description': 'The PSP secret credential (stored, never echoed back)'}, 'webhook_secret': {'type': 'string', 'description': "Stripe endpoint signing secret for this seller's webhook. Stored encrypted, never echoed back"}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'bic': {'type': 'string', 'description': 'Bank BIC/SWIFT.'}, 'city': {'type': 'string', 'description': 'City.'}, 'iban': {'type': 'string', 'description': 'Bank account in IBAN form — this is what an invoice tells the buyer to pay into.'}, 'name': {'type': 'string', 'description': 'Trade name as it should appear on invoices (e.g. "Perustaja Oy").'}, 'slug': {'type': 'string', 'description': 'Address label. Defaults to a normalised form of the name (ä→a, ö→o, spaces→hyphens).'}, 'email': {'type': 'string', 'description': 'Contact email shown to customers.'}, 'phone': {'type': 'string', 'description': 'Contact phone.'}, 'vat_id': {'type': 'string', 'description': 'VAT number (e.g. "FI12345678").'}, 'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code, exactly two letters (e.g. "FI").'}, 'business_id': {'type': 'string', 'description': 'Company registration number (Finnish Y-tunnus, e.g. "1234567-8").'}, 'description': {'type': 'string', 'description': 'One or two sentences about what the company does.'}, 'organism_id': {'type': 'string', 'description': 'The organism this company keeps its knowledge in. An empty string unlinks it.'}, 'postal_code': {'type': 'string', 'description': 'Postal code.'}, 'street_address': {'type': 'string', 'description': 'Street address of the registered office.'}, 'einvoice_address': {'type': 'string', 'description': 'E-invoice address (Finnish OVT identifier) if the company receives e-invoices.'}, 'einvoice_operator': {'type': 'string', 'description': 'E-invoice operator/intermediary id (often a bank BIC, e.g. "NDEAFIHH").'}}}
입력 스키마
{'type': 'object', 'required': ['company_id', 'kind'], 'properties': {'kind': {'enum': ['app', 'portfolio', 'redirect', 'none'], 'type': 'string', 'description': 'What the address serves.'}, 'target': {'type': 'string', 'description': '"owner/file.html" for kind app; an absolute URL for kind redirect; omit for portfolio and none.'}, 'company_id': {'type': 'string', 'description': 'Company id from aimeat_company_list.'}}}
입력 스키마
{'type': 'object', 'properties': {'page': {'type': 'number', 'description': 'Page number (default 1).'}, 'per_page': {'type': 'number', 'description': 'Companies per page (default 50, max 100).'}}}
입력 스키마
{'type': 'object', 'required': ['company_id', 'html'], 'properties': {'html': {'type': 'string', 'description': 'The complete HTML document to serve at the company address.'}, 'company_id': {'type': 'string', 'description': 'Company id from aimeat_company_list.'}}}
입력 스키마
{'type': 'object', 'required': ['company_id'], 'properties': {'bic': {'type': 'string', 'description': 'Bank BIC/SWIFT.'}, 'city': {'type': 'string', 'description': 'City.'}, 'iban': {'type': 'string', 'description': 'Bank account in IBAN form — this is what an invoice tells the buyer to pay into.'}, 'name': {'type': 'string', 'description': 'Trade name (the address is not renamed by this).'}, 'email': {'type': 'string', 'description': 'Contact email shown to customers.'}, 'phone': {'type': 'string', 'description': 'Contact phone.'}, 'vat_id': {'type': 'string', 'description': 'VAT number (e.g. "FI12345678").'}, 'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code, exactly two letters (e.g. "FI").'}, 'company_id': {'type': 'string', 'description': 'Company id from aimeat_company_list.'}, 'business_id': {'type': 'string', 'description': 'Company registration number (Finnish Y-tunnus, e.g. "1234567-8").'}, 'description': {'type': 'string', 'description': 'One or two sentences about what the company does.'}, 'organism_id': {'type': 'string', 'description': 'The organism this company keeps its knowledge in. An empty string unlinks it.'}, 'postal_code': {'type': 'string', 'description': 'Postal code.'}, 'street_address': {'type': 'string', 'description': 'Street address of the registered office.'}, 'einvoice_address': {'type': 'string', 'description': 'E-invoice address (Finnish OVT identifier) if the company receives e-invoices.'}, 'einvoice_operator': {'type': 'string', 'description': 'E-invoice operator/intermediary id (often a bank BIC, e.g. "NDEAFIHH").'}}}
입력 스키마
{'type': 'object', 'required': ['part'], 'properties': {'part': {'enum': ['draft', 'usecases', 'questionnaire'], 'type': 'string', 'description': 'Which document to read. Start with "draft".'}, 'since_days': {'type': 'number', 'description': 'For "draft": how far back to look for activity (default 30).'}}}
입력 스키마
{'type': 'object', 'required': ['part', 'value'], 'properties': {'part': {'enum': ['usecases', 'questionnaire'], 'type': 'string', 'description': 'Which document to replace.'}, 'value': {'type': 'object', 'description': 'The whole document. For "usecases", { usecases: [...] }. For "questionnaire", { version, note, classes, defaultClass, questions }.'}, 'dry_run': {'type': 'boolean', 'description': 'Validate and return what would be stored, storing nothing. Use this to show somebody the result before it goes in.'}}}
입력 스키마
{'type': 'object', 'properties': {'month': {'type': 'string', 'description': "A whole calendar month, YYYY-MM. Wins over since_days — a rolling window filed under a month's name is wrong in an archive somebody reads later."}, 'scope': {'enum': ['mine', 'node'], 'type': 'string', 'description': 'Whose report. "mine" (the default) is your owner\'s own slice; "node" is the whole installation and is operator-only.'}, 'since_days': {'type': 'number', 'description': 'Rolling window in days (default 30). Ignored when month is given.'}}}
입력 스키마
{'type': 'object', 'required': ['action'], 'properties': {'id': {'type': 'string', 'description': 'For "read": which stored report, e.g. 2026-08 for a month or 2026-08-23-1930 for a saved moment.'}, 'action': {'enum': ['list', 'read', 'save'], 'type': 'string', 'description': 'What to do. Start with "list".'}, 'since_days': {'type': 'number', 'description': 'For "save": the window the snapshot covers (default 30).'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['provider'], 'properties': {'instance': {'type': 'string', 'description': 'Only for a federated provider such as Mastodon: the server address.'}, 'provider': {'type': 'string', 'description': "Which service, exactly as aimeat_connection_providers names it (e.g. 'google-mail')."}, 'return_url': {'type': 'string', 'description': 'Where the browser lands after the person approves.'}}}
입력 스키마
{'type': 'object', 'required': ['target_gaii', 'scope', 'data_pattern', 'purpose'], 'properties': {'scope': {'type': 'string', 'description': 'Consent scope zone (private/dmz/federation).'}, 'purpose': {'type': 'string', 'description': 'Human-readable purpose for this consent.'}, 'ttl_hours': {'type': 'number', 'description': 'Expiry in hours from now (omit for indefinite).'}, 'target_gaii': {'type': 'string', 'description': 'Recipient GAII, "*", or prefixed identifier (organism.x, ghii:, domain:, node:).'}, 'data_pattern': {'type': 'string', 'description': 'Glob pattern for data keys (e.g. "profile.*").'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['consent_id'], 'properties': {'consent_id': {'type': 'string', 'description': 'ID of the consent to revoke.'}}}
입력 스키마
{'type': 'object', 'properties': {'name': {'type': 'string', 'description': "A person's name, as the owner would write it. Required with email."}, 'note': {'type': 'string', 'description': 'Anything the owner wants to remember about this person.'}, 'tags': {'type': 'array', 'description': "The owner's own labels for this person: an array of strings."}, 'email': {'type': 'string', 'description': "A person's email address. Required with name. This is what links them to an account if they join later."}, 'links': {'type': 'array', 'description': 'Where else this person is: an array of { label, url }. http(s) addresses only.'}, 'relation': {'type': 'string', 'description': "The owner's own word for the relationship (for example: following, to invite, colleague)."}, 'contact_id': {'type': 'string', 'description': 'An identity: bare local owner name, owner@node, agent#owner@node, or eco:app#owner@node. Omit when saving a person by name + email.'}}}
입력 스키마
{'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string', 'description': 'The address to invite.'}, 'message': {'type': 'string', 'description': 'A short message from the owner, carried in the email.'}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Filter by id, name or email (case-insensitive substring).'}, 'state': {'enum': ['pending', 'accepted', 'blocked'], 'type': 'string', 'description': 'Narrow to one consent state (default hides blocked). Only identities have one, so this excludes saved people.'}, 'include': {'type': 'string', 'description': 'Comma-separated extras. "together": the organisms each person and the owner share, on every ghii row. "invites": the owner\'s open invitation on every person without an account.'}}}
입력 스키마
{'type': 'object', 'required': ['contact_id'], 'properties': {'contact_id': {'type': 'string', 'description': 'The contact id to remove (from aimeat_contact_list).'}}}
입력 스키마
{'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string', 'description': 'Email address to look up (exact match).'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Cortex name.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Cortex name.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Cortex name.'}}}
입력 스키마
{'type': 'object', 'properties': {'libs': {'type': 'object', 'description': 'Map of filename to JavaScript source code for lib files. Omit for upload mode.'}, 'update': {'type': 'boolean', 'description': "Replace your installed cortex of the manifest's metadata.name in place (inline mode). Without it an inline install of an existing name is refused; a ZIP upload replaces a cortex you installed either way."}, 'manifest': {'type': 'string', 'description': 'Cortex manifest in YAML format. Omit to get an upload_url for a ZIP bundle. Use @file:path with the CLI fallback.'}}}
입력 스키마
{'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'One cortex, in full, instead of the list.'}, 'include_source': {'type': 'boolean', 'description': 'With name: also its manifest and lib files, for editing. Your own cortex only; needs cortex:write.'}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name'], 'properties': {'doc': {'type': 'object', 'description': 'The crew definition (crewaimeat crew_def shape): agent_name, agents[] {name, role, goal, backstory, tools[], allow_delegation}, tasks[] {id, description, expected_output, agent, context[], async}, and optionally llm_profile, temperature, process, listen_for, tags, capabilities {technical: [{name, type}], domain, languages}, skills, offers, signals, readme_md. At least one task description must contain {{ctx.prompt}}; task context may only name EARLIER task ids. Tools come from the runtime\'s own menu — memory, web, article_fetch, schedule, dm, delegate, image, app_build, local_memory, app_tools, crew_registry, exchange (and exchange_* verbs) — which the runtime owns and adds to, so this list can be behind it; the runtime refuses a tool that does not exist. A definition that needs a tool of its own is a Python crew, not a definition. `listen_for` says which wake starts the crew (tasks, messages, records, dms) and defaults to ["tasks"], which is wrong for any agent whose work arrives as a message. Omit it to discard the saved draft.'}, 'target_agent_name': {'type': 'string', 'description': "The agent whose definition this is: the bare name of one of your owner's agents, or its full GAII. An agent may name itself or a same-owner sibling."}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name'], 'properties': {'target_agent_name': {'type': 'string', 'description': "The agent whose definition this is: the bare name of one of your owner's agents, or its full GAII. An agent may name itself or a same-owner sibling."}}}
입력 스키마
{'type': 'object', 'properties': {'choice': {'type': 'object', 'description': "The choice: {kind:'profile', profile} or {kind:'model', label, provider}. Omit or pass null to clear it."}, 'target_agent_name': {'type': 'string', 'description': "The agent whose definition this is: the bare name of one of your owner's agents, or its full GAII. An agent may name itself or a same-owner sibling. Omit it to set the owner's default for every agent."}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name'], 'properties': {'target_agent_name': {'type': 'string', 'description': "The agent whose definition this is: the bare name of one of your owner's agents, or its full GAII. An agent may name itself or a same-owner sibling."}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name'], 'properties': {'doc': {'type': 'object', 'description': 'The crew definition (crewaimeat crew_def shape): agent_name, agents[] {name, role, goal, backstory, tools[], allow_delegation}, tasks[] {id, description, expected_output, agent, context[], async}, and optionally llm_profile, temperature, process, listen_for, tags, capabilities {technical: [{name, type}], domain, languages}, skills, offers, signals, readme_md. At least one task description must contain {{ctx.prompt}}; task context may only name EARLIER task ids. Tools come from the runtime\'s own menu — memory, web, article_fetch, schedule, dm, delegate, image, app_build, local_memory, app_tools, crew_registry, exchange (and exchange_* verbs) — which the runtime owns and adds to, so this list can be behind it; the runtime refuses a tool that does not exist. A definition that needs a tool of its own is a Python crew, not a definition. `listen_for` says which wake starts the crew (tasks, messages, records, dms) and defaults to ["tasks"], which is wrong for any agent whose work arrives as a message. The definition to make live.'}, 'revision': {'type': 'number', 'description': 'Instead of doc: the kept revision to republish (it becomes a new revision).'}, 'target_agent_name': {'type': 'string', 'description': "The agent whose definition this is: the bare name of one of your owner's agents, or its full GAII. An agent may name itself or a same-owner sibling."}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name', 'doc'], 'properties': {'doc': {'type': 'object', 'description': 'The crew definition (crewaimeat crew_def shape): agent_name, agents[] {name, role, goal, backstory, tools[], allow_delegation}, tasks[] {id, description, expected_output, agent, context[], async}, and optionally llm_profile, temperature, process, listen_for, tags, capabilities {technical: [{name, type}], domain, languages}, skills, offers, signals, readme_md. At least one task description must contain {{ctx.prompt}}; task context may only name EARLIER task ids. Tools come from the runtime\'s own menu — memory, web, article_fetch, schedule, dm, delegate, image, app_build, local_memory, app_tools, crew_registry, exchange (and exchange_* verbs) — which the runtime owns and adds to, so this list can be behind it; the runtime refuses a tool that does not exist. A definition that needs a tool of its own is a Python crew, not a definition. `listen_for` says which wake starts the crew (tasks, messages, records, dms) and defaults to ["tasks"], which is wrong for any agent whose work arrives as a message. The FIRST definition for this agent.'}, 'validate_with': {'type': 'string', 'description': 'Which connected same-owner agent should check it. Omit and any connected one is used.'}, 'target_agent_name': {'type': 'string', 'description': "The agent whose definition this is: the bare name of one of your owner's agents, or its full GAII. An agent may name itself or a same-owner sibling."}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name'], 'properties': {'doc': {'type': 'object', 'description': 'Start a trial: The crew definition (crewaimeat crew_def shape): agent_name, agents[] {name, role, goal, backstory, tools[], allow_delegation}, tasks[] {id, description, expected_output, agent, context[], async}, and optionally llm_profile, temperature, process, listen_for, tags, capabilities {technical: [{name, type}], domain, languages}, skills, offers, signals, readme_md. At least one task description must contain {{ctx.prompt}}; task context may only name EARLIER task ids. Tools come from the runtime\'s own menu — memory, web, article_fetch, schedule, dm, delegate, image, app_build, local_memory, app_tools, crew_registry, exchange (and exchange_* verbs) — which the runtime owns and adds to, so this list can be behind it; the runtime refuses a tool that does not exist. A definition that needs a tool of its own is a Python crew, not a definition. `listen_for` says which wake starts the crew (tasks, messages, records, dms) and defaults to ["tasks"], which is wrong for any agent whose work arrives as a message. Omit when continuing to wait on a try_id.'}, 'prompt': {'type': 'string', 'description': 'Start a trial: what the crew should do in this run (becomes {{ctx.prompt}}). Required with doc.'}, 'try_id': {'type': 'string', 'description': 'Continue waiting on a trial this tool already started and returned as running.'}, 'wait_seconds': {'type': 'number', 'description': 'How long this call waits for the result before handing back the try_id (default 50, max 120).'}, 'target_agent_name': {'type': 'string', 'description': "The agent whose definition this is: the bare name of one of your owner's agents, or its full GAII. An agent may name itself or a same-owner sibling."}}}
입력 스키마
{'type': 'object', 'required': ['target_agent_name', 'doc'], 'properties': {'doc': {'type': 'object', 'description': 'The crew definition (crewaimeat crew_def shape): agent_name, agents[] {name, role, goal, backstory, tools[], allow_delegation}, tasks[] {id, description, expected_output, agent, context[], async}, and optionally llm_profile, temperature, process, listen_for, tags, capabilities {technical: [{name, type}], domain, languages}, skills, offers, signals, readme_md. At least one task description must contain {{ctx.prompt}}; task context may only name EARLIER task ids. Tools come from the runtime\'s own menu — memory, web, article_fetch, schedule, dm, delegate, image, app_build, local_memory, app_tools, crew_registry, exchange (and exchange_* verbs) — which the runtime owns and adds to, so this list can be behind it; the runtime refuses a tool that does not exist. A definition that needs a tool of its own is a Python crew, not a definition. `listen_for` says which wake starts the crew (tasks, messages, records, dms) and defaults to ["tasks"], which is wrong for any agent whose work arrives as a message.'}, 'target_agent_name': {'type': 'string', 'description': "The agent whose definition this is: the bare name of one of your owner's agents, or its full GAII. An agent may name itself or a same-owner sibling."}}}
입력 스키마
{'type': 'object', 'required': ['app'], 'properties': {'app': {'type': 'string', 'description': 'The app, as "owner/filename.html".'}}}
입력 스키마
{'type': 'object', 'required': ['app', 'data_map'], 'properties': {'app': {'type': 'string', 'description': 'The app, as "owner/filename.html".'}, 'data_map': {'type': 'object', 'description': 'The whole map, carrying spec "aimeat.datamap/2": what, usedFor, form, arrangement, machinery, leaves, held[], elsewhere[]. A held row may also carry `isA`, the semantic type its records ARE — schema:Person, aimeat:Task, or a full IRI (GET /v1/ns lists the ones this node names). `kind` and `holds` say what the data is in the app\'s own words, and `isA` says the same in a word other systems already know, which is what makes the family findable with the type filter on memory search. A family that is genuinely nothing standard leaves it out rather than reaching for the nearest wrong type. A held row may also carry `classification`, the label id of the classification the app expects for that family by default, such as "luottamuksellinen" (1 to 40 lowercase letters, digits and dashes). It labels nothing and never refuses the map; an id of the wrong shape comes back as a finding. These two are the only optional fields on a row.'}}}
입력 스키마
{'type': 'object', 'required': ['ref', 'resource'], 'properties': {'ref': {'type': 'string', 'description': 'pkg:owner/name, optionally @sha256:... to pin a version.'}, 'limit': {'type': 'number', 'description': 'Rows for csv/json (default 500, max 5000).'}, 'format': {'enum': ['url', 'csv', 'json'], 'type': 'string', 'description': 'url (default) = the permanent address. csv/json = inline rows.'}, 'offset': {'type': 'number', 'description': 'Row to start from, for csv/json.'}, 'select': {'type': 'array', 'description': 'Only these columns.'}, 'resource': {'type': 'string', 'description': 'Which resource of the package.'}}}
입력 스키마
{'type': 'object', 'required': ['name', 'changes', 'resources'], 'properties': {'name': {'type': 'string', 'description': 'Lowercase letters, digits and dashes. Becomes part of the permanent URL.'}, 'title': {'type': 'string', 'description': 'Human title for the package.'}, 'changes': {'type': 'string', 'description': 'What changed against the previous version and why.'}, 'license': {'type': 'string', 'description': 'e.g. CC-BY-4.0. You publish under your owner name; say the terms.'}, 'sources': {'type': 'array', 'description': 'Where the data came from: { url, title, retrievedAt }.'}, 'resources': {'type': 'array', 'description': 'One or more { name, rows, schema?, title?, description? }. rows is an array of objects.'}, 'description': {'type': 'string', 'description': 'What the package contains, for a person deciding whether to use it.'}, 'legal_basis': {'type': 'string', 'description': 'Why you may publish this — e.g. a public register, consent, a contract.'}}}
입력 스키마
{'type': 'object', 'required': ['state'], 'properties': {'rule': {'type': 'string', 'description': "The id of one of the owner's decision rules (aimeat_decide_rules lists them). The rule holds the questions, thresholds and bands, so send `state` and leave `questions`, `thresholds` and `gates` out: a call that sends them beside a rule is refused."}, 'cache': {'type': 'boolean', 'description': 'Reuse an identical earlier decision (default true).'}, 'gates': {'type': 'string', 'description': 'What the answer decides, in plain words ("send the reply automatically").'}, 'names': {'type': 'array', 'description': "Extra person names to remove before sending, beyond the owner's contacts."}, 'state': {'type': 'object', 'description': 'What is being judged: a string, an object with named fields (preferred), or an array of records. Send only what the questions need; unrelated content lowers accuracy and is what you pay for. With `rule`, only the fields that rule lists under `sends`.'}, 'app_id': {'type': 'string', 'description': 'App attribution for the per-app quota.'}, 'subject': {'type': 'string', 'description': 'What the decision is about: a memory key or a record id. The owner asks by this later.'}, 'provider': {'type': 'string', 'description': 'The id of the decision provider to ask (aimeat_decide_settings lists them under `providers`). Leave out to let the node pick. Refused beside a rule that names a different one.'}, 'questions': {'type': 'object', 'description': 'Required unless `rule` is given. A map of YOUR ids to questions. Three types: {type:"noul", instructions, criteria?:{true?,false?}} returns the probability (0-1) that the statement is true; {type:"choice", instructions, criteria:{"<option>":"<what it means>"|null}} picks one of 2-240 options and returns a probability per option and a confidence; {type:"score", instructions, criteria:["<lowest level>", ..., "<highest level>"]} rates on 2-10 ordered levels. Write instructions and criteria in ENGLISH whatever language the state is in: the model is trained on English first. Ask everything you might need in ONE call (cost is in the state, answers are free), keep one judgment per question, add a "none of these" option to a choice, and keep arithmetic, counting and date comparison in code.'}, 'thresholds': {'type': 'object', 'description': 'The thresholds you will apply, e.g. {"urgent": 0.8}. Recorded with the decision.'}, 'public_content': {'type': 'boolean', 'description': "The content is already public and needs no scrubbing. Honoured only when the owner's policy allows it."}}}
입력 스키마
{'type': 'object', 'required': ['rule', 'reason'], 'properties': {'rule': {'type': 'object', 'description': 'The proposed rule: { id, title, decides, sends, questions, thresholds, bands, use, gate, sample }. Questions in English.'}, 'reason': {'type': 'string', 'description': 'Why this rule should exist, in a sentence the owner can decide from (10 to 1000 characters).'}}}
입력 스키마
{'type': 'object', 'properties': {'rule_id': {'type': 'string', 'description': 'Read one rule in full, with its questions, thresholds and bands.'}}}
입력 스키마
{'type': 'object', 'required': ['action'], 'properties': {'keys': {'type': 'array', 'description': "For start: owner memory keys; each record's value is one state. A key the node reads to decide what it does (its AI and decision keys, a payout record) is refused."}, 'rule': {'type': 'string', 'description': "For start: one of the owner's decision rules, in place of questions, thresholds and gates. Each result then carries the rule's outcome."}, 'gates': {'type': 'string', 'description': 'What the answers decide.'}, 'items': {'type': 'array', 'description': 'For start: [{ subject, state }].'}, 'names': {'type': 'array', 'description': 'Extra person names to remove before sending.'}, 'action': {'enum': ['start', 'get', 'list', 'resume', 'stop'], 'type': 'string', 'description': 'start | get | list | resume | stop'}, 'app_id': {'type': 'string', 'description': 'App attribution for the per-app quota.'}, 'fields': {'type': 'array', 'description': 'For start: keep only these top-level fields of each state.'}, 'prefix': {'type': 'string', 'description': 'For start: every owner record under this key prefix, less the records the node reads to decide what it does.'}, 'run_id': {'type': 'string', 'description': 'The run, for get, resume and stop.'}, 'provider': {'type': 'string', 'description': 'For start: the decision provider every item is asked on. Leave out to let the node pick.'}, 'questions': {'type': 'object', 'description': 'For start: the questions, as for aimeat_decide. Leave out when `rule` is given.'}, 'thresholds': {'type': 'object', 'description': 'The thresholds you will apply.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {'rule': {'type': 'string', 'description': 'Only decisions one decision rule made (its id).'}, 'limit': {'type': 'number', 'description': 'How many (1-200, default 50).'}, 'app_id': {'type': 'string', 'description': 'Only decisions made for this app.'}, 'before': {'type': 'string', 'description': 'Only decisions made before this ISO time (paging cursor: the createdAt of the last one you have).'}, 'subject': {'type': 'string', 'description': 'Only decisions about this subject.'}, 'provider': {'type': 'string', 'description': 'Only decisions one decision provider answered (its id).'}, 'stats_by': {'enum': ['rule', 'principal', 'provider'], 'type': 'string', 'description': 'Return the QUALITY NUMBERS instead of the decisions, counted by the node: "rule" gives one group per decision rule, "principal" one per asker, "provider" one per decision provider. Each group is { key, decisions, outcomes: { act, ask, stop }, gateStops, overridden, confirmed, costUsd, lastAt }. `rule`, `principal` and `provider` narrow what is counted. This is what thresholds are tuned from.'}, 'principal': {'type': 'string', 'description': 'Only decisions one principal asked for: an agent\'s full identity, e.g. "bot#alice@node-id".'}, 'decision_id': {'type': 'string', 'description': 'Read one decision.'}}}
입력 스키마
{'type': 'object', 'required': ['decision_id', 'outcome'], 'properties': {'note': {'type': 'string', 'description': "Why, in the person's words."}, 'outcome': {'enum': ['confirmed', 'overridden'], 'type': 'string', 'description': 'confirmed | overridden'}, 'override': {'type': 'object', 'description': 'What the person decided instead, when overridden.'}, 'decision_id': {'type': 'string', 'description': 'The decision.'}}}
입력 스키마
{'type': 'object', 'required': ['id', 'filename'], 'properties': {'id': {'type': 'string', 'description': 'The part to adopt.'}, 'filename': {'type': 'string', 'description': 'Your published app file the layout lands in, e.g. "errands.html".'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The part id, from the search.'}}}
입력 스키마
{'type': 'object', 'required': ['filename'], 'properties': {'kept': {'type': 'boolean', 'description': 'false takes it back. Default true.'}, 'filename': {'type': 'string', 'description': 'The published app the owner is satisfied with, e.g. "habits.html". It must belong to your owner.'}}}
입력 스키마
{'type': 'object', 'required': ['part'], 'properties': {'part': {'type': 'object', 'description': 'The part: { id, kind: "layout"|"fill"|"look"|"motion"|"illustration"|"genre"|"ambient"|"effect"|"component", title, summary, body, tags? }. A COMPONENT has body { prefix, html, css, use, judgement: { reach: "general"|"special", why }, from_app? }: markup that closes every element it opens and a stylesheet under one class prefix that closes every block, bracket, comment and string it opens (a nested rule starts with "&"; the only at-rules are @media, @supports, @container and @starting-style, and @keyframes, @property, @counter-style, @font-palette-values, @position-try, @function and @font-feature-values under a name that starts with the prefix, with the blocks of @font-feature-values inside it and the parameters of a @function untyped; a counter, anchor, view transition or timeline a declaration names starts with the prefix too, as the word itself, never through var(); an <li> stands only inside a <ul> or <ol>, no display holds list-item, and with a <summary> in the markup every counter-increment also writes list-item 0; with a <ul> or <ol> in the markup every counter-reset also names list-item and all takes only revert or revert-layer), every colour a var(--ak-…) token, NO script. The kind decides the body: a whole mosaic layout, the vocabulary aimeat_app_manage action "ui_get" hands you (layout, fill); { tokens, look? } (look); { tokens } of motion tokens only (motion); { style, palette_words? } (illustration); { template } naming a served genre template, or { app: { owner, filename }, judgement: { reach, why } } naming your own published page whose look is its own (genre); { ambient: waves|aurora|dust|grid|static|ink, alpha?, speed?, look?, tokens? } (ambient — "none" is an arrangement\'s choice, never a part).'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'A word matched against id, title, summary and tags.'}, 'kind': {'type': 'string', 'description': 'Only this part kind: layout, fill, look, motion, illustration, genre, ambient, effect or component.'}, 'view': {'type': 'string', 'description': '"reasons": what builders wrote down about the Book, as the list of what it should become next. "map": the whole published Book on one page (also what calling with nothing answers). Omit it to search rows.'}, 'limit': {'type': 'number', 'description': 'Rows to return, 1-200. Default 50.'}, 'status': {'type': 'string', 'description': 'Only this lifecycle state: proposed, published, aging or retired. Omit for all.'}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Free-text query. Omit to browse by filters only.'}, 'mode': {'enum': ['map', 'find'], 'type': 'string', 'description': '"find" (default) returns entries; "map" returns only facet counts (cheap probe).'}, 'tags': {'type': 'string', 'description': 'CSV of tags; an entry must carry ALL of them.'}, 'type': {'type': 'string', 'description': 'CSV of types: capability, workflow, knowledge, decision, research, material, company, offering, document, organism, app, tool, template, skill, designbook, memory.'}, 'limit': {'type': 'number', 'description': 'Max entries to return (default 20, max 100).'}, 'scope': {'enum': ['own', 'public', 'shared'], 'type': 'string', 'description': 'own (default), public, or shared.'}, 'segment': {'type': 'string', 'description': 'CSV of segments (coarse area within a type) to include.'}}}
입력 스키마
{'type': 'object', 'required': ['conversation_ids'], 'properties': {'restore': {'type': 'boolean', 'description': 'true brings the conversations back to the list instead of archiving them.'}, 'conversation_ids': {'type': 'array', 'description': 'Conversation ids to archive or restore (1-500), from aimeat_dm_inbox_as_owner.'}}}
입력 스키마
{'type': 'object', 'required': ['to', 'questions'], 'properties': {'to': {'type': 'string', 'description': 'Recipient: owner@node, agent#owner@node, or eco:app#owner@node.'}, 'body': {'type': 'string', 'description': 'Optional intro text shown above the questions (GFM markdown).'}, 'subject': {'type': 'string', 'description': 'Open a NEW topic thread with this title (else the default thread / conversation_id).'}, 'questions': {'type': 'array', 'description': '1–20 questions, each { id, header (short chip), prompt, options:[{id,label}], multiSelect?, allowOther? (default true), required? }.'}, 'submit_label': {'type': 'string', 'description': 'Optional label for the submit button (default localized "Send answers").'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'conversation_id': {'type': 'string', 'description': 'Continue a specific existing thread by id.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'properties': {'to': {'type': 'array', 'description': 'Recipient identities (owner@node, agent#owner@node, eco:app#owner@node), up to 500.'}, 'body': {'type': 'string', 'description': 'Message body (GFM markdown). Optional only if you attach a file or send questions.'}, 'mode': {'type': 'string', 'description': '"broadcast" (default, each recipient can reply) or "announcement" (read-only, replies disabled).'}, 'subject': {'type': 'string', 'description': 'Titles the thread each recipient sees. Without it the copies land in the nameless per-pair thread.'}, 'audience': {'type': 'string', 'description': '"node-users" (every human on this node) or "federation-users" (that plus every owner on each active peer). OPERATOR ONLY.'}, 'group_id': {'type': 'string', 'description': 'A Share Group whose members are the audience — a reusable distribution list.'}, 'attachments': {'type': 'array', 'description': 'Up to 20 attachment descriptors { storage_key, mime, kind, size, name }, each pre-uploaded via aimeat_storage_upload.'}, 'interactive': {'type': 'object', 'description': 'A question set { role:"questions", v:1, questions:[…] } — makes it a poll fanned out to everyone.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['message_id'], 'properties': {'message_id': {'type': 'string', 'description': 'Id of the message to remove, from aimeat_dm_inbox or aimeat_dm_thread.'}}}
입력 스키마
{'type': 'object', 'properties': {'page': {'type': 'number', 'description': 'Page number (default 1).'}, 'per_page': {'type': 'number', 'description': 'Messages per page (default 20, max 100).'}}}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'At most this many conversations, newest first (default 30, max 200). conversations_total says how many there are.'}, 'unread_only': {'type': 'boolean', 'description': 'Only conversations with something unread.'}}}
입력 스키마
{'type': 'object', 'properties': {'rules': {'type': 'array', 'description': 'Replace every rule with this list (same shape as add_rule).'}, 'add_rule': {'type': 'object', 'description': 'A rule { id?, name, enabled?, action: "fold" | "group" | "archive", match: { with?, subject?, body?, scope?: "agents" | "all", older_than_days? } }.'}, 'remove_rule': {'type': 'string', 'description': 'Id of a rule to remove.'}, 'auto_archive_days': {'type': 'number', 'description': 'Days without a message before that happens (1-365).'}, 'fold_same_subject': {'type': 'boolean', 'description': 'One row for conversations one sender opened with the same subject within an hour.'}, 'auto_archive_enabled': {'type': 'boolean', 'description': "Archive the own agents' conversations by age."}}}
입력 스키마
{'type': 'object', 'required': ['to'], 'properties': {'to': {'type': 'string', 'description': 'Recipient: owner@node, agent#owner@node, or eco:app#owner@node.'}, 'body': {'type': 'string', 'description': 'Message body (GFM markdown). Optional only if you attach ≥1 file.'}, 'subject': {'type': 'string', 'description': 'Open a NEW topic thread with this title, instead of one endless thread with the recipient. Give one when you write to support@operators, so the operators see what the thread is about.'}, 'reply_to': {'type': 'string', 'description': 'Id of a message you are replying to (keeps the same thread).'}, 'attachments': {'type': 'array', 'description': 'Up to 20 attachment descriptors { storage_key, mime, kind, size, name }, each pre-uploaded via aimeat_storage_upload.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'conversation_id': {'type': 'string', 'description': 'Continue a specific existing thread by its id: the one a send returned, or one from aimeat_dm_inbox.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['to'], 'properties': {'to': {'type': 'string', 'description': 'Recipient: owner@node, agent#owner@node, or eco:app#owner@node.'}, 'body': {'type': 'string', 'description': 'Message body (GFM markdown). Optional only if you attach ≥1 file.'}, 'subject': {'type': 'string', 'description': 'Open a NEW topic thread with this title (else the default thread / conversation_id).'}, 'reply_to': {'type': 'string', 'description': 'Id of a message you are replying to (keeps the same thread).'}, 'attachments': {'type': 'array', 'description': 'Up to 20 attachment descriptors { storage_key, mime, kind, size, name }, each pre-uploaded via aimeat_storage_upload.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'conversation_id': {'type': 'string', 'description': "The owner's existing thread with the recipient, so the reply lands there."}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['conversation_id'], 'properties': {'page': {'type': 'number', 'description': 'Page number (default 1).'}, 'per_page': {'type': 'number', 'description': 'Messages per page (default 50, max 200).'}, 'conversation_id': {'type': 'string', 'description': 'Conversation id to read.'}}}
입력 스키마
{'type': 'object', 'required': ['conversation_id'], 'properties': {'page': {'type': 'number', 'description': 'Page number (default 1).'}, 'per_page': {'type': 'number', 'description': 'Messages per page (default 50, max 200).'}, 'conversation_id': {'type': 'string', 'description': "The owner's conversation id."}}}
입력 스키마
{'type': 'object', 'required': ['ext', 'action'], 'properties': {'ext': {'type': 'string', 'description': 'The provider extension name.'}, 'action': {'type': 'string', 'description': 'The action id on that extension (must be priced).'}, 'app_id': {'type': 'string', 'description': 'The consuming app id ("owner/filename") when this contract powers an app — shown on the per-app cost view.'}, 'plan_id': {'type': 'string', 'description': 'A provider-declared plan id (bundle/subscription). Omit = per_call.'}, 'cap_units': {'type': 'number', 'description': "Budget ceiling in the action's unit (morsels or money micro-units). Must cover one charge. Omit = uncapped."}, 'contract_ref': {'type': 'string', 'description': 'Your reference for this contract. Omit to auto-generate one (mcp:<uuid>).'}}}
입력 스키마
{'type': 'object', 'required': ['need_id', 'ext', 'action'], 'properties': {'ext': {'type': 'string', 'description': 'Your extension name (you must own it).'}, 'note': {'type': 'string', 'description': 'A note to the requester.'}, 'action': {'type': 'string', 'description': 'The action id on your extension.'}, 'need_id': {'type': 'string', 'description': 'The open need id (e.g. "need-…").'}, 'plan_id': {'type': 'string', 'description': 'A plan id declared on your action (bundle/subscription).'}, 'offering_id': {'type': 'string', 'description': 'Link an existing offering of yours.'}}}
입력 스키마
{'type': 'object', 'required': ['need_id', 'bid_id'], 'properties': {'bid_id': {'type': 'string', 'description': 'The open bid to accept.'}, 'need_id': {'type': 'string', 'description': 'Your need id.'}, 'cap_units': {'type': 'number', 'description': "Budget ceiling for the minted contract (defaults to the need's budget cap)."}}}
입력 스키마
{'type': 'object', 'required': ['offering_id'], 'properties': {'offering_id': {'type': 'string', 'description': 'One of your own offering ids.'}}}
입력 스키마
{'type': 'object', 'required': ['ext', 'action', 'mode'], 'properties': {'ext': {'type': 'string', 'description': 'The contracted extension name.'}, 'mode': {'enum': ['pause', 'revoke'], 'type': 'string', 'description': 'pause (reversible) or revoke (terminal).'}, 'action': {'type': 'string', 'description': 'The contracted action id.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['description'], 'properties': {'ext': {'type': 'string', 'description': 'A desired extension name (when you know the exact capability).'}, 'spec': {'type': 'object', 'description': 'Minimum output shape: { requiredFields: string[], format?, sample?, notes? }.'}, 'action': {'type': 'string', 'description': 'A desired action id (pair with `ext`).'}, 'app_id': {'type': 'string', 'description': 'The app this need belongs to ("owner/filename").'}, 'autonomy': {'enum': ['supervised', 'auto'], 'type': 'string', 'description': 'supervised (default) or auto.'}, 'budget_cap': {'type': 'number', 'description': 'Budget ceiling (integer; morsels or money micro-units).'}, 'budget_unit': {'enum': ['morsels', 'money'], 'type': 'string', 'description': 'Budget unit for `budget_cap`.'}, 'description': {'type': 'string', 'description': 'What you need, in plain language.'}}}
입력 스키마
{'type': 'object', 'properties': {'mine': {'type': 'boolean', 'description': 'Only needs YOU posted (any state).'}, 'open': {'type': 'boolean', 'description': 'Only open (unmatched, unclosed) needs.'}}}
입력 스키마
{'type': 'object', 'required': ['offering_id'], 'properties': {'offering_id': {'type': 'string', 'description': 'The offering id (e.g. "off-…"), from aimeat_exchange_offerings.'}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Free-text match over title/description/ext/action/tags.'}, 'ext': {'type': 'string', 'description': 'Exact extension name to match (pair with `action`).'}, 'stats': {'type': 'boolean', 'description': 'Fold in per-offering usage/reputation stats (default false).'}, 'action': {'type': 'string', 'description': 'Exact action id to match (pair with `ext`).'}}}
입력 스키마
{'type': 'object', 'required': ['proposal_id', 'decision'], 'properties': {'decision': {'enum': ['accept', 'decline', 'withdraw'], 'type': 'string', 'description': 'accept / decline (counterparty) or withdraw (proposer).'}, 'proposal_id': {'type': 'string', 'description': 'The pending proposal id (from aimeat_exchange_proposals).'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['offering_id'], 'properties': {'note': {'type': 'string', 'description': 'An optional note to the provider.'}, 'input': {'type': 'object', 'description': "The task input (matching the offering's task input_schema)."}, 'offering_id': {'type': 'string', 'description': 'The agent-work offering id you hold a contract for.'}}}
입력 스키마
{'type': 'object', 'required': ['work_id'], 'properties': {'note': {'type': 'string', 'description': 'An optional delivery note.'}, 'output': {'type': 'object', 'description': "The delivered result (matching the offering's task output_schema)."}, 'work_id': {'type': 'string', 'description': 'The open work item to deliver (from aimeat_exchange_work_list role=provider).'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'properties': {'role': {'enum': ['consumer', 'provider'], 'type': 'string', 'description': 'consumer (default — your started tasks) or provider (tasks to deliver).'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Extension name.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Extension name.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Extension name.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Extension name.'}, 'include_source': {'type': 'boolean', 'description': "Also return each action's installed script. Refused unless this extension was installed by your own owner and the session holds ext:write."}}}
입력 스키마
{'type': 'object', 'properties': {'update': {'type': 'boolean', 'description': 'Upsert an already-installed extension in place (lifecycle + ext: memory preserved). Without this, an existing name is an error.'}, 'scripts': {'type': 'object', 'description': 'Map of script filename to JavaScript source code. Omit for upload mode.'}, 'activate': {'type': 'boolean', 'description': 'Activate immediately after install/update.'}, 'manifest': {'type': 'string', 'description': 'Extension manifest in YAML format. Omit to get an upload_url for a ZIP bundle. Use @file:path with the CLI fallback.'}}}
입력 스키마
{'type': 'object', 'required': ['extension_name', 'action_id'], 'properties': {'input': {'type': 'object', 'description': 'Input parameters for the extension action.'}, 'action_id': {'type': 'string', 'description': 'Action identifier.'}, 'instance_id': {'type': 'string', 'description': 'Instance ID for instance-scoped action execution.'}, 'extension_name': {'type': 'string', 'description': 'Name of the extension to invoke.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['target_type', 'target_id', 'reason'], 'properties': {'reason': {'type': 'string', 'description': 'Reason for the report.'}, 'target_id': {'type': 'string', 'description': 'Identifier of the reported content.'}, 'description': {'type': 'string', 'description': 'Optional additional context.'}, 'target_type': {'type': 'string', 'description': 'Type of content being reported.'}}}
입력 스키마
{'type': 'object', 'required': ['group_id', 'identifier', 'identifier_type'], 'properties': {'group_id': {'type': 'string', 'description': 'Group identifier.'}, 'identifier': {'type': 'string', 'description': 'Member GAII or GHII.'}, 'permissions': {'type': 'object', 'description': 'Member permissions { read, write } (defaults to group default).'}, 'identifier_type': {'enum': ['gaii', 'ghii'], 'type': 'string', 'description': 'Type of identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Group name.'}, 'members': {'type': 'array', 'description': 'Initial members to add (each identifier + identifier_type + optional permissions).'}, 'description': {'type': 'string', 'description': 'Group description.'}}}
입력 스키마
{'type': 'object', 'required': ['group_id'], 'properties': {'group_id': {'type': 'string', 'description': 'Group identifier.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['group_id', 'identifier'], 'properties': {'group_id': {'type': 'string', 'description': 'Group identifier.'}, 'identifier': {'type': 'string', 'description': 'Member GAII or GHII.'}}}
입력 스키마
{'type': 'object', 'properties': {'tier': {'type': 'string', 'description': 'A prompt by id. "build-app-atelier" is the first part of the Atelier build specification, the track an app is built on unless there is a reason not to, and "build-app-atelier/<id>" is one of the parts it lists. "build-app" and "build-app/<id>" do the same for the Classic specification.'}, 'module': {'type': 'string', 'description': 'Optional handbook module name, such as tasks or messages.'}, 'surface': {'enum': ['appdev', 'agent', 'service', 'admin', 'commerce', 'primitives', 'full'], 'type': 'string', 'description': "Another interface's handbook than your own. Leave it out to get the one for the interface you are connected to."}}}
입력 스키마
{'type': 'object', 'required': ['levels', 'commands'], 'properties': {'app_id': {'type': 'string', 'description': 'App id / name for the schema label (optional).'}, 'levels': {'type': 'array', 'description': 'Level schema: array of { level (int, 0 = most power), key, label, capabilities: string[] }.'}, 'commands': {'type': 'array', 'description': 'Command manifest: array of { id, description, capability, tier: read|write|irreversible }.'}}}
입력 스키마
{'type': 'object', 'required': ['prompt'], 'properties': {'role': {'type': 'string', 'description': 'The AI role to run as: one of your roles (aimeat_ai_roles), or for an app a role it declares and you bound. A named model or provider wins over it.'}, 'size': {'type': 'string', 'description': 'Provider-specific size, e.g. "1024x1024".'}, 'model': {'type': 'string', 'description': 'Override the image model.'}, 'app_id': {'type': 'string', 'description': 'Attribution for the per-app quota and the spend report.'}, 'prompt': {'type': 'string', 'description': 'What the picture should show.'}, 'public': {'type': 'boolean', 'description': 'Make it publicly readable so a model or page can fetch it. Default false.'}, 'fallback': {'type': 'boolean', 'description': "false keeps the call on its first provider; omitted, the owner's rules decide."}, 'provider': {'type': 'string', 'description': "One of the owner's AI providers (aimeat_ai_providers), or a type. No fallback then."}, 'storage_key': {'type': 'string', 'description': 'Where to store it. Defaults to ai-images/<timestamp>-<random>.<ext>.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Instance name.'}, 'model': {'type': 'string', 'description': 'AI model identifier (e.g. gpt-4o, claude-3-5-sonnet); platform is derived from it.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['instance_id'], 'properties': {'instance_id': {'type': 'string', 'description': 'Instance identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['capability'], 'properties': {'input': {'type': 'object', 'description': "That capability's own parameters, as an object."}, 'capability': {'type': 'string', 'description': 'The capability id, e.g. aimeat_memory_write. Get it from aimeat_discover or GET /v1/capabilities/node.'}}}
입력 스키마
{'type': 'object', 'required': ['package_id', 'entry_key', 'content'], 'properties': {'model': {'type': 'string', 'description': 'Optional LLM model this knowledge came from (stored as a model: tag).'}, 'content': {'type': 'string', 'description': 'Entry content.'}, 'entry_key': {'type': 'string', 'description': 'Entry key.'}, 'package_id': {'type': 'string', 'description': 'Knowledge package identifier.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['package_id'], 'properties': {'package_id': {'type': 'string', 'description': 'Knowledge package identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['package_id'], 'properties': {'direction': {'enum': ['outgoing', 'incoming', 'both'], 'type': 'string', 'description': 'Link direction (default: both).'}, 'package_id': {'type': 'string', 'description': 'Knowledge package identifier.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['connection_id'], 'properties': {'connection_id': {'type': 'string', 'description': 'A connected Gmail mailbox.'}}}
입력 스키마
{'type': 'object', 'required': ['connection_id', 'message_id'], 'properties': {'key': {'type': 'string', 'description': 'With store: the storage key. Default mail/<provider>/<message id>/<file name>.'}, 'store': {'type': 'boolean', 'description': "With attachment_id: store the attachment as your private file (up to the node's per-file limit) and answer its storage key, instead of its bytes. Needs storage:write."}, 'filename': {'type': 'string', 'description': 'With store: the file name, from the message parts (Gmail does not send it with the attachment).'}, 'mime_type': {'type': 'string', 'description': 'With store: the file type, from the message parts.'}, 'message_id': {'type': 'string', 'description': 'The message, from aimeat_mail_search.'}, 'attachment_id': {'type': 'string', 'description': 'Fetch this attachment instead of the message body.'}, 'connection_id': {'type': 'string', 'description': 'Which connected mailbox.'}}}
입력 스키마
{'type': 'object', 'required': ['connection_id'], 'properties': {'limit': {'type': 'number', 'description': 'How many, default 25, max 100.'}, 'query': {'type': 'string', 'description': "The provider's own search syntax."}, 'page_token': {'type': 'string', 'description': 'Continue a previous search.'}, 'connection_id': {'type': 'string', 'description': 'Which connected mailbox, from aimeat_connection_list.'}}}
입력 스키마
{'type': 'object', 'required': ['contact_id', 'subject', 'body'], 'properties': {'body': {'type': 'string', 'description': 'The message as plain text; the server renders and escapes it.'}, 'kind': {'type': 'string', 'description': "'transactional' (default) or 'marketing', which an opt-out blocks and which carries the unsubscribe link."}, 'theme': {'type': 'string', 'description': "Optional: what the message LOOKS like. A built-in id (clean, space, warm, paper) or one of the owner's own, and theirs wins where both exist. 'clean' is the default and is what went out before themes existed, so a send that names nothing looks exactly as it always did. An id that matches nothing falls back to the default rather than failing — decoration never refuses a send. Read the list, already validated, from GET /v1/outbound/themes."}, 'subject': {'type': 'string', 'description': 'The subject line.'}, 'reply_to': {'type': 'string', 'description': 'Where a reply should go, when it is not the sending address.'}, 'contact_id': {'type': 'string', 'description': 'A saved recipient. Never a free address.'}, 'from_alias': {'type': 'string', 'description': 'A verified alias of that mailbox to send as.'}, 'ai_disclosure': {'type': 'string', 'description': "Optional: mark the message as machine-written in a header. One of none | ai-assisted | ai-generated | autonomous. If YOU wrote the body, declare it — 'ai-generated' when you produced the text, 'ai-assisted' when a person wrote it and you edited. It goes in a HEADER and not in the text, because the audience for it is machines: nobody reading their inbox follows a link to a hash. Declaring it and then asking for it to be left out is not possible."}, 'connection_id': {'type': 'string', 'description': 'Send through this connected mailbox of yours.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'ws': {'type': 'string', 'description': "With organism_id, bind it to ONE workspace inside that group. Then the workspace's own roles decide: a contributor may call it, a viewer only sees it is there, and a member of the group with no role in that workspace reaches nothing."}, 'url': {'type': 'string', 'description': 'The server address, https. Give this or peer.'}, 'name': {'type': 'string', 'description': "A short name used instead of the address, e.g. 'jira'. Lowercase letters, digits and dashes."}, 'peer': {'type': 'string', 'description': 'The id of a peer AIMEAT node, instead of url. Its address is looked up on every call, so the link follows the peering rather than outliving it, and the peering must carry routing (member or genesis).'}, 'title': {'type': 'string', 'description': 'What to call it on screen. Defaults to the name.'}, 'token': {'type': 'string', 'description': 'A token or key the server needs. Held encrypted on this node and never given out again.'}, 'header': {'type': 'string', 'description': "Which header the token belongs in, when the server does not take a bearer (e.g. 'X-API-Key')."}, 'transport': {'type': 'string', 'description': "How to speak to it: 'http' (the current transport, and the default) or 'sse' (the older one)."}, 'description': {'type': 'string', 'description': 'What it is for, in a sentence.'}, 'organism_id': {'type': 'string', 'description': "Attach it to a GROUP instead of to this person, so the group's members reach it without anybody handing out a token. Only an owner or an admin of the group may; using what is attached needs only membership."}}}
입력 스키마
{'type': 'object', 'required': ['server'], 'properties': {'server': {'type': 'string', 'description': 'Which server, by its short name.'}, 'return_url': {'type': 'string', 'description': 'A path on this node the browser lands on afterwards.'}}}
입력 스키마
{'type': 'object', 'required': ['server', 'tool'], 'properties': {'tool': {'type': 'string', 'description': 'Which of its tools, by the name aimeat_mcp_tools gave.'}, 'server': {'type': 'string', 'description': 'Which server, by the short name from aimeat_mcp_list.'}, 'arguments': {'type': 'object', 'description': 'The arguments that tool asks for, in the shape its own schema names.'}}}
입력 스키마
{'type': 'object', 'required': ['server'], 'properties': {'server': {'type': 'string', 'description': 'Which server, by its short name.'}}}
입력 스키마
{'type': 'object', 'properties': {'server': {'type': 'string', 'description': 'Only for this server, by its short name.'}}}
입력 스키마
{'type': 'object', 'required': ['server', 'grantee'], 'properties': {'server': {'type': 'string', 'description': 'Which server, by its short name.'}, 'grantee': {'type': 'string', 'description': 'Whose narrowing to remove.'}}}
입력 스키마
{'type': 'object', 'required': ['server', 'grantee', 'tools'], 'properties': {'tools': {'type': 'array', 'description': "Which tools it may use: a list of names, or the string '*' for all of them."}, 'server': {'type': 'string', 'description': 'Which server, by its short name.'}, 'expires': {'type': 'string', 'description': 'An ISO date after which this stops applying.'}, 'grantee': {'type': 'string', 'description': "An agent's full name, an app as app:owner/file, or * for everything acting for this person."}, 'call_cap': {'type': 'object', 'description': 'At most {count} calls in {windowHours} hours.'}, 'locked_input': {'type': 'object', 'description': 'Arguments it may not choose. These win over whatever it sends.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['server'], 'properties': {'price': {'type': 'object', 'description': 'What one call costs, in money only: {perCall, currency}. perCall is whole micro-units (1000000 is one unit of the currency) and currency is ISO 4217, such as EUR. perCall 0 makes it free again.'}, 'server': {'type': 'string', 'description': "Which server on this node's registry, by its short name."}, 'enabled': {'type': 'boolean', 'description': 'false takes it away from everybody at once.'}, 'exposure': {'type': 'string', 'description': "How its tools are reached: 'gateway' through aimeat_mcp_call, or 'flatten' listed one by one."}, 'allowlist': {'type': 'array', 'description': 'The owners who may use it. An empty list means nobody.'}, 'availability': {'type': 'string', 'description': "'all-owners' or 'allowlist'."}}}
입력 스키마
{'type': 'object', 'required': ['server'], 'properties': {'server': {'type': 'string', 'description': "Which server, by the short name from aimeat_mcp_list (e.g. 'jira')."}, 'refresh': {'type': 'boolean', 'description': 'Ask the server again instead of using what was cached at the last look.'}}}
입력 스키마
{'type': 'object', 'required': ['server'], 'properties': {'title': {'type': 'string', 'description': 'What to call it on screen.'}, 'server': {'type': 'string', 'description': 'Which server, by its short name.'}, 'enabled': {'type': 'boolean', 'description': 'false switches it off at once without removing it; true switches it back on.'}, 'exposure': {'type': 'string', 'description': "How its tools are reached: 'gateway' through aimeat_mcp_call, or 'flatten' listed one by one."}, 'description': {'type': 'string', 'description': 'What it is for, in a sentence.'}}}
입력 스키마
{'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'Exact memory entry key to delete.'}, 'owner_scope': {'type': 'boolean', 'description': "Also reach the OWNER's namespace and your sibling agents', not only your own."}}}
입력 스키마
{'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'The exact memory key to ask about.'}}}
입력 스키마
{'type': 'object', 'properties': {'tags': {'type': 'array', 'description': 'Optional tag filters.'}, 'limit': {'type': 'number', 'description': 'Maximum entries to return (recommended on large stores).'}, 'prefix': {'type': 'string', 'description': 'Key prefix filter, e.g. "project/".'}, 'visibility': {'enum': ['private', 'owner', 'group', 'members', 'public'], 'type': 'string', 'description': 'Optional visibility filter.'}, 'owner_scope': {'type': 'boolean', 'description': 'When true, list same-owner GHII and all same-owner agent memory.'}}}
입력 스키마
{'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'Exact memory entry key (hierarchical, slash-separated).'}, 'owner_scope': {'type': 'boolean', 'description': "Also look in the OWNER's namespace and your sibling agents', not only your own."}}}
입력 스키마
{'type': 'object', 'required': ['gaii', 'key'], 'properties': {'key': {'type': 'string', 'description': 'Memory entry key.'}, 'gaii': {'type': 'string', 'description': 'Target agent or owner GAII/GHII.'}}}
입력 스키마
{'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'Exact memory entry key to put back.'}, 'owner_scope': {'type': 'boolean', 'description': "Also reach the OWNER's namespace and your sibling agents'."}}}
입력 스키마
{'type': 'object', 'properties': {'type': {'type': 'string', 'description': 'Semantic type(s) to narrow to, comma-separated: schema:Person, aimeat:Task, or a full IRI.'}, 'limit': {'type': 'number', 'description': 'Max hits to return (default 50, max 200).'}, 'query': {'type': 'string', 'description': 'Search query. Optional when `type` names a single type.'}, 'visibility': {'enum': ['private', 'owner', 'group', 'members', 'public'], 'type': 'string', 'description': 'Optional visibility filter.'}, 'include_versions': {'type': 'boolean', 'description': 'Include `.version.N` history snapshots (skipped by default).'}}}
입력 스키마
{'type': 'object', 'required': ['key', 'value'], 'properties': {'key': {'type': 'string', 'description': 'Memory entry key (hierarchical, slash-separated, e.g. "project/acme/notes").'}, 'tags': {'type': 'array', 'description': 'Optional tags for later filtering or shared memory areas.'}, 'value': {'type': 'string', 'description': 'Value to store — any JSON type.'}, 'group_id': {'type': 'string', 'description': 'ID of sharing group (required when visibility=group).'}, 'ttl_hours': {'type': 'number', 'description': 'Optional time-to-live in hours; entry auto-expires after this.'}, 'visibility': {'enum': ['private', 'owner', 'group', 'members', 'public'], 'type': 'string', 'description': 'Who can read it (members = any logged-in user of this node). Default: private.'}, 'owner_scope': {'type': 'boolean', 'description': 'Write under the OWNER instead of yourself. Requires the memory:write-as-owner scope.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}, 'expected_version': {'type': 'number', 'description': 'Optimistic lock: the version you read. Refused with VERSION_CONFLICT if the record changed since. Pass 0 to assert the key does not exist yet. Omit for last-write-wins.'}}}
입력 스키마
{'type': 'object', 'properties': {'page': {'type': 'number', 'description': 'Page number (default 1).'}, 'per_page': {'type': 'number', 'description': 'Messages per page (default 20, max 100).'}, 'thread_id': {'type': 'string', 'description': 'Conversation thread to read (omit for recent messages across all threads).'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['content'], 'properties': {'content': {'type': 'string', 'description': 'Message content (markdown supported).'}, 'metadata': {'type': 'object', 'description': 'Optional metadata object. May include prompt:{prompt_id, question, options[], allow_other} to ask the owner a single-select question.'}, 'thread_id': {'type': 'string', 'description': 'Thread ID to reply in (omit to start a new conversation).'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'linked_task_id': {'type': 'string', 'description': 'Optional linked task identifier.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['title'], 'properties': {'body': {'type': 'string', 'description': 'The detail, a few lines at most.'}, 'link': {'type': 'string', 'description': 'Where a click leads: a path on this AIMEAT starting with "/". Default: the Agents page.'}, 'type': {'type': 'string', 'description': 'A short machine word for the kind of event, e.g. report_ready.'}, 'title': {'type': 'string', 'description': 'What happened, in one line (max 200).'}}}
입력 스키마
{'type': 'object', 'required': ['agent_name', 'offer_id'], 'properties': {'offer_id': {'type': 'string', 'description': 'The offer id inside agents.{agent_name}.offers'}, 'agent_name': {'type': 'string', 'description': "Bare name of your owner's agent that publishes the offer"}, 'visibility': {'enum': ['private', 'unlisted', 'public'], 'type': 'string', 'description': 'Offer visibility: private | unlisted | public'}, 'clear_money': {'type': 'boolean', 'description': 'Remove the money price'}, 'clear_morsels': {'type': 'boolean', 'description': 'Remove the morsel price'}, 'price_morsels': {'type': 'number', 'description': 'Morsel price per call (integer, >0). Omit to leave unchanged'}, 'money_currency': {'enum': ['EUR', 'USD'], 'type': 'string', 'description': 'ISO code for money_amount_micros: EUR or USD'}, 'money_amount_micros': {'type': 'number', 'description': 'Money price in integer 6-decimal MICRO-UNITS (never cents/floats). Omit to leave unchanged'}}}
입력 스키마
{'type': 'object', 'properties': {'confirmed': {'type': 'boolean', 'description': 'Set true after reading the handbook/directives.'}}}
입력 스키마
{'type': 'object', 'required': ['platform', 'version'], 'properties': {'version': {'type': 'string', 'description': 'Bundle version, or local when no version is shown.'}, 'platform': {'type': 'string', 'description': 'Runtime/platform using the bundle.'}}}
입력 스키마
{'type': 'object', 'properties': {'services': {'type': 'array', 'description': 'Optional array of service objects with name and description.'}}}
입력 스키마
{'type': 'object', 'required': ['platform'], 'properties': {'platform': {'type': 'string', 'description': 'Runtime/platform name, for example hermes, claude, vscode, or generic.'}, 'platform_version': {'type': 'string', 'description': 'Runtime/platform version if known.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['agent_name'], 'properties': {'mode': {'enum': ['interactive', 'autonomous', 'task-runner', 'coordinator', 'workstation'], 'type': 'string', 'description': 'New agent mode.'}, 'tags': {'type': 'array', 'description': 'Replacement tag list.'}, 'scopes': {'type': 'array', 'description': 'Replacement scope list (narrowing only).'}, 'agent_name': {'type': 'string', 'description': 'Which same-owner agent to configure.'}, 'description': {'type': 'string', 'description': 'New description.'}, 'display_name': {'type': 'string', 'description': 'New display name.'}, 'confirm_token': {'type': 'string', 'description': 'Token from the propose step; omit to propose.'}}}
입력 스키마
{'type': 'object', 'properties': {'model': {'type': 'string', 'description': 'Default model id.'}, 'confirm_token': {'type': 'string', 'description': 'Token from the propose step; omit to propose.'}, 'execution_model': {'type': 'string', 'description': 'Model for modelRole "execution".'}, 'reasoning_model': {'type': 'string', 'description': 'Model for modelRole "reasoning".'}, 'daily_budget_usd': {'type': 'number', 'description': 'Daily AI spend cap in USD (0-1000).'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'action', 'level'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id (required for workspace/space/record).'}, 'key': {'type': 'string', 'description': 'The instance base memory key (required for level "record"), e.g. "organism.{id}.w.{ws}.shared.tasks.{instance}".'}, 'level': {'type': 'string', 'description': '"organism" | "workspace" | "space" | "record".'}, 'action': {'type': 'string', 'description': '"archive" or "unarchive".'}, 'namespace': {'type': 'string', 'description': 'The objectType namespace (required for level "space"), e.g. "shared.tasks".'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'Organism name (min 2 chars).'}, 'type': {'type': 'string', 'description': 'community | team | club | cooperative | project (default community).'}, 'visibility': {'type': 'string', 'description': 'public | listed | private (default public).'}, 'description': {'type': 'string', 'description': 'What this organism is for.'}, 'join_policy': {'type': 'string', 'description': 'open | approval_required | invite_only (default open).'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'organism_id': {'type': 'string', 'description': 'Organism to export.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['zip_base64'], 'properties': {'zip_base64': {'type': 'string', 'description': 'The organism export ZIP, base64-encoded (from aimeat_organism_export).'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'invitee'], 'properties': {'invitee': {'type': 'string', 'description': 'Bare owner name whose pending invitation to withdraw.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'invitation_id'], 'properties': {'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'invitation_id': {'type': 'string', 'description': 'The invitation id (from aimeat_organism_invitations_email).'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'decision'], 'properties': {'decision': {'enum': ['accept', 'decline'], 'type': 'string', 'description': 'accept or decline.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier you were invited to.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'invitee'], 'properties': {'role': {'enum': ['member', 'admin'], 'type': 'string', 'description': 'New organism role.'}, 'invitee': {'type': 'string', 'description': 'Bare owner name whose pending invitation to edit.'}, 'workspaces': {'type': 'array', 'description': 'Replacement per-workspace grants: [{ ws, role }] where role is "viewer" or "contributor".'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'invitee'], 'properties': {'role': {'enum': ['member', 'admin'], 'type': 'string', 'description': 'Organism role granted on accept (default "member").'}, 'invitee': {'type': 'string', 'description': 'Bare owner name to invite (e.g. "alice").'}, 'workspaces': {'type': 'array', 'description': 'Optional per-workspace grants applied on accept: [{ ws, role }] where role is "viewer" or "contributor".'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'email'], 'properties': {'email': {'type': 'string', 'description': 'Email address of the person to invite.'}, 'message': {'type': 'string', 'description': 'Optional personal note included in the invitation email.'}, 'org_role': {'enum': ['member', 'admin'], 'type': 'string', 'description': 'Organism role granted on accept (default "member").'}, 'return_url': {'type': 'string', 'description': 'Where the invitee lands after accepting: an app slug on this node (e.g. "my-app") or a full URL on this node or its app subdomains. Anything else is dropped and the invitee lands on their profile; return_url in the result says what was kept.'}, 'workspaces': {'type': 'array', 'description': 'Optional per-workspace grants: [{ ws, role }] where role is "viewer" or "contributor".'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'expires_in_days': {'type': 'number', 'description': 'Days until the invitation expires (1–30, default 7).'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'message': {'type': 'string', 'description': 'Optional message to organism admins (for approval-required organisms).'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ghii'], 'properties': {'ghii': {'type': 'string', 'description': 'Bare owner name to add (e.g. "alice").'}, 'role': {'enum': ['member', 'admin'], 'type': 'string', 'description': 'Organism role (default "member").'}, 'workspaces': {'type': 'array', 'description': 'Optional per-workspace grants applied immediately: [{ ws, role }] where role is "viewer" or "contributor".'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ghii'], 'properties': {'ban': {'type': 'boolean', 'description': 'Also block them from re-joining, being invited or being added again (default false).'}, 'ghii': {'type': 'string', 'description': 'Bare owner name to remove (e.g. "alice").'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'role': {'type': 'string', 'description': 'Filter members by role (e.g. admin, member).'}, 'status': {'type': 'string', 'description': 'Filter members by status (defaults to active).'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ghii'], 'properties': {'ghii': {'type': 'string', 'description': 'Bare owner name of an active member to make a co-owner.'}, 'organism_id': {'type': 'string', 'description': 'The organism ID.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ghii'], 'properties': {'ghii': {'type': 'string', 'description': 'Bare owner name to take off the owners.'}, 'organism_id': {'type': 'string', 'description': 'The organism ID.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'q'], 'properties': {'q': {'type': 'string', 'description': 'Search text (min 2 characters).'}, 'ws': {'type': 'string', 'description': 'Optional: limit the search to a single workspace id.'}, 'archived': {'type': 'string', 'description': 'Archive scope: "exclude" (default — active only), "only" (archive search), or "include" (both).'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'name': {'type': 'string', 'description': 'New organism name.'}, 'readme': {'type': 'string', 'description': 'Free-form markdown README (mermaid + aimeat-memory live-data blocks allowed) describing the organism; shown at the top of the organism home. Replaces the current one.'}, 'interests': {'type': 'array', 'description': 'Interest tags.'}, 'visibility': {'type': 'string', 'description': 'public | listed | private.'}, 'description': {'type': 'string', 'description': 'Short tagline shown under the name.'}, 'join_policy': {'type': 'string', 'description': 'open | approval_required | invite_only.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'agent_access': {'enum': ['all', 'listed'], 'type': 'string', 'description': 'Which members\' agents may act here: "all" (every member\'s agents, the default) or "listed" (only the agents in the Agents section of the organism\'s page; any other agent is refused as a non-member). An agent can set "listed"; only the owner signed in can set "all" again.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['name', 'apps'], 'properties': {'apps': {'type': 'array', 'description': 'Filenames of your own apps, e.g. ["shop.html", "admin.html"]. At least one.'}, 'name': {'type': 'string', 'description': 'Package name. With your owner name it forms the group id.'}, 'tags': {'type': 'array', 'description': 'Tags for search.'}, 'status': {'enum': ['draft', 'published', 'archived'], 'type': 'string', 'description': 'Defaults to published, so you can install it at once.'}, 'category': {'type': 'string', 'description': 'Category for the package gallery.'}, 'visibility': {'enum': ['private', 'public'], 'type': 'string', 'description': 'Who may install it. Defaults to private.'}, 'description': {'type': 'string', 'description': 'What the package is for.'}, 'include_cortex': {'type': 'boolean', 'description': 'Package the cortexes you installed yourself. Default true. Node-shipped cortexes are never packaged.'}, 'include_skills': {'type': 'boolean', 'description': "Package your own skills bound to these apps, so the installer's AI has their operating guides. Default true. Installing publishes each in the installer's skills, bound to their copy of the app, and never overwrites a skill of theirs."}, 'allow_expectations': {'type': 'boolean', 'description': 'Compose even when an app calls an extension the package cannot carry, recording it as a requirement instead.'}}}
입력 스키마
{'type': 'object', 'required': ['group_id'], 'properties': {'group_id': {'type': 'string', 'description': 'The package or install bundle group id, e.g. "yrittajan-peruspaketti::happyadmin500001".'}}}
입력 스키마
{'type': 'object', 'required': ['group_id', 'version'], 'properties': {'version': {'type': 'string', 'description': 'Version to archive.'}, 'group_id': {'type': 'string', 'description': 'Package group identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['group_id', 'action'], 'properties': {'node': {'type': 'object', 'description': 'For grant: { url, public_key } of a node this repository does not know yet. It is registered with the grant as a packages-only peer (active, contact tier, messages off), which can pull only what it is entitled to. A peer of that id under another key, or switched off, is refused.'}, 'note': {'type': 'string', 'description': 'For grant: why, e.g. the order it came from.'}, 'action': {'enum': ['list', 'grant', 'revoke'], 'type': 'string', 'description': 'list the nodes, grant (or change) one, or revoke one.'}, 'channel': {'enum': ['stable', 'beta'], 'type': 'string', 'description': 'For grant: stable serves published versions (the default); beta serves versions set to beta too, whichever is newest.'}, 'node_id': {'type': 'string', 'description': 'For grant and revoke: the customer node.'}, 'group_id': {'type': 'string', 'description': 'Your package group identifier.'}, 'updates_until': {'type': 'string', 'description': 'For grant: versions published after this ISO date-time are not served to the node. Omit for updates that run on.'}}}
입력 스키마
{'type': 'object', 'required': ['instance_id'], 'properties': {'instance_id': {'type': 'string', 'description': 'The managed copy, from aimeat_package_instances.'}}}
입력 스키마
{'type': 'object', 'required': ['group_id'], 'properties': {'group_id': {'type': 'string', 'description': 'Package group identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['group_id'], 'properties': {'mode': {'enum': ['managed', 'editable'], 'type': 'string', 'description': '"managed": the package owns the code and layout. "editable" (default): you may edit everything.'}, 'label': {'type': 'string', 'description': 'What to call this copy, e.g. the company it is for.'}, 'config': {'type': 'object', 'description': 'Each part\'s config, keyed by component id: { "<component id>": { "<field>": value } }. An app part takes the fields its config schema declares; an extension part takes its config fields, and a secret field there is stored encrypted and never shown. Run with dry_run first: the answer lists every part\'s fields and which required ones are still empty, so you can ask your owner for them. A required field left empty refuses the install with CONFIG_REQUIRED naming it.'}, 'dry_run': {'type': 'boolean', 'description': 'Report what would be registered and register nothing.'}, 'version': {'type': 'string', 'description': 'A specific version. Defaults to the latest published one.'}, 'group_id': {'type': 'string', 'description': 'Package group identifier, from aimeat_package_list.'}}}
입력 스키마
{'type': 'object', 'properties': {'decision': {'enum': ['approve', 'decline'], 'type': 'string', 'description': 'Decide the request named by request_id.'}, 'request_id': {'type': 'string', 'description': 'One request. Omit to list them all.'}}}
입력 스키마
{'type': 'object', 'properties': {'status': {'enum': ['installed', 'paused', 'removed'], 'type': 'string', 'description': 'Only copies in this state.'}, 'group_id': {'type': 'string', 'description': 'Only the copies of this package.'}}}
입력 스키마
{'type': 'object', 'required': ['instance_id'], 'properties': {'label': {'type': 'string', 'description': 'A new name for this copy.'}, 'auto_update': {'type': 'boolean', 'description': 'true: the daily check updates this copy by itself. false: it tells your owner an update is ready.'}, 'instance_id': {'type': 'string', 'description': 'The installed copy, from aimeat_package_instances.'}}}
입력 스키마
{'type': 'object', 'properties': {'author': {'type': 'string', 'description': "Only this author's packages. Your own name also shows your private ones."}, 'search': {'type': 'string', 'description': 'Optional search over name, description and tags.'}, 'status': {'enum': ['draft', 'published', 'archived'], 'type': 'string', 'description': 'Defaults to published.'}}}
입력 스키마
{'type': 'object', 'required': ['name', 'components'], 'properties': {'name': {'type': 'string', 'description': 'Package name. With the author it forms the group id, e.g. "company-brain::alice".'}, 'tags': {'type': 'array', 'description': 'Tags for search.'}, 'category': {'type': 'string', 'description': 'Category for the package gallery.'}, 'manifest': {'type': 'object', 'description': 'Package manifest: object types, schedules, the workspace it provisions.'}, 'components': {'type': 'array', 'description': 'The components, each { id, type: "app"|"extension"|"cortex"|"translation", label?, content, dependencies? }. At least one.'}, 'visibility': {'enum': ['private', 'public'], 'type': 'string', 'description': 'Who may install it. Defaults to private.'}, 'description': {'type': 'string', 'description': 'What the package is for.'}}}
입력 스키마
{'type': 'object', 'required': ['group_id'], 'properties': {'trust': {'enum': ['tofu'], 'type': 'string', 'description': 'Accept and pin the key that node publishes. Needed only with source_url.'}, 'node_id': {'type': 'string', 'description': 'A peer this node knows. Its address and key are read from the peer record.'}, 'version': {'type': 'string', 'description': 'A specific version. Defaults to the latest one published there.'}, 'group_id': {'type': 'string', 'description': 'The package on the other node, e.g. "signage::alice".'}, 'source_url': {'type': 'string', 'description': 'A node that is not a peer. Operator only, and only with trust:"tofu".'}}}
입력 스키마
{'type': 'object', 'required': ['node_id'], 'properties': {'node_id': {'type': 'string', 'description': 'The repository node, a peer of this node.'}}}
입력 스키마
{'type': 'object', 'required': ['action', 'repository', 'group_id'], 'properties': {'node': {'type': 'object', 'description': 'For grant: { url, public_key } of a customer node the repository does not know yet.'}, 'note': {'type': 'string', 'description': 'For grant: the order it came from.'}, 'action': {'enum': ['needs', 'grant', 'revoke'], 'type': 'string', 'description': 'needs: the questions to ask; grant: serve (or change, or end the updates of) a customer node; revoke: stop serving it.'}, 'channel': {'enum': ['stable', 'beta'], 'type': 'string', 'description': 'For grant: stable (the default) or beta.'}, 'node_id': {'type': 'string', 'description': 'For grant and revoke: the customer node.'}, 'group_id': {'type': 'string', 'description': 'The package or install bundle group id on the repository.'}, 'repository': {'type': 'string', 'description': 'The package repository\'s node id, e.g. "aimeat-finland-002-repository".'}, 'updates_until': {'type': 'string', 'description': 'For grant: versions published after this ISO date-time are not served (the monthly updates ended). Omit to keep the updates running.'}, 'repository_link': {'type': 'object', 'description': 'The first time only: { url, public_key } of the repository, to link it as a peer of this node.'}}}
입력 스키마
{'type': 'object', 'required': ['action'], 'properties': {'node': {'type': 'object', 'description': 'For add: { url, public_key } of a node this repository does not know yet.'}, 'note': {'type': 'string', 'description': 'For add: why, e.g. "the shop".'}, 'action': {'enum': ['list', 'add', 'remove'], 'type': 'string', 'description': 'list your sellers, add (or change) one, or remove one.'}, 'node_id': {'type': 'string', 'description': 'For add and remove: the seller node, e.g. "aimeat-finland-003-store".'}}}
입력 스키마
{'type': 'object', 'required': ['group_id', 'status'], 'properties': {'status': {'enum': ['draft', 'published', 'beta', 'archived'], 'type': 'string', 'description': 'The status to set.'}, 'version': {'type': 'string', 'description': 'Which version. Defaults to the latest one.'}, 'group_id': {'type': 'string', 'description': 'Package group identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['instance_id'], 'properties': {'dry_run': {'type': 'boolean', 'description': 'Report what would change and change nothing.'}, 'instance_id': {'type': 'string', 'description': 'The installed copy, from the instances list.'}}}
입력 스키마
{'type': 'object', 'required': ['group_id'], 'properties': {'group_id': {'type': 'string', 'description': 'Package group identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['html'], 'properties': {'html': {'type': 'string', 'description': "The complete HTML document to serve as this person's welcome page."}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['prefix'], 'properties': {'prefix': {'type': 'string', 'description': 'Names the definition, `<prefix>.config`: lowercase letters, digits, - or _ (e.g. postinjalostamo).'}, 'message_ids': {'type': 'array', 'description': 'Run exactly these messages again (at most 50), whether or not they already have rows.'}}}
입력 스키마
{'type': 'object', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'description': 'The run id aimeat_refinery_run answered with.'}}}
입력 스키마
{'type': 'object', 'required': ['kind', 'cron', 'display_name'], 'properties': {'cron': {'type': 'string', 'description': 'Cron expression, e.g. "0 7 * * *".'}, 'kind': {'enum': ['ai', 'agent_task', 'extension', 'refinery'], 'type': 'string', 'description': 'ai | agent_task | extension | refinery'}, 'input': {'type': 'object', 'description': "refinery: { prefix }, the definition to run. extension: the action's own parameters, passed on every fire. Without this the action runs on its built-in defaults, which is rarely what a clock is for: the AI Music Charts radar searched the same thirty terms every night for six days and added nothing, while the same action given a wider term list found sixty-three tracks it had never seen."}, 'prompt': {'type': 'string', 'description': 'ai: instruction applied to the input memory values.'}, 'purpose': {'type': 'string', 'description': 'Why this runs (shown to the owner).'}, 'timezone': {'type': 'string', 'description': 'IANA timezone, e.g. "Europe/Helsinki".'}, 'action_id': {'type': 'string', 'description': 'extension: action id to run.'}, 'input_keys': {'type': 'array', 'description': 'ai: owner memory keys fed in as context. Each one goes to the model provider, so a key naming a record this node keeps for itself (an AI key, a payout setting, a spend limit) is refused with RESERVED_KEY.'}, 'output_key': {'type': 'string', 'description': 'ai: memory key for the result (auto-generated if omitted). A record this node keeps for itself is refused with RESERVED_KEY.'}, 'task_title': {'type': 'string', 'description': 'agent_task: title of the task created each fire.'}, 'instance_id': {'type': 'string', 'description': 'extension: run the action on one named instance of the extension rather than the default one.'}, 'display_name': {'type': 'string', 'description': 'Human-readable label.'}, 'extension_name': {'type': 'string', 'description': 'extension: installed extension name.'}}}
입력 스키마
{'type': 'object', 'required': ['schedule_id'], 'properties': {'schedule_id': {'type': 'string', 'description': 'The schedule id.'}}}
입력 스키마
{'type': 'object', 'properties': {'detail': {'type': 'boolean', 'description': "true also returns each schedule's prompt, system prompt or task title, description, purpose and input."}}}
입력 스키마
{'type': 'object', 'required': ['entries'], 'properties': {'entries': {'type': 'array', 'description': 'Array of {name, description?, purpose?, cron?, timezone?, schedule?, status?, kind?}.'}}}
입력 스키마
{'type': 'object', 'required': ['schedule_id'], 'properties': {'schedule_id': {'type': 'string', 'description': 'The schedule id.'}}}
입력 스키마
{'type': 'object', 'required': ['schedule_id'], 'properties': {'cron': {'type': 'string', 'description': 'New cron expression.'}, 'prompt': {'type': 'string', 'description': "New prompt: an ai schedule's instruction, or the description of the task an agent_task schedule creates."}, 'enabled': {'type': 'boolean', 'description': 'false = pause, true = resume.'}, 'timezone': {'type': 'string', 'description': 'New IANA timezone.'}, 'schedule_id': {'type': 'string', 'description': 'The schedule id.'}, 'display_name': {'type': 'string', 'description': 'New label.'}}}
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The secret to remove, exactly as it was stored.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['name', 'value'], 'properties': {'name': {'type': 'string', 'description': 'What to call it: letters, digits, underscore and hyphen, 1 to 64 characters. This is the name written into a header as {{secret:NAME}}, so it is case-exact.'}, 'value': {'type': 'string', 'description': 'The key or password itself, up to 4 kB. It is encrypted at rest and never returned by anything.'}}}
입력 스키마
{'type': 'object', 'properties': {'plan': {'type': 'boolean', 'description': 'true lists what would be sent, host by host, and sends nothing.'}, 'scope': {'type': 'string', 'description': '"all" (default): the pages and every findable application. "pages": the pages alone.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['group_id', 'key_pattern'], 'properties': {'note': {'type': 'string', 'description': "A reminder for the owner's own list; the reader never sees it."}, 'group_id': {'type': 'string', 'description': 'The group whose members should be able to read.'}, 'expires_at': {'type': 'string', 'description': 'ISO timestamp after which it stops granting. Omit for until-revoked.'}, 'key_pattern': {'type': 'string', 'description': 'Key or pattern, e.g. "deliveries.abc.**".'}}}
입력 스키마
{'type': 'object', 'properties': {'direction': {'enum': ['outgoing', 'incoming'], 'type': 'string', 'description': 'Default outgoing.'}}}
입력 스키마
{'type': 'object', 'required': ['share_id'], 'properties': {'share_id': {'type': 'string', 'description': 'The share to withdraw.'}}}
입력 스키마
{'type': 'object', 'properties': {'ref': {'type': 'string', 'description': 'Full skill ref: node:{name}, user:{owner}/{name}, or ws:{org}/{ws}/{name}.'}, 'name': {'type': 'string', 'description': 'Bare skill name (own registry first, then node library). Ignored when ref is given.'}, 'manifest_only': {'type': 'boolean', 'description': 'Return only the manifest, no file bodies.'}}}
입력 스키마
{'type': 'object', 'required': ['ref'], 'properties': {'ref': {'type': 'string', 'description': 'Skill ref to attach: node:{name} or user:{owner}/{name}.'}, 'agent_name': {'type': 'string', 'description': 'Which same-owner agent to attach to (default yourself).'}}}
입력 스키마
{'type': 'object', 'properties': {'view': {'enum': ['library', 'linked', 'mine', 'workspace'], 'type': 'string', 'description': 'Which listing (default library).'}, 'binding': {'type': 'string', 'description': 'Filter to skills bound to one app: app:{owner}/{filename}. Overrides view.'}, 'agent_name': {'type': 'string', 'description': 'For view=linked: which same-owner agent (default yourself).'}, 'organism_id': {'type': 'string', 'description': 'For view=workspace: the organism id.'}, 'workspace_id': {'type': 'string', 'description': 'For view=workspace: the workspace id.'}}}
입력 스키마
{'type': 'object', 'properties': {'files': {'type': 'object', 'description': 'Additional files as relative-path -> content (scripts/, references/, assets/).'}, 'scope': {'enum': ['user', 'node', 'workspace'], 'type': 'string', 'description': 'Registry scope (default user).'}, 'skill_md': {'type': 'string', 'description': 'SKILL.md content (frontmatter + body). Omit for presigned ZIP upload mode.'}, 'visibility': {'enum': ['owner', 'members', 'public'], 'type': 'string', 'description': 'Registry visibility (node/user). Defaults: user->owner, node->members. public = federated.'}, 'organism_id': {'type': 'string', 'description': 'Workspace scope: the organism id.'}, 'workspace_id': {'type': 'string', 'description': 'Workspace scope: the workspace id.'}}}
입력 스키마
{'type': 'object', 'required': ['ref'], 'properties': {'ref': {'type': 'string', 'description': 'Skill ref to detach.'}, 'agent_name': {'type': 'string', 'description': 'Which same-owner agent to detach from (default yourself).'}}}
입력 스키마
{'type': 'object', 'required': ['name', 'visibility'], 'properties': {'name': {'type': 'string', 'description': 'The skill name (the bare name from its frontmatter).'}, 'scope': {'enum': ['user', 'node'], 'type': 'string', 'description': "Which registry the skill is in (default user, your owner's own)."}, 'visibility': {'enum': ['owner', 'members', 'public'], 'type': 'string', 'description': 'Who may read it from now on.'}}}
입력 스키마
{'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'Storage key in your own namespace.'}}}
입력 스키마
{'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'Storage key in your own namespace, or a full "owner@node/path/file.pdf" reference.'}, 'owner': {'type': 'string', 'description': "GHII/GAII that owns the file. Omit for your own files; set it for your owner's uploads and for DM/task attachments."}, 'inline': {'type': 'boolean', 'description': 'Only for small text files (<= 32 KB): return content inline instead of a handle.'}}}
입력 스키마
{'type': 'object', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'Storage key (path-like identifier).'}, 'group_id': {'type': 'string', 'description': 'ID of sharing group (required when visibility=group).'}, 'mime_type': {'type': 'string', 'description': 'Optional MIME type (default application/octet-stream).'}, 'visibility': {'enum': ['private', 'owner', 'group', 'public', 'workspace'], 'type': 'string', 'description': "Access control (default: private). Use 'owner' to make the file readable by every agent and app of the same owner — that is what lets you hand a document to one of your owner's agents. Use 'workspace' with workspace_refs to share it with the members of organism workspaces."}, 'data_base64': {'type': 'string', 'description': 'Base64-encoded file data. Omit to get a presigned upload_url instead (recommended for files > 1 KB). Use @file:path with the CLI fallback.'}, 'workspace_refs': {'type': 'array', 'description': 'The workspaces the file is shared with, each "<organismId>/<workspaceId>" (required when visibility=workspace).'}}}
입력 스키마
{'type': 'object', 'required': ['surface'], 'properties': {'surface': {'type': 'string', 'description': "Which page: 'portal', 'home' or 'home-onboarding'."}}}
입력 스키마
{'type': 'object', 'required': ['surface', 'blocks'], 'properties': {'note': {'type': 'string', 'description': 'One line on what this change was for. It shows in the node change log.'}, 'blocks': {'type': 'array', 'description': 'The blocks in the order they should appear. Each is { id, key } with optional props, titles, hidden, children and — on a free-form block — body.'}, 'surface': {'type': 'string', 'description': "Which page: 'portal', 'home' or 'home-onboarding'."}, 'ai_provenance': {'type': 'object', 'description': 'What you did to produce the words in a free-form block, if you wrote them. Optional; saying nothing leaves it unstated rather than claiming a person wrote it.'}, 'ai_provenance_id': {'type': 'string', 'description': 'An existing provenance record of your own to attach instead of declaring a new one.'}}}
입력 스키마
{'type': 'object', 'required': ['task_id'], 'properties': {'message': {'type': 'string', 'description': 'Completion message.'}, 'task_id': {'type': 'string', 'description': 'Task identifier.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'deliverable_key': {'type': 'string', 'description': "The memory key, under the agent's own namespace, where the result was published. The owner's task card links to it, and a deliverable written with visibility=public reaches the node's activity feed when it is named here."}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['target_agent', 'title', 'description'], 'properties': {'files': {'type': 'array', 'description': 'Up to 20 file REFERENCES the target agent needs: "<owner@node>/<storage key>" each (a bare key means one of your own files). You must be able to read each file yourself.'}, 'scope': {'type': 'array', 'description': 'Named parameters the receiving runner DISPATCHES on, each { name, value, type?, description? }. A fleet runner recognises work by a `kind` entry here and takes its pointers (a memory key, an app id) from the others; the description is prose for a model, and a pointer put in the title is the standard way to build a task nothing picks up.'}, 'title': {'type': 'string', 'description': 'Short human-readable title for the task.'}, 'status': {'enum': ['draft', 'queued'], 'type': 'string', 'description': 'Default "queued" (visible to target immediately). Use "draft" for owner-review-first.'}, 'description': {'type': 'string', 'description': 'The actual prompt / instruction for the target agent.'}, 'target_agent': {'type': 'string', 'description': 'Name of the agent the task is FOR. Must be owned by the same owner as the calling agent.'}}}
입력 스키마
{'type': 'object', 'required': ['task_id', 'type', 'message'], 'properties': {'type': {'type': 'string', 'description': 'Event type.'}, 'details': {'type': 'object', 'description': 'Optional event details.'}, 'message': {'type': 'string', 'description': 'Event message.'}, 'task_id': {'type': 'string', 'description': 'Task identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['task_id', 'reason'], 'properties': {'reason': {'type': 'string', 'description': 'Reason for failure.'}, 'task_id': {'type': 'string', 'description': 'Task identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'string', 'description': 'Task identifier.'}}}
입력 스키마
{'type': 'object', 'properties': {'page': {'type': 'number', 'description': 'Page number (default 1).'}, 'status': {'type': 'string', 'description': 'Optional task status filter.'}, 'per_page': {'type': 'number', 'description': 'Results per page (default 20, max 100).'}}}
입력 스키마
{'type': 'object', 'required': ['task_id', 'todos'], 'properties': {'todos': {'type': 'array', 'description': 'Array of TODOs with title, optional description, verification, and estimate_minutes.'}, 'task_id': {'type': 'string', 'description': 'Task identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['task_id', 'message'], 'properties': {'message': {'type': 'string', 'description': "Owner's free-text change request."}, 'task_id': {'type': 'string', 'description': 'Task identifier (must be a queued task with existing proposed todos).'}}}
입력 스키마
{'type': 'object', 'required': ['task_id', 'todo_id', 'status'], 'properties': {'status': {'enum': ['pending', 'active', 'done', 'failed', 'skipped'], 'type': 'string', 'description': 'New TODO status.'}, 'task_id': {'type': 'string', 'description': 'Task identifier.'}, 'todo_id': {'type': 'string', 'description': 'TODO item identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['theme', 'component'], 'properties': {'css': {'type': 'string', 'description': 'The CSS; empty removes it.'}, 'theme': {'type': 'string', 'description': 'The theme the CSS belongs to.'}, 'dryRun': {'type': 'boolean', 'description': 'Check and save nothing.'}, 'component': {'type': 'string', 'description': "The component's id, from aimeat_ui_component_list (for example 'slab')."}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "The theme's id, from aimeat_theme_list (for example 'aimeat')."}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {'default': {'type': 'string', 'description': 'The default theme: one of the offered.'}, 'offered': {'type': 'array', 'description': "The theme ids people can choose, for example ['aimeat', 'pebble']."}, 'personalChoice': {'type': 'boolean', 'description': 'People choose in the look picker (true), or everybody sees the default (false).'}}}
입력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'The theme to change. Leave it out to make a new one.'}, 'css': {'type': 'string', 'description': 'Theme CSS for the whole theme; empty removes it.'}, 'name': {'type': 'string', 'description': 'What people see in the pill. 1 to 60 characters, and no other theme may have it (retired ones included).'}, 'dryRun': {'type': 'boolean', 'description': 'Check everything and save nothing.'}, 'shapes': {'type': 'object', 'description': "The theme's shape values (corners, frames, shadows, letter case), only the ones you change; an empty value puts the built-in one back. aimeat_theme_list names them."}, 'basedOn': {'type': 'string', 'description': "For a new theme: the theme it copies (default 'aimeat')."}, 'retired': {'type': 'boolean', 'description': 'true takes the theme out of the pill; false brings it back.'}, 'defaultStyle': {'type': 'string', 'description': 'The style a person sees first in this theme.'}, 'offeredStyles': {'type': 'array', 'description': 'The style ids of this theme the pill offers.'}, 'restoreVersion': {'type': 'number', 'description': 'Put back this saved version (from aimeat_theme_get).'}}}
입력 스키마
{'type': 'object', 'required': ['theme'], 'properties': {'dark': {'type': 'object', 'description': 'Token → colour for dark mode, only the ones you change.'}, 'name': {'type': 'string', 'description': 'What people see in the pill. 1 to 60 characters.'}, 'faces': {'type': 'object', 'description': '{ headline, body, mono }, each a face this server serves.'}, 'light': {'type': 'object', 'description': 'Token → colour for light mode, only the ones you change.'}, 'style': {'type': 'string', 'description': 'The style to change. Leave it out to make a new one.'}, 'theme': {'type': 'string', 'description': 'The theme the style belongs to.'}, 'dryRun': {'type': 'boolean', 'description': 'Check everything and save nothing.'}, 'basedOn': {'type': 'string', 'description': 'For a new style: the style of this theme it copies.'}, 'retired': {'type': 'boolean', 'description': 'true takes the style out of the pill; false brings it back.'}, 'onlyMode': {'type': 'string', 'description': "'light' or 'dark' for a style with one mode; empty for both."}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "The component's id or name, from aimeat_ui_component_list."}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Words to find; every word must match.'}, 'kind': {'type': 'string', 'description': "'component' or 'shape'."}, 'status': {'type': 'string', 'description': "'active' or 'unused'."}}}
입력 스키마
{'type': 'object', 'properties': {'to': {'type': 'string', 'description': 'Inclusive end day, YYYY-MM-DD. Defaults to today.'}, 'from': {'type': 'string', 'description': 'Inclusive start day, YYYY-MM-DD. Defaults to 30 days ago.'}, 'grain': {'enum': ['day', 'hour'], 'type': 'string', 'description': 'Bucket size, where the report has one.'}, 'limit': {'type': 'number', 'description': 'Maximum groups to return.'}, 'report': {'enum': ['day', 'model', 'app', 'agent', 'tool', 'surface', 'apps-used', 'activity', 'sold'], 'type': 'string', 'description': 'Which report to read.'}}}
입력 스키마
{'type': 'object', 'properties': {'to': {'type': 'string', 'description': 'Turns addressed to this principal.'}, 'from': {'type': 'string', 'description': 'Turns sent by this principal.'}, 'limit': {'type': 'number', 'description': 'Max turns to return (default 50, max 200).'}, 'since': {'type': 'string', 'description': 'ISO timestamp, exclusive: turns created after it.'}, 'task_id': {'type': 'string', 'description': 'The turns of one task.'}, 'context_id': {'type': 'string', 'description': 'One exchange.'}}}
입력 스키마
{'type': 'object', 'required': ['to', 'parts'], 'properties': {'to': {'type': 'string', 'description': 'The recipient principal on this account: an agent GAII (claude#alice@node), an ecosystem app (eco:drum#alice@node) or the owner GHII (alice@node).'}, 'role': {'enum': ['user', 'agent'], 'type': 'string', 'description': 'Send "user" if you are asking and "agent" if you are answering. Default "user". It is not a principal type.'}, 'parts': {'type': 'array', 'description': 'Ordered parts. Each is {kind:"text",text} or {kind:"file",file:{uri,name?,mimeType?}} or {kind:"data",data:{...}}. A file part carries a URI, never bytes.'}, 'task_id': {'type': 'string', 'description': 'The task this turn belongs to, if there is one.'}, 'metadata': {'type': 'object', 'description': 'Anything you want carried along. Never read by the node.'}, 'context_id': {'type': 'string', 'description': 'The exchange this turn belongs to. Omit on the first turn.'}}}
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The target id, from aimeat_v2_push_list.'}}}
입력 스키마
{'type': 'object', 'properties': {'principal': {'type': 'string', 'description': 'Account holder only: whose targets to list. Omit for all of them.'}}}
입력 스키마
{'type': 'object', 'required': ['url'], 'properties': {'id': {'type': 'string', 'description': 'Replace this existing target. It must be one already registered on this account.'}, 'url': {'type': 'string', 'description': 'The https address to POST a turn to.'}, 'token': {'type': 'string', 'description': 'An opaque string echoed back inside every delivery.'}, 'principal': {'type': 'string', 'description': 'Whose deliveries these are. Defaults to you; naming another principal is for the account holder.'}, 'authentication': {'type': 'object', 'description': 'A block shaped { schemes: ["Bearer"], credentials: "..." }. The credentials are stored and sent, never returned.'}}}
입력 스키마
{'type': 'object', 'required': ['task_id'], 'properties': {'reason': {'type': 'string', 'description': 'Why, in one line.'}, 'task_id': {'type': 'string', 'description': 'The task id.'}}}
입력 스키마
{'type': 'object', 'required': ['assigned_to', 'input'], 'properties': {'input': {'type': 'array', 'description': 'What is being asked, as parts: {kind:"text",text} or {kind:"file",file:{uri}} or {kind:"data",data:{...}}. The same shape a turn carries.'}, 'ttl_ms': {'type': 'number', 'description': 'How long the result stays worth reading, in milliseconds. Advice, not a deletion.'}, 'metadata': {'type': 'object', 'description': 'Carried along, never read by the node.'}, 'context_id': {'type': 'string', 'description': 'The exchange this work belongs to. Omit and the task names itself.'}, 'assigned_to': {'type': 'string', 'description': 'The principal that is to do this: an agent GAII, an ecosystem app, or the owner GHII.'}, 'status_message': {'type': 'string', 'description': 'One line for a person about what this is.'}, 'poll_interval_ms': {'type': 'number', 'description': 'How often you intend to poll, in milliseconds.'}}}
입력 스키마
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'string', 'description': 'The task id.'}}}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max tasks to return (default 50, max 200).'}, 'status': {'type': 'string', 'description': 'One status or a comma-separated list: working, input_required, completed, failed, cancelled.'}, 'context_id': {'type': 'string', 'description': 'Tasks in one exchange.'}, 'created_by': {'type': 'string', 'description': 'Tasks this principal asked for.'}, 'assigned_to': {'type': 'string', 'description': 'Tasks given to this principal.'}}}
입력 스키마
{'type': 'object', 'required': ['task_id', 'status'], 'properties': {'error': {'type': 'object', 'description': '{ code, message }. Required when failing.'}, 'result': {'type': 'array', 'description': 'What came back, as parts. Required when completing.'}, 'status': {'enum': ['working', 'input_required', 'completed', 'failed'], 'type': 'string', 'description': 'Where it has got to.'}, 'ttl_ms': {'type': 'number', 'description': 'How long the result stays worth reading, in milliseconds.'}, 'task_id': {'type': 'string', 'description': 'The task id.'}, 'status_message': {'type': 'string', 'description': 'One line for a person.'}, 'poll_interval_ms': {'type': 'number', 'description': 'How often the caller should poll from here, in milliseconds.'}}}
입력 스키마
{'type': 'object', 'required': ['app_id', 'messages'], 'properties': {'role': {'type': 'string', 'description': 'The AI role to run as: one of your roles (aimeat_ai_roles), or for an app a role it declares and you bound. A named model or provider wins over it.'}, 'model': {'type': 'string', 'description': "Model override; otherwise the owner's configured chat model."}, 'top_p': {'type': 'number', 'description': 'Nucleus sampling, 0-1.'}, 'app_id': {'type': 'string', 'description': "App attribution for the owner's allowlist and daily quota."}, 'messages': {'type': 'array', 'description': '1-201 {role: system|user|assistant, content: string} messages; at most 200k characters combined.'}, 'provider': {'type': 'string', 'description': "One of the owner's AI providers (aimeat_ai_providers), or a type. No fallback then."}, 'reasoning': {'type': 'object', 'description': 'Optional {enabled, effort: low|medium|high, max_tokens, exclude}; provider-dependent.'}, 'max_tokens': {'type': 'number', 'description': 'Optional explicit output cap, 1-32768. Omitted by default.'}, 'temperature': {'type': 'number', 'description': 'Sampling temperature, 0-2.'}}}
입력 스키마
{'type': 'object', 'required': ['app_id', 'input', 'model', 'voice'], 'properties': {'role': {'type': 'string', 'description': 'The AI role to run as: one of your roles (aimeat_ai_roles), or for an app a role it declares and you bound. A named model or provider wins over it.'}, 'input': {'type': 'string', 'description': 'Text to speak, 1-4000 characters.'}, 'model': {'type': 'string', 'description': 'Explicit speech model id.'}, 'speed': {'type': 'number', 'description': 'Speech speed, 0.25-4, default 1.'}, 'voice': {'type': 'string', 'description': 'Provider voice id.'}, 'app_id': {'type': 'string', 'description': "App attribution for the owner's allowlist and daily quota."}, 'provider': {'type': 'string', 'description': "One of the owner's AI providers (aimeat_ai_providers), or a type. No fallback then."}, 'instructions': {'type': 'string', 'description': 'Optional provider-specific speaking instructions, at most 2000 characters.'}, 'response_format': {'enum': ['pcm', 'mp3'], 'type': 'string', 'description': 'Audio format, default pcm. PCM rate and channel count follow the provider.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Maximum transactions to return.'}}}
입력 스키마
{'type': 'object', 'required': ['tracking_code'], 'properties': {'tracking_code': {'type': 'string', 'description': 'Work item tracking code.'}}}
입력 스키마
{'type': 'object', 'required': ['tracking_code', 'output'], 'properties': {'output': {'type': 'string', 'description': 'Delivery payload (the work result).'}, 'metadata': {'type': 'string', 'description': 'Optional delivery metadata.'}, 'tracking_code': {'type': 'string', 'description': 'Work item tracking code.'}}}
입력 스키마
{'type': 'object', 'required': ['workflow_id', 'run_id', 'step_id', 'picks'], 'properties': {'other': {'type': 'string', 'description': 'Free-text answer; only when the question allows it.'}, 'picks': {'type': 'array', 'description': 'Option ids from the pinned question (may be empty when answering with `other` alone).'}, 'run_id': {'type': 'string', 'description': 'The run id (from aimeat_workflow_pending_inputs).'}, 'step_id': {'type': 'string', 'description': 'The waiting step id.'}, 'workflow_id': {'type': 'string', 'description': 'The workflow id.'}}}
입력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': "Omit to list; pass for one workflow's detail."}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['id', 'mode'], 'properties': {'id': {'type': 'string', 'description': 'The workflow id.'}, 'mode': {'enum': ['signals-only', 'full'], 'type': 'string', 'description': 'signals-only | full'}, 'vars': {'type': 'object', 'description': "The run's input, as { varName: value } over the vars the workflow declares. A workflow that takes input is a constant without this. Anything it does not declare is ignored, and a declared var left out falls back to its default."}, 'target': {'enum': ['live', 'sandbox'], 'type': 'string', 'description': 'With mode="full": "sandbox" writes every key behind a per-run prefix so a trial cannot touch what a live run produced. Default "live".'}}}
입력 스키마
{'type': 'object', 'required': ['id', 'definition'], 'properties': {'id': {'type': 'string', 'description': 'Workflow id (lowercase slug); existing id = update.'}, 'propose': {'type': 'boolean', 'description': 'Operator flow (server MCP only): return a diff vs the current definition + a single-use confirm_token WITHOUT saving.'}, 'definition': {'type': 'object', 'description': 'The descriptor: { title, description, trigger, vars[], steps[], on_step_fail:"inspect", llm?{approved}, notify_on_finish?, resume?, fresh?, skip_done?, parallel?, maxCostUsd? }. parallel:true lets two or more live runs of this workflow overlap; use it when the keys carry a run-distinguishing var (a case reference in vars, or the built-in {run}); without it a second start while one is in flight is skipped and says so. Refused together with fresh. maxCostUsd (US dollars, per run) caps what a run spends on AI, its ai steps and the judging of its llm signals together: an ai step\'s model call starts only when what one attempt is expected to cost fits in what is left, and holds that share until the call answers, also after a timeout or a retry; otherwise the step waits for the open calls or stops the run. A step expected to cost more than the whole cap starts alone while the run has spent less.'}, 'confirm_token': {'type': 'string', 'description': 'Token from the propose step — applies exactly the proposed definition.'}}}
입력 스키마
{'type': 'object', 'properties': {}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'action'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'role': {'enum': ['viewer', 'contributor'], 'type': 'string', 'description': "action='decide' approve: 'viewer' (read) or 'contributor' (read+write). Omit for the default (contributor)."}, 'action': {'enum': ['request', 'list', 'decide'], 'type': 'string', 'description': "'request' | 'list' | 'decide'."}, 'message': {'type': 'string', 'description': "action='request': optional note to the creator."}, 'decision': {'enum': ['approve', 'deny'], 'type': 'string', 'description': "action='decide': 'approve' (default) or 'deny'."}, 'requester': {'type': 'string', 'description': "action='decide': the requester's owner name (from action='list')."}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space', 'instance_id', 'body'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'body': {'type': 'string', 'description': 'The comment text.'}, 'space': {'type': 'string', 'description': 'The objectType (space) name the target lives in.'}, 'anchor': {'type': 'object', 'description': 'Optional anchor to part of a document: { section } or { quote }.'}, 'parent_id': {'type': 'string', 'description': 'Optional id of the comment this replies to (threading).'}, 'instance_id': {'type': 'string', 'description': 'The id of the record/document being commented on.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space', 'instance_id'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'space': {'type': 'string', 'description': 'The objectType (space) name.'}, 'instance_id': {'type': 'string', 'description': 'The record/document id.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'name', 'manifest'], 'properties': {'name': {'type': 'string', 'description': 'Workspace name.'}, 'readme': {'type': 'string', 'description': 'Optional markdown intro (defaults to the manifest name + summary).'}, 'schemas': {'type': 'object', 'description': 'Map of namespace → JSON Schema for each records objectType, e.g. { "shared.tasks": { type:"object", required:["id","title"], properties:{...} } }.'}, 'manifest': {'type': 'object', 'description': 'The manifest. You really only need its `objectTypes` array — the envelope (manifestVersion, id, name, kind, status) is BACKFILLED for you when omitted, so an objectTypes-only manifest is accepted on the first call (name defaults from this tool\'s `name` param, kind to "project"). Full shape: { objectTypes: [{ name, namespace, mode:"records"|"document", schemaRef, writeRole, cardinality, versioned }], policy? }. Each space is backing:"memory" (the default) — "rows" is the ROW STORE for a stream that arrives in volume and does not stop (appended, no version history, charged to the organism, filtered on up to three fields named in `indexOn`, and read through the rows tools rather than the record ones), "tasks" only declares a pointer to the task system, and "storage"/"knowledge" are rejected: files and knowledge packages attach via workspace Sources or embedded document images, never as a backed space. The test for memory versus rows is one multiplication: if keys_per_day × 365 exceeds 1000, use rows.'}, 'organism_id': {'type': 'string', 'description': 'Organism to create the workspace in.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space', 'id', 'markdown'], 'properties': {'id': {'type': 'string', 'description': 'The document id, from the workspace index (aimeat_workspace_read).'}, 'ws': {'type': 'string', 'description': 'Workspace id.'}, 'space': {'type': 'string', 'description': "The document space, by objectType name (e.g. 'notes') or namespace."}, 'section': {'type': 'string', 'description': "Add at the end of THIS section instead of the end of the document. The heading's exact text; an ambiguous one is refused."}, 'markdown': {'type': 'string', 'description': 'The markdown to add. Blank lines around it are worked out for you; nothing already in the document is touched.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space', 'id', 'section', 'markdown'], 'properties': {'id': {'type': 'string', 'description': 'The document id, from the workspace index (aimeat_workspace_read).'}, 'ws': {'type': 'string', 'description': 'Workspace id.'}, 'space': {'type': 'string', 'description': 'The document space, by objectType name or namespace.'}, 'section': {'type': 'string', 'description': "The heading text to replace, exactly as the document spells it (the leading #'s are optional)."}, 'markdown': {'type': 'string', 'description': 'The whole replacement section, starting with its heading line.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id'], 'properties': {'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'grantee', 'role'], 'properties': {'ws': {'type': 'string', 'description': 'A single workspace id (use this and/or `workspaces`).'}, 'role': {'enum': ['viewer', 'contributor'], 'type': 'string', 'description': "'viewer' (read) or 'contributor' (read+write)."}, 'grantee': {'type': 'string', 'description': 'Owner name, GHII, or GAII to grant. Applies to the owner (agents inherit).'}, 'workspaces': {'type': 'array', 'description': 'Many workspace ids to grant in one call.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'grantee'], 'properties': {'ws': {'type': 'string', 'description': 'A single workspace id (use this and/or `workspaces`).'}, 'grantee': {'type': 'string', 'description': 'Owner name, GHII, or GAII to revoke.'}, 'workspaces': {'type': 'array', 'description': 'Many workspace ids to revoke in one call.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id (from aimeat_workspace_list).'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'namespace', 'id'], 'properties': {'id': {'type': 'string', 'description': 'The instance id to delete (draft + latest + all versions).'}, 'ws': {'type': 'string', 'description': 'Workspace id.'}, 'namespace': {'type': 'string', 'description': "The objectType's namespace, e.g. shared.deliverables."}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id (from aimeat_workspace_list).'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'namespace', 'id'], 'properties': {'id': {'type': 'string', 'description': 'The instance id whose .draft to publish.'}, 'ws': {'type': 'string', 'description': 'Workspace id.'}, 'namespace': {'type': 'string', 'description': 'The instance namespace.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id (from aimeat_workspace_list).'}, 'ids': {'type': 'array', 'description': 'Batch-open: return the FULL value of ONLY these instance ids (from the index). A full memory key, which is the id aimeat_discover gives a workspace record, is taken as well. Omit for the lightweight index.'}, 'space': {'type': 'string', 'description': 'With `ids`: optionally restrict the lookup to this space (objectType name or namespace).'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'include_archived': {'type': 'boolean', 'description': 'Include archived (hidden) content. Default false.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'namespace', 'id'], 'properties': {'id': {'type': 'string', 'description': 'The instance id of the published record to reopen.'}, 'ws': {'type': 'string', 'description': 'Workspace id.'}, 'namespace': {'type': 'string', 'description': 'The instance namespace.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'body': {'type': 'object', 'description': 'The row, for the single-row form. Use `rows` for many.'}, 'rows': {'type': 'array', 'description': 'Up to 500 rows, each { body, row_id?, occurred_at? }.'}, 'space': {'type': 'string', 'description': "The row space, by objectType name (e.g. 'mailmessage') or namespace."}, 'row_id': {'type': 'string', 'description': 'Optional caller id for the single-row form. Repeating one REPLACES that row.'}, 'occurred_at': {'type': 'string', 'description': 'ISO 8601: when it happened in the world. Defaults to now.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'space': {'type': 'string', 'description': 'The row space, by objectType name or namespace.'}, 'before': {'type': 'string', 'description': 'ISO 8601: remove every row created before this.'}, 'row_id': {'type': 'string', 'description': 'Remove this one row.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'limit': {'type': 'number', 'description': 'Rows per page, default 100, max 500.'}, 'order': {'type': 'string', 'description': "'desc' (default, newest first) or 'asc'."}, 'since': {'type': 'string', 'description': 'ISO 8601: occurred_at at or after this.'}, 'space': {'type': 'string', 'description': 'The row space, by objectType name or namespace.'}, 'until': {'type': 'string', 'description': 'ISO 8601: occurred_at at or before this.'}, 'where': {'type': 'object', 'description': 'Filter as { field: value }, using only fields the space declares in indexOn.'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor from the previous page.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'changed_since': {'type': 'string', 'description': 'ISO 8601: rows whose updated_at is strictly after this.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'space': {'type': 'string', 'description': 'The row space, by objectType name or namespace.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'space', 'sections'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'space': {'type': 'string', 'description': 'The document space, by name or namespace.'}, 'sections': {'type': 'array', 'description': "The WHOLE index: [{ id, name, parentId, documents, color? }]. An id is letters, digits, '-' or '_'; a parent must be another section in the list; color is red, orange, yellow, green, blue, purple or gray."}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws', 'spaces'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'spaces': {'type': 'array', 'description': "The space to add, { name, namespace, mode }, or an array of up to 20. The namespace is dotted letters, digits, '-' and '_', such as 'shared.notes'; 'meta', 'skills' and 'access' are the platform's own."}, 'schemas': {'type': 'object', 'description': 'Map of namespace → JSON Schema, only for records spaces added in this same call. A space that already exists keeps its schema.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'action'], 'properties': {'ws': {'type': 'string', 'description': "action='list': only this workspace. Omit for every workspace you can read."}, 'note': {'type': 'string', 'description': "action='decide': an optional note the member reads."}, 'action': {'enum': ['list', 'decide'], 'type': 'string', 'description': "'list' | 'decide'."}, 'status': {'enum': ['pending', 'approved', 'declined', 'expired', 'all'], 'type': 'string', 'description': "action='list': which ones. Default 'pending'."}, 'decision': {'enum': ['approve', 'decline'], 'type': 'string', 'description': "action='decide': 'approve' or 'decline'."}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'suggestion_id': {'type': 'string', 'description': "action='decide': the suggestion's id, from action='list'."}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'direction'], 'properties': {'ws': {'type': 'string', 'description': "direction='export': the workspace id to export."}, 'direction': {'enum': ['export', 'import'], 'type': 'string', 'description': "'export' or 'import'."}, 'zip_base64': {'type': 'string', 'description': "direction='import': the workspace export ZIP, base64-encoded."}, 'organism_id': {'type': 'string', 'description': 'Organism identifier (source for export, target for import).'}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws'], 'properties': {'ws': {'type': 'string', 'description': 'Workspace id.'}, 'name': {'type': 'string', 'description': 'New workspace name (synced to manifest + registry).'}, 'readme': {'type': 'string', 'description': 'New markdown readme/intro (replaces the current one).'}, 'schemas': {'type': 'object', 'description': 'Map of namespace → JSON Schema (object) to lock (strict) for a records space. READ THE CURRENT SCHEMAS FIRST: this REPLACES the locked schema, it does not merge into it, so a schema you write without having read drops whatever else the old one said. aimeat_workspace_read (the default index call) returns them as `schemas`, keyed by namespace, in exactly this shape — read, edit the one entry, send the map back. And do not invent a maxLength: the real ceiling is the memory value budget the node enforces on the whole record (1024 kB by default), and a field cap smaller than that is a number somebody guessed, which is how a notes field filled up at 4000 characters for no reason anyone could name.'}, 'manifest': {'type': 'object', 'description': 'Full replacement manifest (objectTypes + policy/gate + settings) — for restructuring (rename/remove a space, change the gate). The id is preserved and the manifest is schema-validated. To only ADD spaces, prefer add_spaces. May also carry an optional top-level objectives[] (the measurability convention: why the organism exists + KPIs with kind value/cost/roi/outcome/quality and a source that can sum/count the organism\'s own records) and an objectType servesObjective linking a space to an objective; both optional — see "Recording purpose & value" in docs/agent-workspace-contracts.md.'}, 'add_spaces': {'type': 'array', 'description': 'ADDITIVE: objectTypes to UNION into the manifest (skip-if-exists). Pass just { name, namespace, mode } (+ a schema in `schemas`); defaults are filled. A ROW space is { name, namespace, backing:"rows", indexOn:[…] } and takes no mode: rows keep no version history and are neither records nor documents, and those defaults are filled for you too. Preferred over `manifest` for adding spaces. Returns { added, skipped }. Cannot remove/rename.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'member_changes': {'enum': ['direct', 'suggest'], 'type': 'string', 'description': "How this workspace takes a change from a member who is neither its creator nor an organism admin (aimeat_workspace_space_add, aimeat_workspace_sections_set): 'direct' = it lands at once with their name on it; 'suggest' = it waits until the creator or an admin approves it (the default)."}}}
입력 스키마
{'type': 'object', 'required': ['organism_id', 'ws'], 'properties': {'id': {'type': 'string', 'description': 'Instance id. Required for a records space (or include id in value); auto-generated for a document.'}, 'ws': {'type': 'string', 'description': 'Workspace id.'}, 'items': {'type': 'array', 'description': 'BATCH: [{ value, space?, id?, section? }] — up to 50 items written in one call (one approval prompt for the whole migration). All-or-nothing.'}, 'space': {'type': 'string', 'description': "The objectType (space) NAME from the manifest, e.g. 'feature' or 'notes'. Required for a single write; with `items` it is the default each item inherits."}, 'value': {'type': 'object', 'description': 'The content object for a SINGLE write. Records: the record (matching its schema). Documents: { title, markdown }. Omit when using `items`.'}, 'section': {'type': 'string', 'description': 'Document spaces only: section id/name to file the document under.'}, 'organism_id': {'type': 'string', 'description': 'Organism identifier.'}, 'ai_provenance': {'type': 'object', 'description': 'How this content was made: { level, method?, human_involvement?, model?, provider?, sources?, notes? }. `level` is required when the block is present: original | assisted | synthesized | ai-generated. `model` is YOUR OWN model id as your provider names it (self-identify, never ask the person); without it the record cannot say which model made this. `human_involvement` (none | light-review | editorial-control | full-human) counts only a step where a person read the SUBSTANCE and could reject it; omitted means none. The node fills in who you are, which node, when, and a hash of the exact bytes — those are never taken from the caller.'}, 'ai_provenance_id': {'type': 'string', 'description': 'Attach an EXISTING provenance record instead of declaring a new one — the id the node returned when it generated this content for you. Only your own records can be attached.'}}}
최근 도구 변경
유사한 MCP 서버
hyperion
Acts as a paid MCP tool marketplace and utility gateway with server discovery, HTTP and JavaScript tools, research, data conversi…
Japan Public Ledgers MCP
Provides agent identity, memory, audit, trust, proxy, temporary email, webhook, CAPTCHA, and alerting capabilities alongside publ…
PHION Agent Trust Infrastructure
Provides agent trust, policy, provenance, evidence, delegation, telemetry, and transaction-control services for MCP and agent wor…
Swamp
Coordinates security agents through scoped bug-bounty programs, target claims, vulnerability submissions, peer review, shared fin…
AgentBIT
Routes pay-per-call tools over x402 on Base, covering discovery, data conversion, company research, counterparty screening, domai…
SaSame MCP Observatory + Gold Rush Town
Audits and profiles MCP servers, provides ecosystem analytics, trust and claim records, and non-custodial transaction or escrow a…
ThinkNEO Control Plane
Provides an enterprise AI control plane for governance, guardrails, spend tracking, compliance, and model or tool routing.
DDG Agent Services
Acts as a pay-per-call gateway for agent tools including LLM routes, web and market data, Ethereum RPC, security scans, service c…