# taivo EU hosting for sites built by AI assistants. The MCP endpoint is https://taivo.eu/mcp (streamable HTTP, OAuth: an account is created during the connect flow). Tools (58): account, list_sites, create_site, site, put_files, list_files, get_file, delete_files, preview, approve, publish, rollback, rollback_to, site_versions, site_usage, site_folders, sftp, delete_site, add_domain, domain_overview, set_custom_domain, set_domain_site, use_our_dns, dns_status, dns_records, set_dns_record, delete_dns_record, add_backend, set_backend_profile, backend, db_credentials, db_restore_points, db_restore, remove_database, plan_change, choose_plan, upgrade, job_status, backups, add_mail_domain, mail_domains, remove_mail_domain, add_mailbox, list_mailboxes, set_mailbox_password, delete_mailbox, add_alias, add_forward, list_aliases, remove_alias, remove_forward, mailbox_backups, mailbox_restore, set_catch_all, mail_settings, edit_mailbox, move_alias, edit_forward. Flow: create_site -> put_files (index.html at the root) -> preview -> show the person the preview URL -> approve. That is the normal path; publish goes straight live when they ask for it. The site is at https://.taivo.eu. Plain HTML/CSS/JS; there is no build step. Add a Supabase backend with add_backend (profile 'slim' by default - Postgres, REST, auth, storage; 'full' adds Studio, Realtime, edge functions and the pooler; that profile comes with Site + Database Pro). Each database runs inside its own share of the machine: 1 GB memory and 1 core on Site + Database, 2.5 GB and 2 cores on Pro, 100 Postgres connections either way. Over the share it is slowed, never killed. Use supabase-js with the returned url and anon key; there is no direct Postgres port for customers, by design. SFTP (any paid plan, tool `sftp`): the site's own hostname on port 2222, straight to the machine holding the site. Two folders. draft is the site - uploading changes nothing until publish, so versions and rollback keep working. files is served at /files/... the moment something is uploaded, with no publish and no version - that is where a PDF or a download belongs. Plans: plan_change(slug, plan) says what a switch would mean before it happens - what the site keeps, what gets smaller, what stands in the way - and choose_plan(slug, plan) does it. Nothing is ever deleted by a switch; only remove_database deletes data, and it asks first.