Happytails.aiFree tools. No account needed.

Celsius to fahrenheit | agent view

The same page content and links, with explicit tool capabilities. Tools marked with an API can run directly through HTTP. Other tools require the browser interface or are not connected yet.

Page guide

API reference

Direction-specific preset and reverse mode.

POST/api/v1/tools/celsius-to-fahrenheit/run

Base URL: https://happytails.ai · public API not connected

Overview

Direction-specific preset and reverse mode.

All API requests process supplied data on the server.

Request parameters

Send a JSON object. Unknown properties are rejected. Omitted options use the defaults below; enter numbers and booleans as JSON values, not quoted text.

No text input is needed. Use the settings below.

This endpoint does not accept a files array.

Options

options.valuenumber

Celsius

Default: 20.0

Success response

HTTP 200 returns tool and result. Text is in result.text; parsed JSON may also appear in result.data. Generated files are in result.files with name, mime, bytes and base64. Decode the bytes before saving. Empty file arrays and null text are valid for operations returning another result type.

Complete output schema
{
  "type": "object",
  "required": [
    "tool",
    "result"
  ],
  "properties": {
    "tool": {
      "type": "string"
    },
    "result": {
      "type": "object",
      "required": [
        "text",
        "files"
      ],
      "properties": {
        "text": {
          "type": [
            "string",
            "null"
          ]
        },
        "data": {
          "description": "Parsed JSON when the textual result is JSON."
        },
        "name": {
          "type": "string"
        },
        "mime": {
          "type": "string"
        },
        "files": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "mime",
              "bytes",
              "base64"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "mime": {
                "type": "string"
              },
              "bytes": {
                "type": "integer"
              },
              "base64": {
                "type": "string",
                "contentEncoding": "base64"
              }
            }
          }
        }
      }
    }
  }
}

Limits and failures

Limits below are enforced by this endpoint. Additional format, page, duration and model limits in the behavior notes also apply. Browser UI limits can differ from API limits.

request_bytes
8388608
input_characters
1000000
files_bytes
5242880
max_files
0
timeout_seconds
12

Invalid requests return an error object with code and message. Read HTTP statuses, retries, timeouts and concurrency. Execution is synchronous and results are returned in the response.

Complete request schema

Expand the JSON schema
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "input": {
      "type": "string",
      "maxLength": 1000000,
      "default": "",
      "description": "Plain text input. File tools use files instead unless otherwise documented."
    },
    "options": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "value": {
          "type": "number",
          "description": "Celsius",
          "default": 20.0
        }
      }
    }
  }
}

For browser automation, use the central WebMCP guidance and discover the tools actually exposed by the browser.

Request example

cURL

curl https://happytails.ai/api/v1/tools/celsius-to-fahrenheit/run \
  -H "Content-Type: application/json" \
  --data '{"options": {"value": 20.0}}'

JavaScript

const payload = {
  "options": {
    "value": 20.0
  }
};

const response = await fetch(
  "https://happytails.ai/api/v1/tools/celsius-to-fahrenheit/run",
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(payload)
  }
);
const data = await response.json();
if (!response.ok) throw new Error(data.error.message);
console.log(data.result);

Python

import json
from urllib.request import Request, urlopen

payload = json.loads('{"options": {"value": 20.0}}')

request = Request(
    "https://happytails.ai/api/v1/tools/celsius-to-fahrenheit/run",
    data=json.dumps(payload).encode(),
    headers={"Content-Type": "application/json"},
)
with urlopen(request, timeout=200) as response:
    result = json.load(response)
    print(result)

JSON

{
  "options": {
    "value": 20.0
  }
}

Replace the API origin and input values for your application.

200 OK · response structure

JSON

{
  "tool": "celsius-to-fahrenheit",
  "result": {
    "text": null,
    "files": []
  }
}

Illustrative envelope. Actual text, filename, MIME type and bytes depend on the result. See the complete output schema.

400 Bad Request

JSON

{
  "error": {
    "code": "INVALID_INPUT",
    "message": "Unknown request property. See the tool input schema."
  }
}