Skip to main content
Glama

Dayze — Life Context

Upload Asset

upload_asset

Upload image bytes to Dayze storage (normally re-encoded as WebP; original_preserved and metadata_stripped describe the saved bytes). Accepts image_base64, url, or ChatGPT file object image ({download_url, file_id}). Returns asset_id, content_type, byte_size, view_url after bytes are confirmed. Temporary ChatGPT download URLs are never stored. For inventory item photos: pass entity_type=inventory, entity_id=inventory_id, role=photo. For receipt photos: entity_type=expense|event, role=receipt. Or upload then attach_asset. ($0.15; API key required)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoRemote image URL to fetch and store.
roleNooriginal | cover | thumbnail | …
imageNoChatGPT chat attachment. Prefer this for images from the conversation; API clients may still use image_base64 or url.
filenameNo
metadataNoFree-form metadata, merged into the stored metadata (metadata.source becomes the asset source).
entity_idNo
mime_typeNoimage/jpeg, image/png, image/webp, … Alias: content_type.
asset_typeNophoto | receipt | certificate | document | thumbnail | …
request_idNoClient idempotency key (retries return original result).
descriptionNo
entity_typeNoevent | expense | place | person | inventory (inventory_item maps to inventory) | …
content_typeNoAlias for mime_type.
image_base64NoBase64 image bytes (optional data: URL prefix).
idempotency_keyNoAlias for request_id.
parent_asset_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
assetNo
accountNoThe Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.
messageNo
asset_idNo
view_urlNo
byte_sizeNo
provenanceNoWhich connector wrote the record and which connected Dayze account received it.
content_typeNo
metadata_strippedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / account
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.",
      +  "properties": {
      +    "display_name": {
      +      "description": "Account display name.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "handle": {
      +      "description": "Account handle, e.g. @goh.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "description": "How to disclose the account to the user.",
      +      "type": "string"
      +    },
      +    "qa_fixture": {
      +      "description": "True for a known QA test account: its records are fixture data, not a real life.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "handle",
      +    "display_name",
      +    "qa_fixture",
      +    "note"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Which connector wrote the record and which connected Dayze account received it.",
      +  "properties": {
      +    "account": {
      +      "additionalProperties": false,
      +      "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.",
      +      "properties": {
      +        "display_name": {
      +          "description": "Account display name.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "handle": {
      +          "description": "Account handle, e.g. @goh.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "note": {
      +          "description": "How to disclose the account to the user.",
      +          "type": "string"
      +        },
      +        "qa_fixture": {
      +          "description": "True for a known QA test account: its records are fixture data, not a real life.",
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "handle",
      +        "display_name",
      +        "qa_fixture",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    "channel": {
      +      "description": "Always mcp_connector.",
      +      "type": "string"
      +    },
      +    "connector": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "kind": {
      +          "description": "oauth or api_key.",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "The connected app or API-key label shown to the account owner.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "name"
      +      ],
      +      "type": "object"
      +    },
      +    "source": {
      +      "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "source",
      +    "channel",
      +    "connector",
      +    "account"
      +  ],
      +  "type": "object"
      +}
  2. Changed6 schema fields changed
    • changedInput schema / anyOf
      Previous value: -[
      -  {
      -    "required": [
      -      "image_base64"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "url"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "required": [
      +      "image_base64"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "url"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "image"
      +    ]
      +  }
      +]
    • changedInput schema / properties / entity_type / description
      Previous value: -"event | place | person | inventory (inventory_item maps to inventory) | …"New value: +"event | expense | place | person | inventory (inventory_item maps to inventory) | …"
    • addedInput schema / properties / image
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "ChatGPT chat attachment. Prefer this for images from the conversation; API clients may still use image_base64 or url.",
      +  "properties": {
      +    "download_url": {
      +      "description": "Temporary HTTPS URL ChatGPT provides for this file.",
      +      "type": "string"
      +    },
      +    "file_id": {
      +      "description": "ChatGPT file id (not a Dayze asset_id).",
      +      "type": "string"
      +    },
      +    "file_name": {
      +      "description": "Optional original filename from ChatGPT.",
      +      "type": "string"
      +    },
      +    "mime_type": {
      +      "description": "Optional MIME type from ChatGPT.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "download_url",
      +    "file_id"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / byte_size
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / content_type
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / view_url
      Added value: +{
      +  "type": "string"
      +}
  3. Changed8 schema fields changed
    • changedInput schema / additionalProperties
      Previous value: -trueNew value: +false
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "image_base64"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "url"
      +    ]
      +  }
      +]
    • addedInput schema / properties / content_type
      Added value: +{
      +  "description": "Alias for mime_type.",
      +  "type": "string"
      +}
    • changedInput schema / properties / entity_type / description
      Previous value: -"inventory_item maps to inventory"New value: +"event | place | person | inventory (inventory_item maps to inventory) | …"
    • addedInput schema / properties / image_base64 / description
      Added value: +"Base64 image bytes (optional data: URL prefix)."
    • addedInput schema / properties / metadata / description
      Added value: +"Free-form metadata, merged into the stored metadata (metadata.source becomes the asset source)."
    • addedInput schema / properties / mime_type / description
      Added value: +"image/jpeg, image/png, image/webp, … Alias: content_type."
    • addedInput schema / properties / url / description
      Added value: +"Remote image URL to fetch and store."
  4. Changed1 schema field changed
    • changedInput schema / properties / role / enum
      Previous value: -[
      -  "original",
      -  "processed",
      -  "thumbnail",
      -  "cover",
      -  "document",
      -  "receipt",
      -  "certificate",
      -  "other"
      -]New value: +[
      +  "original",
      +  "processed",
      +  "thumbnail",
      +  "cover",
      +  "document",
      +  "receipt",
      +  "certificate",
      +  "photo",
      +  "other"
      +]
  5. Changed2 schema fields changed
    • addedInput schema / properties / idempotency_key
      Added value: +{
      +  "description": "Alias for request_id.",
      +  "type": "string"
      +}
    • addedInput schema / properties / request_id
      Added value: +{
      +  "description": "Client idempotency key (retries return original result).",
      +  "type": "string"
      +}
  6. Changed2 schema fields changed
    • changedInput schema / properties / role / description
      Previous value: -"original | processed | thumbnail | cover | …"New value: +"original | cover | thumbnail | …"
    • addedInput schema / properties / role / enum
      Added value: +[
      +  "original",
      +  "processed",
      +  "thumbnail",
      +  "cover",
      +  "document",
      +  "receipt",
      +  "certificate",
      +  "other"
      +]
  7. Added

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare non-readonly/non-destructive/non-open-world. The description goes well beyond that, disclosing the re-encoding to WebP, the original_preserved and metadata_stripped semantics, that temporary ChatGPT download URLs are never stored, confirmation of bytes before return, plus cost ($0.15) and API key requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and packs input forms, return values, storage caveats, and entity recipes into a compact block with little waste. It is dense to the point of feeling crammed, which keeps it just below a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter tool with a nested input object and an output schema, the description covers the essential concerns: accepted inputs, return fields, storage behavior, cost, auth, and entity-attachment recipes. Minor gaps remain around idempotency and secondary params, which the schema covers anyway.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 73% (baseline 3), and the description adds genuine meaning: it explains the three alternative input paths (image_base64, url, or the ChatGPT image object with download_url/file_id) and gives concrete entity_type/entity_id/role values for real scenarios. It does not document request_id/idempotency or parent_asset_id, so not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (upload image bytes to Dayze storage) and describes the storage transform (normally re-encoded as WebP). It clearly sits apart from siblings like attach_asset (which it names) and update_asset, so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use recipes (inventory item photos: entity_type=inventory, entity_id, role=photo; receipt photos: entity_type=expense|event, role=receipt) and names the follow-on alternative attach_asset. It lacks any exclusions and does not differentiate itself from the close sibling upload_photo, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.