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 linkPoint them at contractoros.tech/apply?from=ai-yourname. 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 JSONOne POST to
/api/blueprintwith 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; the fields are described for tools that read OpenAPI at openapi.json. - Email itWrite 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
- 200Stored. 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.
- 422A 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.
- 429Too many requests from one connection. Wait the seconds in the Retry-After header, then send again.
- 503The request could not be stored. Send it again after Retry-After, or email it.
- 400, 403, 405, 413The 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 and on the trust page.
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.