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

MCPCLIAPI
domains_discovercofounder domains discover --query <keyword>POST /cofounder-cli/v1/company/domains/discover
domains_checkcofounder domains check --domain-name <domain>POST /cofounder-cli/v1/company/domains/check
domains_contact_schema_getcofounder domains contact-schema get --domain-name <domain>GET /cofounder-cli/v1/company/domains/contact-schema
domains_purchasecofounder domains purchase --domain-name <domain> --expected-price <cents> --auto-renewPOST /cofounder-cli/v1/company/domains/purchases
domains_orders_getcofounder 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> --wait

Import 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.

MCPCLIAPI
domains_dns_records_listcofounder domains dns-records listGET /cofounder-cli/v1/company/domains/dns-records
domains_dns_records_getcofounder domains dns-records get --record-id <id>GET /cofounder-cli/v1/company/domains/dns-records/{record_id}
domains_dns_records_createcofounder domains dns-records create --type TXT --name @ --value <value> --ttl 300POST /cofounder-cli/v1/company/domains/dns-records
domains_dns_records_updatecofounder domains dns-records update --record-id <id> --value <value>PATCH /cofounder-cli/v1/company/domains/dns-records/{record_id}
domains_dns_records_deletecofounder domains dns-records delete --record-id <id>DELETE /cofounder-cli/v1/company/domains/dns-records/{record_id}
domains_dns_records_applycofounder domains dns-records apply --records <json> --dry-runPOST /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

MCPCLIAPI
domains_dns_records_instructions_getcofounder domains dns-records instructions get --format applyGET /cofounder-cli/v1/company/domains/dns-records/instructions
domains_dns_records_auditcofounder domains dns-records auditGET /cofounder-cli/v1/company/domains/dns-records/audit
domains_dns_records_migration_getcofounder domains dns-records migration getGET /cofounder-cli/v1/company/domains/dns-records/migration
domains_nameservers_updatecofounder 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

MCPCLIAPI
domains_sending_domain_ensurecofounder domains sending-domain ensurePOST /cofounder-cli/v1/company/domains/sending-domain
domains_shared_sending_domain_ensurecofounder domains shared-sending-domain ensurePOST /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

MCPCLIAPI
domains_getcofounder domains getGET /cofounder-cli/v1/company/domains/detail
domains_status_getcofounder domains status getGET /cofounder-cli/v1/company/domains/status
domains_registrant_getcofounder domains registrant getGET /cofounder-cli/v1/company/domains/registrant
domains_registrant_updatecofounder domains registrant update --contact-information <json>PATCH /cofounder-cli/v1/company/domains/registrant
domains_renewal_quote_getcofounder domains renewal-quote get --years 1POST /cofounder-cli/v1/company/domains/renewal-quote
domains_renewcofounder domains renew --expected-price <cents> --years 1POST /cofounder-cli/v1/company/domains/renewals
domains_auto_renew_updatecofounder domains auto-renew update --no-auto-renewPATCH /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.