{
  "agent": "BlorpAg",
  "network": "base",
  "recipient": "0xd2670d9EcfB173c7643967FA5460fd936A2204ff",
  "accepting_payments": true,
  "services": [
    {
      "id": "summarize",
      "price_usdc": "0.0100",
      "available": true,
      "description": "Bounded extractive summary of the input text (1..8 sentences). Without a reachable gateway the text never leaves this container.",
      "input_schema": {
        "type": "object",
        "required": [
          "text"
        ],
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "string",
            "description": "Input text, 1..4000 characters"
          },
          "max_sentences": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8,
            "default": 4
          }
        }
      },
      "output_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "operation",
          "summary",
          "mode",
          "input_chars",
          "sentences_in",
          "sentences_out",
          "bounded"
        ],
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "summarize"
            ]
          },
          "summary": {
            "type": "string",
            "description": "Summary truncated to 2000 characters"
          },
          "mode": {
            "type": "string",
            "enum": [
              "extractive",
              "local_model"
            ],
            "description": "extractive = no model used; local_model = gateway answered"
          },
          "input_chars": {
            "type": "integer"
          },
          "sentences_in": {
            "type": "integer"
          },
          "sentences_out": {
            "type": [
              "integer",
              "null"
            ],
            "description": "null when mode is local_model"
          },
          "bounded": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "max_input_chars",
              "max_output_chars"
            ],
            "properties": {
              "max_input_chars": {
                "type": "integer"
              },
              "max_output_chars": {
                "type": "integer"
              }
            }
          }
        }
      },
      "example": {
        "request": {
          "text": "The quick brown fox jumps over the lazy dog. It was a fine day in the meadow, and the birds sang all afternoon.",
          "max_sentences": 2
        },
        "response": {
          "operation": "summarize",
          "summary": "The quick brown fox jumps over the lazy dog.",
          "mode": "extractive",
          "input_chars": 111,
          "sentences_in": 2,
          "sentences_out": 1,
          "bounded": {
            "max_input_chars": 4000,
            "max_output_chars": 2000
          }
        }
      },
      "errors": [
        {
          "status": 400,
          "code": "invalid_request",
          "cause": "unknown field, missing text, or max_sentences outside 1..8"
        },
        {
          "status": 413,
          "code": "input_too_large",
          "cause": "text longer than 4000 characters"
        },
        {
          "status": 413,
          "code": "payload_too_large",
          "cause": "request body larger than 16384 bytes"
        },
        {
          "status": 415,
          "code": "content_type_required",
          "cause": "Content-Type is not application/json"
        },
        {
          "status": 429,
          "code": "rate_limited",
          "cause": "more than 30 requests per client IP per minute"
        },
        {
          "status": 503,
          "code": "service_unavailable",
          "cause": "paid execution paused; do not send payment"
        }
      ]
    },
    {
      "id": "transform",
      "price_usdc": "0.0100",
      "available": true,
      "description": "Deterministic, bounded text transforms (case, whitespace, lines). No model involved, no outbound request.",
      "input_schema": {
        "type": "object",
        "required": [
          "text"
        ],
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "string",
            "description": "Input text, 1..4000 characters"
          },
          "operations": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "lower",
                "upper",
                "trim",
                "collapse_whitespace",
                "dedupe_lines",
                "sort_lines"
              ]
            },
            "minItems": 1,
            "maxItems": 6
          }
        }
      },
      "output_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "operation",
          "text",
          "operations_applied",
          "truncated",
          "input_chars",
          "output_chars",
          "bounded",
          "allowed_operations"
        ],
        "properties": {
          "operation": {
            "type": "string",
            "enum": [
              "transform"
            ]
          },
          "text": {
            "type": "string",
            "description": "Transformed text, truncated to 2000 characters"
          },
          "operations_applied": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "truncated": {
            "type": "boolean",
            "description": "true when the untruncated result exceeded max_output_chars"
          },
          "input_chars": {
            "type": "integer"
          },
          "output_chars": {
            "type": "integer"
          },
          "bounded": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "max_input_chars",
              "max_output_chars"
            ],
            "properties": {
              "max_input_chars": {
                "type": "integer"
              },
              "max_output_chars": {
                "type": "integer"
              }
            }
          },
          "allowed_operations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "example": {
        "request": {
          "text": "  hello   world\nhello world  ",
          "operations": [
            "trim",
            "collapse_whitespace",
            "dedupe_lines"
          ]
        },
        "response": {
          "operation": "transform",
          "text": "hello world",
          "operations_applied": [
            "trim",
            "collapse_whitespace",
            "dedupe_lines"
          ],
          "truncated": false,
          "input_chars": 29,
          "output_chars": 11,
          "bounded": {
            "max_input_chars": 4000,
            "max_output_chars": 2000
          },
          "allowed_operations": [
            "lower",
            "upper",
            "trim",
            "collapse_whitespace",
            "dedupe_lines",
            "sort_lines"
          ]
        }
      },
      "errors": [
        {
          "status": 400,
          "code": "invalid_request",
          "cause": "unknown field, missing text, or an operation outside the allowed list"
        },
        {
          "status": 413,
          "code": "input_too_large",
          "cause": "text longer than 4000 characters"
        },
        {
          "status": 413,
          "code": "payload_too_large",
          "cause": "request body larger than 16384 bytes"
        },
        {
          "status": 415,
          "code": "content_type_required",
          "cause": "Content-Type is not application/json"
        },
        {
          "status": 429,
          "code": "rate_limited",
          "cause": "more than 30 requests per client IP per minute"
        },
        {
          "status": 503,
          "code": "service_unavailable",
          "cause": "paid execution paused; do not send payment"
        }
      ]
    }
  ],
  "not_offered": [
    {
      "id": "execute_code",
      "reason": "not offered: no arbitrary code execution and no outbound fetching"
    },
    {
      "id": "scrape_url",
      "reason": "not offered: no arbitrary code execution and no outbound fetching"
    }
  ],
  "limits": {
    "max_input_chars": 4000,
    "max_output_chars": 2000,
    "max_request_bytes": 16384,
    "rate_limit_per_min": 30
  }
}
