Skip to main content

VM3: Tools API (FastAPI)

The Tools API is a lightweight Python service handling mathematical calculations, chemical calculations, conversions, and geo-IP lookup.

Endpoints Specification​

1. Arithmetic Calculator​

  • Route: POST /api/tools/calculate
  • Request: { "expression": "2+2*5" }
  • Response: { "result": 12.0 }

2. Equation Solver (Photomath with LaTeX)​

  • Route: POST /api/tools/formula
  • Request: { "equation": "x^2 + 5 = 20", "solve_for": "x" }
  • Response: Returns LaTeX inputs, numeric solutions, and chronological solution steps.

3. Graph Coordinate Generator​

  • Route: POST /api/tools/graph
  • Request: { "function": "x^2", "range": {"min": -10, "max": 10, "step": 0.5} }
  • Response: An array of {x, y} coordinates ready for Recharts.

4. Periodic Table Element Query​

  • Route: GET /api/tools/periodic/{symbol}
  • Response: Detailed element properties (atomic mass, atomic number, chemical category).

5. Molar Mass Calculator​

  • Route: POST /api/tools/molar-mass
  • Request: { "formula": "H2SO4" }
  • Response: Computes molecular weight with element counts and contribution breakdown. Supports parenthesis like Ca(OH)2.

6. Unit Converter​

  • Route: POST /api/tools/unit-convert
  • Request: { "value": 100, "from": "km", "to": "miles" }
  • Response: Standardized numeric output using the pint registry.

7. Weather​

  • Route: GET /api/tools/weather?lat=6.9271&lon=79.8612
  • Response: Weather conditions using Open-Meteo as primary and OpenWeatherMap as fallback, cached for 10 minutes.

8. Currency Converter​

  • Route: GET /api/tools/currency?from=USD&to=LKR&amount=1
  • Response: Convert currencies, cached for 1 hour.

9. Dictionary​

  • Route: GET /api/tools/dictionary?word=valley
  • Response: Returns definition lists proxying dictionaryapi.dev.

10. GeoIP Lookup​

  • Route: GET /api/tools/ip?ip=8.8.8.8 (or client IP)
  • Response: Returns location, ISP, and coordinates using ipinfo.io or ip-api.com.

11. QR Code Generator​

  • Route: POST /api/tools/qr
  • Request: { "text": "url" }
  • Response: Base64 encoded PNG QR URI.

12. Color Converter​

  • Route: POST /api/tools/color
  • Request: { "color": "#ff5733" }
  • Response: Formatted RGB, HSL, complementary, and analogous palettes.