Cofounder CLI
Domains
Find and buy a domain or bring your own, point it at the company's hosting, and manage its DNS and email sending.
A company's address is a domain it owns. Cofounder can buy one for you or adopt one you already registered elsewhere, then wire it to the deployed app and to company email.
Find and buy one
| MCP | CLI | API |
|---|---|---|
domains_discover | cofounder domains discover --query <keyword> | POST /cofounder-cli/v1/company/domains/discover |
domains_check | cofounder domains check --domain-name <domain> | POST /cofounder-cli/v1/company/domains/check |
domains_contact_schema_get | cofounder domains contact-schema get --domain-name <domain> | GET /cofounder-cli/v1/company/domains/contact-schema |
domains_purchase | cofounder domains purchase --domain-name <domain> --expected-price <cents> --auto-renew | POST /cofounder-cli/v1/company/domains/purchases |
domains_orders_get | cofounder domains orders get --order-id <order-id> | GET /cofounder-cli/v1/company/domains/orders/{order_id} |
discover suggests names from a keyword and checks each with the registrar;
on MCP it opens the domain purchaser to pick from. check quotes one exact
name. purchase needs that quote as --expected-price (USD cents) plus
registrant details from --contact-file, and debits the company balance.
contact-schema get lists the registrant fields the registrar requires for
that name. A purchase can come back pending: check cofounder domains list
or the order with orders get before trying again.
cofounder domains search --domain-name <domain> is an older way to check
several exact names at once; use check or discover instead.
Bring your own
cofounder domains import acme.com --project <hosting-resource> --waitImport saves a domain registered elsewhere without transferring it or
touching its DNS. Point it at hosting, add the DNS records it reports, then
cofounder domains ownership prove confirms the records are live.
Point it at the app
cofounder domains attach --targets <json> assigns hostnames under the
domain to hosting resources (ids from resources list). With DNS on
Cofounder and ownership proven, the hosting provider picks it up right away;
otherwise the response names the next step.
DNS
For domains Cofounder manages, DNS is yours to edit. Every command acts on
the company's default domain; pass --resource <domain> to pick another.
| MCP | CLI | API |
|---|---|---|
domains_dns_records_list | cofounder domains dns-records list | GET /cofounder-cli/v1/company/domains/dns-records |
domains_dns_records_get | cofounder domains dns-records get --record-id <id> | GET /cofounder-cli/v1/company/domains/dns-records/{record_id} |
domains_dns_records_create | cofounder domains dns-records create --type TXT --name @ --value <value> --ttl 300 | POST /cofounder-cli/v1/company/domains/dns-records |
domains_dns_records_update | cofounder domains dns-records update --record-id <id> --value <value> | PATCH /cofounder-cli/v1/company/domains/dns-records/{record_id} |
domains_dns_records_delete | cofounder domains dns-records delete --record-id <id> | DELETE /cofounder-cli/v1/company/domains/dns-records/{record_id} |
domains_dns_records_apply | cofounder domains dns-records apply --records <json> --dry-run | POST /cofounder-cli/v1/company/domains/dns-records/apply |
Record ids come from list. create takes any common record type (A, AAAA,
ALIAS, CAA, CNAME, HTTPS, MX, NS, SRV, TXT); --priority applies to MX and
SRV, --srv and --https to their own types. create isn't safe to repeat: if
one doesn't report a clear result, list records before trying again. apply
is safe to run again — records that already exist are left alone — and
--dry-run shows what it would change first. update changes only the
fields you pass.
Check and move DNS
| MCP | CLI | API |
|---|---|---|
domains_dns_records_instructions_get | cofounder domains dns-records instructions get --format apply | GET /cofounder-cli/v1/company/domains/dns-records/instructions |
domains_dns_records_audit | cofounder domains dns-records audit | GET /cofounder-cli/v1/company/domains/dns-records/audit |
domains_dns_records_migration_get | cofounder domains dns-records migration get | GET /cofounder-cli/v1/company/domains/dns-records/migration |
domains_nameservers_update | cofounder domains nameservers update --nameserver <host> --nameserver <host> | PATCH /cofounder-cli/v1/company/domains/nameservers |
instructions get lists the records the app, staging, and marketing sites
need. For a domain you brought yourself, Cofounder can't edit its DNS, so
add these at your DNS host; --format apply prints them ready for
dns-records apply --records. audit compares live DNS with that list and
marks each record present, mismatched, or missing. migration get returns
the steps for moving a domain's DNS onto Cofounder: capture the current
records, dry-run and then run apply (it also takes --zone-file), audit,
point the registrar at the new nameservers, and watch verification.
nameservers update replaces the domain's full nameserver list at the
registrar, which changes where all of its DNS is served. Run it with no
--nameserver to go back to the registrar's own nameservers.
Email sending
| MCP | CLI | API |
|---|---|---|
domains_sending_domain_ensure | cofounder domains sending-domain ensure | POST /cofounder-cli/v1/company/domains/sending-domain |
domains_shared_sending_domain_ensure | cofounder domains shared-sending-domain ensure | POST /cofounder-cli/v1/company/domains/shared-sending-domain |
sending-domain ensure sets up send.<domain> for company email and returns
the records to publish; run it again after publishing them to recheck.
shared-sending-domain ensure sets up a sender under cofounder.company for
the app's email and publishes its DNS records itself; the app sends from it
only once it reports ready. Both are safe to run again.
Status, registrant, and renewals
| MCP | CLI | API |
|---|---|---|
domains_get | cofounder domains get | GET /cofounder-cli/v1/company/domains/detail |
domains_status_get | cofounder domains status get | GET /cofounder-cli/v1/company/domains/status |
domains_registrant_get | cofounder domains registrant get | GET /cofounder-cli/v1/company/domains/registrant |
domains_registrant_update | cofounder domains registrant update --contact-information <json> | PATCH /cofounder-cli/v1/company/domains/registrant |
domains_renewal_quote_get | cofounder domains renewal-quote get --years 1 | POST /cofounder-cli/v1/company/domains/renewal-quote |
domains_renew | cofounder domains renew --expected-price <cents> --years 1 | POST /cofounder-cli/v1/company/domains/renewals |
domains_auto_renew_update | cofounder domains auto-renew update --no-auto-renew | PATCH /cofounder-cli/v1/company/domains/auto-renew |
get shows one domain with its latest registrar state. status get
separates what Cofounder saved from what the registrar and DNS currently
report. registrant update changes only the contact fields you pass; contact
details are never shown back, even by registrant get.
renew charges the price from renewal-quote get, passed as
--expected-price in USD cents; it fails if the price has changed. When
retrying a renewal, pass the same --idempotency-key so you're only charged
once. auto-renew update turns automatic renewal on (--auto-renew) or off.