Hostinger OpenClaw VPS

create_data_collection

EVERY repeating content section (services, features, testimonials, FAQ, pricing, team …) goes in a collection — NOT optional. Create them (all plans) BEFORE deploying: editable content the site embeds with declarative markup (server-prerendered for SEO, kept live by the hosted runtime). Each section of ANY site (services, features, testimonials, FAQ, pricing, team …) belongs in a collection so the owner can edit content from their dashboard without touching code; hardcoding that content into the HTML is a broken build, even on a simple landing page. CREATE THEM ALL IN ONE CALL: pass collections: [...] (up to 16) — plan the site's whole content model, then one call per site, not one per section. Each entry picks the preset matching its content (it seeds the field schema) and optionally rows to fill it; embed each returned key with the declarative markup. Unassigned collections serve [] — assign with assign_to_project after deploy. Name each "<Business Name> — <Purpose>".

Remote dplooyinc/hosting

Remote (network-hosted)

Other tools also called create_data_collection? See providers with this name

Input Schema


            {
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Single-collection shape (legacy): the collection name — or use collections[]"
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      },
      "description": "Initial rows as objects keyed by field id, e.g. [{name: 'Lawn care', price: 49}]. Image cells take { mediaId, path } from upload_media, never a URL string."
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "label",
          "type"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Machine name (lowercase, a-z0-9_) — becomes item.<id> in customer code"
          },
          "type": {
            "enum": [
              "text",
              "longtext",
              "number",
              "image",
              "link",
              "date",
              "boolean"
            ],
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          }
        }
      },
      "description": "Custom field schema — usually omit and let the preset seed it"
    },
    "preset": {
      "enum": [
        "services",
        "team",
        "testimonials",
        "faq",
        "gallery",
        "menu",
        "events",
        "features",
        "steps",
        "pricing",
        "logos",
        "awards",
        "stats",
        "values",
        "timeline",
        "posts",
        "locations",
        "hours",
        "jobs",
        "blank"
      ],
      "type": "string",
      "description": "Single-collection shape (legacy): the preset — or use collections[]"
    },
    "collections": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "preset"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Professional name including the business, e.g. \"GreenScape Landscaping — Services\" (max 50 chars)"
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            },
            "description": "Initial rows as objects keyed by field id, e.g. [{name: 'Lawn care', price: 49}]. Image cells take { mediaId, path } from upload_media, never a URL string."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "label",
                "type"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Machine name (lowercase, a-z0-9_) — becomes item.<id> in customer code"
                },
                "type": {
                  "enum": [
                    "text",
                    "longtext",
                    "number",
                    "image",
                    "link",
                    "date",
                    "boolean"
                  ],
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "required": {
                  "type": "boolean"
                }
              }
            },
            "description": "Custom field schema — usually omit and let the preset seed it"
          },
          "preset": {
            "enum": [
              "services",
              "team",
              "testimonials",
              "faq",
              "gallery",
              "menu",
              "events",
              "features",
              "steps",
              "pricing",
              "logos",
              "awards",
              "stats",
              "values",
              "timeline",
              "posts",
              "locations",
              "hours",
              "jobs",
              "blank"
            ],
            "type": "string",
            "description": "Seeds the field schema. Use 'blank' only when no preset fits, then pass custom fields."
          }
        }
      },
      "description": "PREFERRED: every collection the site needs, in one call (max 16). Results are reported per item — a failed item never blocks the others."
    }
  }
}