{"openapi":"3.1.0","info":{"title":"Matrix Algebra","version":"0.1.0","description":"Dense linear algebra — multiply and transpose matrices, compute determinants, invert square matrices, and solve linear systems A·x = b via Gaussian elimination. Singular matrices return honest negative results rather than errors.","x-guidance":"Dense linear algebra — multiply and transpose matrices, compute determinants, invert square matrices, and solve linear systems A·x = b via Gaussian elimination. Singular matrices return honest negative results rather than errors. Each operation is an HTTP POST to its /v1/<operation> path with a JSON request body (see each operation's requestBody schema) and returns a JSON response. Endpoints are paid per successful call via x402 or MPP (USDC on Base); an unpaid request returns 402 with payment metadata in the WWW-Authenticate header.","contact":{"email":"hello@openverbs.com"}},"x-discovery":{"ownershipProofs":["0xb1401a71756f51464a9962db12f1eb3e9522490cd20010b06d00cf7b7770acfd5f79721f9dfdf2643f8cecd29af3bde9ec133941a386042b32d9886053a70de61b","0xc1c1f11793e18a00fcb7072421f26e89fb75b6aa517fa84370564991f4b10efa024f6f57e4e67eefd20cf46cc01fc5a62d793fa8fbcda04f26c946a3433d73f91b","0x676b474af0ef9ed4809b5d12d2e789b36e52d56215b21f601d71f76620e36ec630347116a7b2b349a3c3681e5db0fbfa76c4169a676b6d6f27864d0e5017284a1c","0xc2ab96522515ed9e9bc4f1a241b774bd48df42e951ddbf7f6aa8fc76f5a96a20421703e1ec402ce7eb1e4eabea3b6e4e4129cf39d56ea91cf4fcf38561fc94fc1c"]},"servers":[{"url":"https://matrix.openverbs.com"}],"paths":{"/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Healthy","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"version":{"type":"string"}}}}}}}}},"/v1/multiply":{"post":{"summary":"Multiply matrices","description":"Multiply two matrices A·B. The inner dimensions must agree (columns of A equal rows of B); a mismatch or a ragged/empty matrix is a clean 400. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["matrix multiplication","multiply matrices","linear algebra multiply","matrix product api","compute a dot b"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"array","minItems":1,"items":{"type":"array","minItems":1,"items":{"type":"number"}},"description":"Left matrix (m×n)."},"b":{"type":"array","minItems":1,"items":{"type":"array","minItems":1,"items":{"type":"number"}},"description":"Right matrix (n×p)."}},"required":["a","b"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ result, rows, cols }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ result, rows, cols }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Multiply two matrices A·B. The inner dimensions must agree (columns of A equal rows of B); a mismatch or a ragged/empty matrix is a clean 400.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Multiply two matrices A·B. The inner dimensions must agree (columns of A equal rows of B); a mismatch or a ragged/empty matrix is a clean 400.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Multiply two matrices A·B. The inner dimensions must agree (columns of A equal rows of B); a mismatch or a ragged/empty matrix is a clean 400.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/transpose":{"post":{"summary":"Transpose a matrix","description":"Transpose a matrix, swapping rows and columns. A ragged/empty matrix is a clean 400. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["transpose matrix","swap matrix rows columns","matrix transpose api","flip matrix axes","convert rows to columns"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"matrix":{"type":"array","minItems":1,"items":{"type":"array","minItems":1,"items":{"type":"number"}},"description":"Matrix (m×n)."}},"required":["matrix"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ result, rows, cols }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ result, rows, cols }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Transpose a matrix, swapping rows and columns. A ragged/empty matrix is a clean 400.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Transpose a matrix, swapping rows and columns. A ragged/empty matrix is a clean 400.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Transpose a matrix, swapping rows and columns. A ragged/empty matrix is a clean 400.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/determinant":{"post":{"summary":"Determinant","description":"Compute the determinant of a square matrix via Gaussian elimination with partial pivoting. A non-square, ragged or empty matrix is a clean 400; a singular matrix simply returns 0. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["matrix determinant","compute determinant","square matrix determinant","gaussian elimination determinant","determinant api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"matrix":{"type":"array","minItems":1,"items":{"type":"array","minItems":1,"items":{"type":"number"}},"description":"Square matrix (n×n)."}},"required":["matrix"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ determinant }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ determinant }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Compute the determinant of a square matrix via Gaussian elimination with partial pivoting. A non-square, ragged or empty matrix is a clean 400; a singular matrix simply returns 0.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Compute the determinant of a square matrix via Gaussian elimination with partial pivoting. A non-square, ragged or empty matrix is a clean 400; a singular matrix simply returns 0.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Compute the determinant of a square matrix via Gaussian elimination with partial pivoting. A non-square, ragged or empty matrix is a clean 400; a singular matrix simply returns 0.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/inverse":{"post":{"summary":"Invert a matrix","description":"Invert a square matrix via Gauss-Jordan elimination. A non-square, ragged or empty matrix is a clean 400. A singular (non-invertible) matrix is NOT an error — it returns a successful { invertible:false, inverse:null }. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["matrix inverse","invert matrix","inverse matrix api","gauss jordan inverse","check matrix invertible","solve inverse matrix"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"matrix":{"type":"array","minItems":1,"items":{"type":"array","minItems":1,"items":{"type":"number"}},"description":"Square matrix (n×n)."}},"required":["matrix"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ invertible, inverse, determinant }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ invertible, inverse, determinant }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Invert a square matrix via Gauss-Jordan elimination. A non-square, ragged or empty matrix is a clean 400. A singular (non-invertible) matrix is NOT an error — it returns a successful { invertible:false, inverse:null }.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Invert a square matrix via Gauss-Jordan elimination. A non-square, ragged or empty matrix is a clean 400. A singular (non-invertible) matrix is NOT an error — it returns a successful { invertible:false, inverse:null }.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Invert a square matrix via Gauss-Jordan elimination. A non-square, ragged or empty matrix is a clean 400. A singular (non-invertible) matrix is NOT an error — it returns a successful { invertible:false, inverse:null }.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/solve":{"post":{"summary":"Solve a linear system","description":"Solve the linear system A·x = b for a square coefficient matrix A and vector b via Gaussian elimination with partial pivoting. A non-square A or a b of the wrong length is a clean 400. A singular system is NOT an error — it returns a successful { solvable:false, solution:null }. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["solve linear system","linear equation solver","matrix solve ax b","gaussian elimination solver","solve coefficients vector","linear algebra system"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"array","minItems":1,"items":{"type":"array","minItems":1,"items":{"type":"number"}},"description":"Square coefficient matrix (n×n)."},"b":{"type":"array","minItems":1,"items":{"type":"number"},"description":"Right-hand-side vector (length n)."}},"required":["a","b"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ solvable, solution }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ solvable, solution }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Solve the linear system A·x = b for a square coefficient matrix A and vector b via Gaussian elimination with partial pivoting. A non-square A or a b of the wrong length is a clean 400. A singular system is NOT an error — it returns a successful { solvable:false, solution:null }.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Solve the linear system A·x = b for a square coefficient matrix A and vector b via Gaussian elimination with partial pivoting. A non-square A or a b of the wrong length is a clean 400. A singular system is NOT an error — it returns a successful { solvable:false, solution:null }.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Solve the linear system A·x = b for a square coefficient matrix A and vector b via Gaussian elimination with partial pivoting. A non-square A or a b of the wrong length is a clean 400. A singular system is NOT an error — it returns a successful { solvable:false, solution:null }.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}}},"x-service-info":{"categories":["compute"],"docs":{"homepage":"https://matrix.openverbs.com","apiReference":"https://matrix.openverbs.com/openapi.json"}}}