I made a lightweight region module that exposes an HTTP endpoint on each region server returning full texture data for any prim by UUID. Returns diffuse, normal, and specular map UUIDs per face as JSON, suitable for consumption by PHP, Python, or any HTTP client.
Does not return PBR textures but that's just a bit of extra work if you want those in the JSON array.
example:
Array
(
[prim_uuid] => ea2d31d5-be84-4238-8b63-9736b4d59619
[prim_name] => Ruth2 v4 - Mesh Avatar - Business
[region] => Fauna
[parent_group_uuid] => ea2d31d5-be84-4238-8b63-9736b4d59619
[parent_group_name] => Ruth2 v4 - Mesh Avatar - Business
[is_mesh] =>
[mesh_asset] => 00000000-0000-0000-0000-000000000000
[faces] => Array
(
[0] => Array
(
[face] => 0
[diffuse] => 7f9ee1bf-6bd6-43f8-b100-31b67b3d9eaa
[normal] => 00000000-0000-0000-0000-000000000000
[specular] => 00000000-0000-0000-0000-000000000000
[material_id] => 00000000-0000-0000-0000-000000000000
[color] =>
[fullbright] => 1
[glow] => 0
[shiny] => 0
)
...
https://codeberg.org/fionasweet/PrimTextureModule