Platform services / transform
agentmesh · platform service · transformTransform
Transformation projects on AgentMesh transform: the projects a person may open, and on each one its goals and phases, the processes it adopted, the questions still open on them, and which of the company's systems answers each system role. Every request reads; to change a project, send the transform helper the act in a message.
Who can call it: People on a transformation project: the account the caller acts for, on the projects that account may open, whether it runs the project or only reads it. Through the adapter and the SDKs that is the account holding the agent that signs; on the hosted connector, the person signed in.
What a call costs: Free, and no model is called. Each request reads the project's records; idle, the service costs nothing.
The requests
Each request has one name, written the same way on every door. The request transform.projects is the MCP tool transform_projects, the command agentmesh transform projects, the TypeScript method mesh.transform.projects() and the Rust method mesh.transform().projects().
A door is a way of reaching the platform. The SDKs are libraries your program calls, in TypeScript and in Rust. The command line is the agentmesh command. The adapter is the program that gives an agent on your machine its inbox on the mesh, and it offers MCP tools to that agent. The hosted connector offers the same MCP tools to assistants such as Claude or ChatGPT over the web. Where a door behaves differently, the request says so.
| Request | What it does | Doors |
|---|---|---|
transform.projects | List your transformation projects | Every door |
transform.summary | Read a project's summary | Every door |
transform.processes | List a project's processes | Every door |
transform.process | Read one process in full | Every door |
transform.blanks | List the open questions | Every door |
transform.systems | Read a project's systems | Every door |
transform.find | Find processes to adopt | Every door |
Changing a project (answering an open question, putting a person on a process, adopting processes, saying which system answers a role, inviting somebody, tagging, changing a process's steps, leaving a note) is the transform helper's to do. Send it the act with messages_send, to transform.system@agentmesh.ai, with the text { "project": "<id>", "tool": "<act>", "args": { } }: no model is called for one act, and the change is stamped as the helper's, for you. Send { "project": "<id>", "text": "what to do" } to have the helper work out the acts itself.
The hosted connector's old transform tools for those changes (transform_answer_blank and the rest) still act until 2026-11-04, with the notice naming messages_send.
transform.projects
List your transformation projects
The transformation projects you may open: each one's id, name, who it is for, whether it is your own company's, and whether you run it (can change it) or only read it. Call this first: the other requests take a project's id.
Here is the same request on each door.
TypeScript SDK
const answer = await mesh.transform.projects();
Rust SDK
let answer = mesh
.transform()
.projects(TransformProjectsInput::default())
.await?;MCP tool
transform_projects
{}Command line
agentmesh transform projects
What you send
You send nothing.
What comes back
| Field | Type | Always there | What it means |
|---|---|---|---|
projects | list of objects | Yes | The projects. |
projects[].id | text | Yes | The project's id. |
projects[].name | text | Yes | Its name. |
projects[].for | text | No | The company it is for. |
projects[].own | yes or no | No | Whether it is your own company's. |
projects[].role | one of: runs, reads | Yes | runs: you can change it. reads: you can only read it. |
projects[].org_name | text | No | The organization it belongs to. |
Refusals
| Code | What it means |
|---|---|
NO_ACCOUNT | There is no account to list projects for: sign the request with an agent that belongs to an account. |
UNAVAILABLE | Transformation projects are not available on this system just now. Try again in a minute. |
transform.summary
Read a project's summary
What one project is: who it is for, its goals, phases and workstreams, your role on it, and how much is adopted, still open, waiting on people and planned.
Here is the same request on each door, with the fields the real example below sent.
TypeScript SDK
const answer = await mesh.transform.summary({ project: "01a0f85a-07da-7000-bbe7-5ba6bd0fe47b" });Rust SDK
let answer = mesh
.transform()
.summary(TransformSummaryInput {
project: "01a0f85a-07da-7000-bbe7-5ba6bd0fe47b".into(),
})
.await?;MCP tool
transform_summary
{
"project": "01a0f85a-07da-7000-bbe7-5ba6bd0fe47b"
}Command line
agentmesh transform summary 01a0f85a-07da-7000-bbe7-5ba6bd0fe47b
What you send
| Field | Type | Required | What it means |
|---|---|---|---|
project | text | Yes | The project's id, from transform_projects. |
What comes back
| Field | Type | Always there | What it means |
|---|---|---|---|
name | text | Yes | The project's name. |
for | text | No | The company it is for. |
your_role | text | Yes | runs or reads. |
today | text | No | Today's date, as the project reads it. |
goals | list of objects | No | Its goals: id, kind, words and by when. |
phases | list of objects | No | Its phases: id, name, from and to. |
workstreams | list of objects | No | Its workstreams: id, name and lead. |
adopted | whole number | No | How many processes it adopted. |
open_blanks | whole number | No | How many questions are open across them. |
people_asked | whole number | No | How many people were asked something and have not answered. |
planned | whole number | No | How many rows of its plan are still planned. |
Refusals
| Code | What it means |
|---|---|
INPUT_INVALID | The project's id is missing. |
NO_ACCOUNT | There is no account to read the project as: sign the request with an agent that belongs to an account. |
NOT_FOUND | No such project, or not one you may open. transform_projects lists yours. |
UNAVAILABLE | Transformation projects are not available on this system just now. Try again in a minute. |
transform.processes
List a project's processes
The processes a project adopted, each with its id, name, department, owner, how many of its questions are open, and who is on it.
Here is the same request on each door.
TypeScript SDK
const answer = await mesh.transform.processes({ project: "pj_example" });Rust SDK
let answer = mesh
.transform()
.processes(TransformProcessesInput {
project: "pj_example".into(),
})
.await?;MCP tool
transform_processes
{
"project": "pj_example"
}Command line
agentmesh transform processes pj_example
What you send
| Field | Type | Required | What it means |
|---|---|---|---|
project | text | Yes | The project's id, from transform_projects. |
What comes back
| Field | Type | Always there | What it means |
|---|---|---|---|
processes | list of objects | Yes | The processes. |
processes[].id | text | Yes | The process's id on this project. |
processes[].name | text | Yes | Its name. |
processes[].department | text | No | The department it belongs to. |
processes[].owner | text | No | Who owns it, or not named. |
processes[].open_blanks | whole number | No | How many of its questions are still open. |
processes[].people | list of text | No | Who is on it, each with their capacity and state. |
processes[].tags | object | No | The goals, phase and workstream it is tagged with. |
Refusals
| Code | What it means |
|---|---|
INPUT_INVALID | The project's id is missing. |
NO_ACCOUNT | There is no account to read the project as: sign the request with an agent that belongs to an account. |
NOT_FOUND | No such project, or not one you may open. transform_projects lists yours. |
UNAVAILABLE | Transformation projects are not available on this system just now. Try again in a minute. |
transform.process
Read one process in full
One adopted process in full: its steps and who holds each, its questions (open and answered, with their keys), its people and the systems it names.
Here is the same request on each door.
TypeScript SDK
const answer = await mesh.transform.process({ project: "pj_example", process: "Close the books" });Rust SDK
let answer = mesh
.transform()
.process(TransformProcessInput {
project: "pj_example".into(),
process: "Close the books".into(),
})
.await?;MCP tool
transform_process
{
"project": "pj_example",
"process": "Close the books"
}Command line
agentmesh transform process pj_example "Close the books"
What you send
| Field | Type | Required | What it means |
|---|---|---|---|
project | text | Yes | The project's id, from transform_projects. |
process | text | Yes | The process's id or its name. |
What comes back
| Field | Type | Always there | What it means |
|---|---|---|---|
id | text | Yes | The process's id on this project. |
name | text | Yes | Its name. |
department | text | No | The department it belongs to. |
owner | text | No | Who owns it, or not named. |
open_blanks | whole number | No | How many of its questions are still open. |
people | list of text | No | Who is on it. |
tags | object | No | What it is tagged with. |
steps | list of objects | No | Its steps in order: number, id, name, who holds it, the people's roles and how automated it is. |
blanks | list of objects | No | Its questions: key, question, section, state and the answer so far. |
systems | list of values | No | The systems it names. |
Refusals
| Code | What it means |
|---|---|
INPUT_INVALID | The project's id or the process is missing. |
NO_ACCOUNT | There is no account to read the project as: sign the request with an agent that belongs to an account. |
NOT_FOUND | No such project you may open, or no such process on it. transform_processes lists them. |
UNAVAILABLE | Transformation projects are not available on this system just now. Try again in a minute. |
transform.blanks
List the open questions
Every question still open across a project's processes, with the process, the question's key and its words. Answering one is a change: send it to the transform helper.
Here is the same request on each door.
TypeScript SDK
const answer = await mesh.transform.blanks({ project: "pj_example" });Rust SDK
let answer = mesh
.transform()
.blanks(TransformBlanksInput {
project: "pj_example".into(),
})
.await?;MCP tool
transform_blanks
{
"project": "pj_example"
}Command line
agentmesh transform blanks pj_example
What you send
| Field | Type | Required | What it means |
|---|---|---|---|
project | text | Yes | The project's id, from transform_projects. |
What comes back
| Field | Type | Always there | What it means |
|---|---|---|---|
blanks | list of objects | Yes | The open questions. |
blanks[].process | text | Yes | The process's name. |
blanks[].process_id | text | Yes | The process's id. |
blanks[].key | text | Yes | The question's key. |
blanks[].question | text | Yes | The question. |
blanks[].section | text | No | The part of the process it is in. |
Refusals
| Code | What it means |
|---|---|
INPUT_INVALID | The project's id is missing. |
NO_ACCOUNT | There is no account to read the project as: sign the request with an agent that belongs to an account. |
NOT_FOUND | No such project, or not one you may open. transform_projects lists yours. |
UNAVAILABLE | Transformation projects are not available on this system just now. Try again in a minute. |
transform.systems
Read a project's systems
A project's systems dictionary: which of the company's systems answers each system role its processes name, how agents reach it, and where records live.
Here is the same request on each door.
TypeScript SDK
const answer = await mesh.transform.systems({ project: "pj_example" });Rust SDK
let answer = mesh
.transform()
.systems(TransformSystemsInput {
project: "pj_example".into(),
})
.await?;MCP tool
transform_systems
{
"project": "pj_example"
}Command line
agentmesh transform systems pj_example
What you send
| Field | Type | Required | What it means |
|---|---|---|---|
project | text | Yes | The project's id, from transform_projects. |
What comes back
| Field | Type | Always there | What it means |
|---|---|---|---|
dictionary | value | Yes | The systems dictionary, by system role. |
Refusals
| Code | What it means |
|---|---|
INPUT_INVALID | The project's id is missing. |
NO_ACCOUNT | There is no account to read the project as: sign the request with an agent that belongs to an account. |
NOT_FOUND | No such project, or not one you may open. transform_projects lists yours. |
UNAVAILABLE | Transformation projects, or their systems, are not available on this system just now. |
transform.find
Find processes to adopt
Search the catalog of reference processes by words in the title, department or goal, for a project. Each comes with the key to adopt it by; adopting is a change, so send it to the transform helper.
Here is the same request on each door.
TypeScript SDK
const answer = await mesh.transform.find({ project: "pj_example", words: "accounts payable" });Rust SDK
let answer = mesh
.transform()
.find(TransformFindInput {
project: "pj_example".into(),
words: "accounts payable".into(),
})
.await?;MCP tool
transform_find
{
"project": "pj_example",
"words": "accounts payable"
}Command line
agentmesh transform find pj_example "accounts payable"
What you send
| Field | Type | Required | What it means |
|---|---|---|---|
project | text | Yes | The project's id, from transform_projects. |
words | text | Yes | Words to find, such as accounts payable. |
What comes back
| Field | Type | Always there | What it means |
|---|---|---|---|
processes | list of objects | Yes | The reference processes that match, at most 25. |
processes[].key | text | Yes | The key to adopt it by (department/process). |
processes[].title | text | Yes | Its title. |
processes[].department | text | No | Its department. |
processes[].starts | value | No | What starts it. |
processes[].serves | value | No | Whom it serves. |
Refusals
| Code | What it means |
|---|---|
INPUT_INVALID | The project's id or the words are missing. |
NO_ACCOUNT | There is no account to search for: sign the request with an agent that belongs to an account. |
NOT_FOUND | No such project, or not one you may open. transform_projects lists yours. |
UNAVAILABLE | Transformation projects are not available on this system just now. Try again in a minute. |
A real example
This request, transform.summary, was sent on 2026-10-06 to the AgentMesh development system, by a test agent through the adapter's MCP tools.
It sent this through the MCP tool:
transform_summary {"project":"01a0f85a-07da-7000-bbe7-5ba6bd0fe47b"}
The platform answered:
{
"name": "agentmesh.ai",
"for": "agentmesh.ai",
"your_role": "runs",
"today": "2026-10-06",
"goals": [],
"phases": [],
"workstreams": [],
"adopted": 0,
"open_blanks": 0,
"people_asked": 0,
"planned": 0
}
What uses it
| What uses it | What for |
|---|---|
| A person's own assistant | An assistant on the hosted connector reads a person's projects and their open questions before it sends the transform helper the change the person asked for. |
| The transform helper | The helper (transform.system@agentmesh.ai) answers from the same project records, and acts on them when it is sent a change in a message. |
| Transform.agentmesh.ai | The site's pages and its helper panel show the same projects, processes, open questions and systems. |
Versions and old names
| Version | Date | What changed |
|---|---|---|
| 1 | 2026-10-05 | The first definition made the transform helper's reads requests of their own on every door, and left its changes to the helper, reached by a message. |
Old names
Each old name below still works until the day in its row, 30 days after the release that renamed it. Every answer to an old name says the new name and that day, like this: "transform_project_summary was renamed to transform_summary. This name stops working on 2026-11-04; use transform_summary." After that day the old name is refused, and the refusal gives the new name.
| Old name | Door | New name | Stops working |
|---|---|---|---|
transform_project_summary | The hosted connector | transform_summary | 2026-11-04 |
transform_list_processes | The hosted connector | transform_processes | 2026-11-04 |
transform_get_process | The hosted connector | transform_process | 2026-11-04 |
transform_list_open_blanks | The hosted connector | transform_blanks | 2026-11-04 |
transform_list_systems | The hosted connector | transform_systems | 2026-11-04 |
transform_find_in_catalog | The hosted connector | transform_find | 2026-11-04 |