math icon indicating copy to clipboard operation
math copied to clipboard

Use the Wolfram Alpha API

Open langningchen opened this issue 7 months ago • 2 comments

Microsoft Math Solver will be retired on July 7, 2025 ^1 , but the Math Assistant in OneNote is still alive. Using the new OneNote Math Assistant will make this project alive. According to some basic detection, the new API uses the domain edumathsolver.microsoft.com, but further research is needed to understand the details of the API and whether it has authentication.

langningchen avatar Jun 15 '25 11:06 langningchen

The API uses /api/MathSolver/PostSteps, but it needs authentication using the HTTP header Authorization

The Request Body is like

{
  "solverSettings": {
    "numberField": "Real",
    "angleMeasurement": "Radians",
    "inputFormatType": "MathML", // Linear or MathML
    "outputFormatType": "MathML", // Latex or MathML
    "localizationType": "DecimalPointAndListComma",
    "mathMLPrefix": "mml"
  },
  "inputExpression": "<math xmlns=\"http://www.w3.org/1998/Math/MathML\"><mrow><mi>solve</mi><mrow><mo fence=\"true\">(</mo><mrow><msup><mrow><mi mathvariant=\"italic\">x</mi></mrow><mrow><mn>2</mn></mrow></msup><mo>+</mo><mn>3</mn><mi mathvariant=\"italic\">x</mi><mo>+</mo><mn>2</mn><mo>=</mo><mn>0</mn><mo>,</mo><mi mathvariant=\"italic\">x</mi></mrow><mo fence=\"true\">)</mo></mrow></mrow></math>",
  "templateId": "Trace.Solve.Monic.Quad.Eq"
}

The Response Body is like

{
  "stepsType": "Classic",
  "classicSteps": [
    {
      "expressions": [
        "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">a</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant=\"italic\">b</mml:mi><mml:mo>=</mml:mo><mml:mn>3</mml:mn></mml:math>",
        "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">a</mml:mi><mml:mi mathvariant=\"italic\">b</mml:mi><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:math>"
      ],
      "strings": [
        {
          "paramValues": [
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:msup><mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mn>3</mml:mn><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:math>",
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:msup><mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mrow><mml:mo fence=\"true\">(</mml:mo><mml:mrow><mml:mi mathvariant=\"italic\">a</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant=\"italic\">b</mml:mi></mml:mrow><mml:mo fence=\"true\">)</mml:mo></mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant=\"italic\">a</mml:mi><mml:mi mathvariant=\"italic\">b</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo fence=\"true\">(</mml:mo><mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant=\"italic\">a</mml:mi></mml:mrow><mml:mo fence=\"true\">)</mml:mo></mml:mrow><mml:mrow><mml:mo fence=\"true\">(</mml:mo><mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant=\"italic\">b</mml:mi></mml:mrow><mml:mo fence=\"true\">)</mml:mo></mml:mrow></mml:math>"
          ],
          "textName": "To_Solve_The_Equation_Factor_Using",
          "textValue": "To solve the equation, factor {0} using formula {1}."
        },
        {
          "paramValues": [
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">a</mml:mi></mml:math>",
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">b</mml:mi></mml:math>"
          ],
          "textName": "To_Determine_And_Set_Up_A_System",
          "textValue": "To find {0} and {1}, set up a system to be solved."
        }
      ],
      "hints": []
    },
    {
      "expressions": [
        "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">a</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:math>",
        "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">b</mml:mi><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:math>"
      ],
      "strings": [
        {
          "paramValues": [
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">a</mml:mi><mml:mi mathvariant=\"italic\">b</mml:mi></mml:math>",
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">a</mml:mi></mml:math>",
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">b</mml:mi></mml:math>"
          ],
          "textName": "Since_Product_Is_Positive",
          "textValue": "Since {0} is positive, {1} and {2} have the same sign."
        },
        {
          "paramValues": [
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">a</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant=\"italic\">b</mml:mi></mml:math>",
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">a</mml:mi></mml:math>",
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">b</mml:mi></mml:math>"
          ],
          "textName": "Since_Sum_Is_Positive_1",
          "textValue": "Since {0} is positive, {1} and {2} are both positive."
        },
        {
          "paramValues": [],
          "textName": "The_Only_Such_Pair_Is_The_System_Solution",
          "textValue": "The only such pair is the system solution."
        }
      ],
      "hints": []
    },
    {
      "expressions": [
        "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mrow><mml:mo fence=\"true\">(</mml:mo><mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo fence=\"true\">)</mml:mo></mml:mrow><mml:mrow><mml:mo fence=\"true\">(</mml:mo><mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mo fence=\"true\">)</mml:mo></mml:mrow></mml:math>"
      ],
      "strings": [
        {
          "paramValues": [
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mrow><mml:mo fence=\"true\">(</mml:mo><mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant=\"italic\">a</mml:mi></mml:mrow><mml:mo fence=\"true\">)</mml:mo></mml:mrow><mml:mrow><mml:mo fence=\"true\">(</mml:mo><mml:mrow><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant=\"italic\">b</mml:mi></mml:mrow><mml:mo fence=\"true\">)</mml:mo></mml:mrow></mml:math>"
          ],
          "textName": "Rewrite_Factored_Expression",
          "textValue": "Rewrite factored expression {0} using the obtained values."
        }
      ],
      "hints": []
    },
    {
      "expressions": [
        "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:math>",
        "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:math>"
      ],
      "strings": [
        {
          "paramValues": [
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>",
            "<mml:math xmlns:mml=\"http://www.w3.org/1998/Math/MathML\"><mml:mi mathvariant=\"italic\">x</mml:mi><mml:mo>+</mml:mo><mml:mn>2</mml:mn><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math>"
          ],
          "textName": "To_Find_Equation_Solutions",
          "textValue": "To find equation solutions, solve {0} and {1}."
        }
      ],
      "hints": []
    }
  ],
  "visualSteps": [],
  "responseStatus": "Success",
  "errors": []
}

langningchen avatar Jun 15 '25 11:06 langningchen

Wolfram Alpha API is great! https://www.wolframalpha.com/input

langningchen avatar Sep 05 '25 14:09 langningchen