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

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 | moment | 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

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. Changed1 schema field changed
    • changedInput schema / properties / entity_type / description
      Previous value: -"event | expense | place | person | inventory (inventory_item maps to inventory) | …"New value: +"event | moment | expense | place | person | inventory (inventory_item maps to inventory) | …"
  2. 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"
      +}
  3. 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"
      +}
  4. 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."
  5. 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"
      +]
  6. 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"
      +}
  7. 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"
      +]
  8. Added

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare the safe mutation profile, but the description adds substantive behavior: WebP re-encoding with original_preserved/metadata_stripped semantics, non-persistence of temporary ChatGPT URLs, confirmation-before-return, $0.15 cost, and API-key requirement. No contradictions with annotations.

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, input modes, and return fields, then moves into routing recipes. Dense but mostly purposeful; a few details such as the parenthetical re-encoding note could be tightened.

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 object and an output schema, the description covers input modes, storage behavior, attachment routing, cost/auth, and the return field names. It leaves some parameter-level ambiguity (role vs asset_type) but the schema and output schema fill most remaining gaps.

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?

With 73% schema coverage, the schema carries much of the burden, but the description adds routing semantics for entity_type/entity_id/role that the schema lacks. Remaining gaps include the role-vs-asset_type overlap, parent_asset_id, and filename/metadata usage.

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

Purpose4/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 accepted input forms and return fields. It clearly differs from attach_asset by noting the alternative flow, but never distinguishes it from the close sibling upload_photo, leaving one ambiguity.

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 recipes for inventory item photos and receipt photos, and names the upload-then-attach_asset alternative. It stops short of stating when not to use this tool or when upload_photo is preferable.

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.