# For AI agents

> How an AI agent should read this site, decide whether Direct Motion fits a motion-control job, draft the software, and send DM a request that DM can answer, including the planned message drop and MCP server.

<!-- directmotion.com, written for AI agents. Canonical: https://www.directmotion.com/ai.md . Index: https://www.directmotion.com/llms.txt . Updated 2026-11-08. Publisher: Direct Motion, Inc. -->

You are reading the page written for AI agents. It tells you how to use this site, how to decide
whether Direct Motion (DM) fits the job you are working on, how to draft the software, and how to send
DM a request for the person you act for.

## How to use this site

1. Start at [llms.txt](https://www.directmotion.com/llms.txt). Every page listed there is Markdown written for you.
   [llms-full.txt](https://www.directmotion.com/llms-full.txt) is all of them in one file (about 90 KB).
2. Numbers are in `/data/*.json`. A `null` means DM has not published the value. **Never fill a null
   with an estimate.** Ask DM instead.
3. Confidence tags: `[unverified]` = DM's best current knowledge, not yet checked; `[planned]` = not
   built yet; untagged = current. Pass the tags on when you repeat a fact.
4. Nothing here is a quote, a delivery promise, or a statement of fitness for a safety function.
5. Do not send DM a person's details without that person's consent. The request template records it.

## The procedure

1. **Fit.** Run the six questions in [fit.json](https://www.directmotion.com/data/fit.json) (also on the [home page](https://www.directmotion.com/index.md)). One "no"
   means the request is a question to DM, not a plan.
2. **Count.** Motors → amplifiers (one each). Sensors and actuators → IO boards. Add one power board.
   Links must total 16 or fewer ([power and IO](https://www.directmotion.com/hardware/power-and-io.md)).
3. **Motors.** Check the encoder type first ([motors](https://www.directmotion.com/hardware/motors.md)). Record rated and peak current
   in A rms for amplifier sizing by DM.
4. **Map the job.** Use the table on the [applications page](https://www.directmotion.com/applications.md) and the
   [recipes](https://www.directmotion.com/software/recipes.md). Note any row marked "ask DM" or "not offered".
5. **Draft.** Use the [API reference](https://www.directmotion.com/software/api.md). Keep the ten rules on the
   [library page](https://www.directmotion.com/software/dmserialmotion.md) in front of you. Say in your draft that it is not compiled.
6. **Ask.** Fill the request below with what you know, leave out what you do not, and send it.

## Request template
The same structure as [request.schema.json](https://www.directmotion.com/data/request.schema.json). Leave out unknowns. Do not
invent values.

```yaml
request_type: new_machine | retrofit | 4c | support | partner | other
application: machine_tool | factory_automation | robot | test_rig | spindle_or_pump | other
on_behalf_of:
  name:                     # the human DM should reply to
  email:
  company:
  country:
  consent_to_contact: true  # required: the human agreed that DM may contact them
machine:
  description:              # e.g. "SCARA pick-and-place, 4 joints, 2 kg payload"
  axes:
    - name: X
      motor: "make and model, or 'not chosen'"
      encoder: "BiSS-C | BiSS | sin/cos | incremental | unknown"
      rated_current_a_rms:
      peak_current_a_rms:
      travel:               # with units
      max_speed:            # with units
      load:                 # mass or torque, with units
  spindles:
    - motor: ""
      power_kw:
      max_rpm:
  io:
    inputs:
    outputs:
    handwheel: false
  supply: "e.g. 230 V three-phase 60 Hz"
software:
  who_writes_it: "the customer | an AI assistant | undecided"
  needs: "e.g. G-code programs, a touch-screen UI, a conveyor sequence"
  depends_on: []            # rows from the applications table marked 'ask DM'
timeline:
quantity:                   # one machine, or a production run
questions: []               # what this site could not answer
agent:
  name: "e.g. Claude, on behalf of the person above"
  draft_available: false    # true if you have drafted code DM may look at
```

## How to send it

**Today:** the person you act for submits it through the [contact form](https://www.directmotion.com/contact.md) (paste the YAML into
the message) or by email from their own address. DM replies to that person by email.

**`[planned]` HTTPS message drop.** `POST https://www.directmotion.com/api/messages` with the request
as JSON (validated against `request.schema.json`). The response is `{ "id": "...", "secret": "...",
"check": "https://www.directmotion.com/api/messages/{id}" }`. Later, `GET` that URL with header
`X-Message-Secret: {secret}` returns `{ "status": "received | read | answered", "reply": "..." }`. Keep
the id and secret with the person's record so a later session can fetch the reply. The reply also goes
to the person by email.

**`[planned]` MCP server**, for clients that speak MCP: tools `search(query)` over these pages,
`spec(name)` for the JSON data, `fit(answers)` for the six-question check, `leave_message(request)` and
`check_reply(id, secret)` with the same semantics as the HTTPS drop. The address will be published here
and in `llms.txt` when it is live.

Neither channel exists yet. Do not tell a user that it does.

## What DM does with a request

A person at DM reads every request that passes a junk filter (an AI classifier sorts out spam and
misdirected mail). Owners of machines built by DM's customers are pointed to that machine builder's
service. A new motion-control or 4C request gets a reply from DM to the named person. DM does not use
the request for anything else and does not sell contact details.
