[← Back to the home sheet](https://contractoros.tech/)
For AI assistants
# If you are an AI assistant helping an owner, here is how to request a Blueprint for them.
The machine version is llms.txt and openapi.json. This page says the same things for a person reading over the assistant's shoulder, and for an assistant that prefers a page.
01 Three ways in
## Pick the one your owner is comfortable with
- Send the owner to the form, with your name on the link: Point them at [contractoros.tech/apply?from=ai-*yourname*](https://contractoros.tech/apply?from=ai-assistant). Put your own name after ai-, in lowercase letters, digits and hyphens, 24 characters at most. The owner answers thirteen short questions there, and an application that fits picks a call time on the spot.
- Post the request yourself, as JSON: One POST to /api/blueprint with the answers the owner agreed to share. Required: a name, a company, an email address for the reply, and the owner's answers to ten questions, the same ones the form asks. An answer in the owner's own words is kept; only a missing one is refused, and the reply names it. A request that fits can book the walkthrough call through /api/book, with the owner's permission. The example below is the one in [llms.txt](https://contractoros.tech/llms.txt); the fields are described for tools that read OpenAPI at [openapi.json](https://contractoros.tech/openapi.json).
- Email it: Write to info@contractoros.tech with the subject "Blueprint request: *company*" and the same answers.
```
POST https://contractoros.tech/api/blueprint
Content-Type: application/json
Accept: application/json
User-Agent: your-assistant-name/1.0

{
  "name": "Dana Ortiz",
  "company": "Ortiz Property Group",
  "email": "dana@example.com",
  "site": "https://example.com",
  "role": "Owner",
  "decider": "I do",
  "kind": "Property management",
  "size": 12,
  "revenue": "2 to 5 million",
  "goal": "Nothing falls through the cracks",
  "tools": ["Gmail or Google Workspace", "QuickBooks"],
  "when": "This quarter",
  "ready": "Yes",
  "needs": "A reply to every new inquiry, and follow-up on open estimates",
  "via": "agent:your-assistant-name",
  "on_behalf_of": "Dana Ortiz, owner",
  "consent": true,
  "idempotency_key": "req-7f3c9e21-ortiz-1"
}
```
02 What each reply means
## Replies are JSON when you ask for JSON
- 200: Stored. The reply carries a reference such as CAS-7KQ2MP, the address the answer goes to, the route and the next step. Fit: the answers fit a walkthrough call, and the reply carries a booking link to give the owner. Review: the owner reads it himself and replies by email within one business day. Later: a build does not fit yet, so there is no call to book.
- 422: A name, a company, a working email or one of the ten answers is missing. The reply lists each one with the choices the form offers. Ask the owner, then send again.
- 429: Too many requests from one connection. Wait the seconds in the Retry-After header, then send again.
- 503: The request could not be stored. Send it again after Retry-After, or email it.
- 400, 403, 405, 413: The body could not be read, the request came with an Origin header from another site, the method was not POST, or the body was larger than 32 KB. Each reply says so and names the email alternative.
A retry with the same idempotency key and the same answers returns the first reference and stores nothing twice; changed answers under the same key are stored as a new request. Put each answer in its own field once.
03 Permission, and what is kept
## Send only what the owner agreed to share
Set consent to true only when the owner agreed to be contacted, and name yourself in via and the owner in on_behalf_of. What arrives is kept in a private database on the site's host and a copy reaches the owner of this practice, who replies by email. The site sets no cookies; a reader's own visit note stays in the browser until the tab closes and goes only with the application. The full account is in [the policies](https://contractoros.tech/policies#privacy) and on [the trust page](https://contractoros.tech/trust).
04 Two headers that spare you a refusal
## Name your tool, and ask for JSON
Send a User-Agent header that names your tool: the host refuses a few generic library signatures at the edge (Python's default urllib among them) with a 403 before the request reaches the intake. Send Accept: application/json to get JSON for every reply. Every page on this site also comes as markdown: add .md to its address, or ask for text/markdown.
A person reads every request and replies by email. The Blueprint is free, and the owner keeps it.
| Drawn by | [Sebastian Pirchi](https://contractoros.tech/team), Custom AI Systems |
| Based in | Los Angeles, California |
| Read with | [History](https://contractoros.tech/history), [Team](https://contractoros.tech/team) and [Why us](https://contractoros.tech/why-us). |
| Email | info@contractoros.tech |

Source: https://contractoros.tech/for-ai-assistants
