ToolAssay

Takes a message history and a character budget and returns a shortened history t

Takes a message history and a character budget and returns a shortened history together with a full account of what it cost. Four stages run in fixed order: pin protects messages that must survive (roles listed in keep_roles, the last keep_last_n messages, and anything you marked pin), dedupe removes later near-duplicates of an earlier message of the same role using word-overlap similarity, trim shortens unprotected survivors to max_message_chars at the last sentence boundary, and drop removes…

Answeringour last check, 2026-09-24
1 of 1checks answered this week
1178 msmedian answer time
$0.005listed price per call
$0.005price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://agent.halowerk.com/v1/memory-compact

CategoryEverything else
Provider hostagent.halowerk.com
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-09-24 valid payment request 402$0.005 1178 ms

Example input (from the provider)

{
  "body": {
    "budget_chars": 400,
    "duplicate_threshold": 0.9,
    "keep_last_n": 2,
    "keep_roles": [
      "system"
    ],
    "max_message_chars": 120,
    "messages": [
      {
        "content": "You are a logistics dispatcher. Always answer with the shipment id first.",
        "role": "system"
      },
      {
        "content": "Where is shipment DE-4471? It left Hamburg on Monday morning and should reach Lyon by Thursday.",
        "role": "user"
      },
      {
        "content": "DE-4471 is in transit and cleared the Strasbourg hub at 03:10. Estimated arrival in Lyon is Thursday 14:00.",
        "role": "assistant"
      },
      {
        "content": "Where is shipment DE-4471? It left Hamburg on Monday morning and should reach Lyon by Thursday.",
        "role": "user"
      },
      {
        "content": "DE-4471 is still on schedule, no new scan since Strasbourg.",
        "role": "assistant"
      },
      {
        "content": "Good. Book the return leg for Friday.",
        "role": "user"
      }
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "budget_chars": {
              "description": "Character budget for the sum of all returned message contents.",
              "maximum": 400000,
              "minimum": 100,
              "type": "integer"
            },
            "duplicate_threshold": {
              "default": 0.9,
              "description": "Word-overlap ratio from which a later message of the same role counts as a near-duplicate of an earlier one.",
              "maximum": 1,
              "minimum": 0.5,
              "type": "number"
            },
            "keep_last_n": {
              "default": 5,
              "description": "How many of the most recent messages are protected.",
              "maximum": 50,
              "minimum": 0,
              "type": "integer"
            },
            "keep_roles": {
              "default": [
                "system"
              ],
              "description": "Roles whose messages are protected.",
              "items": {
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "type": "array"
            },
            "max_message_chars": {
              "default": 400,
              "description": "Length to which unprotected survivors are trimmed in the trim stage.",
              "maximum": 4000,
              "minimum": 80,
              "type": "integer"
            },
            "messages": {
              "description": "The conversation in order, oldest first.",
              "items": {
                "additionalProperties": false,
                "properties": {
                  "content": {
                    "description": "Message text.",
                    "maxLength": 8000,
                    "minLength": 1,
                    "type": "string"
                  },
                  "id": {
                    "description": "Optional caller-side identifier, echoed unchanged.",
                    "maxLength": 128,
                    "type": "string"
                  },
                  "pin": {
                    "default": false,
                    "description": "If true this message is protected: never trimmed, never dropped.",
                    "type": "boolean"
                  },
                  "role": {
                    "description": "Speaker role.",
                    "enum": [
                      "system",
                      "user",
                      "assistant",
                      "tool"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "role",
                  "content"
                ],
                "type": "object"
              },
              "maxItems": 200,
              "minItems": 2,
              "type": "array"
            }
          },
          "required": [
            "messages",
            "budget_chars"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST",
            "PUT",
            "PATCH"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON