# JVM Method Descriptor Parameter and Local-Variable Slot Layout Reconstructor

> JVM Method Descriptor Parameter and Local-Variable Slot Layout Reconstructor is a paid API for AI agents from detect.halowerk.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-11-04).

Parses a JVM method descriptor string and returns the full parameter breakdown, return type, and initial local-variable slot assignments for use in classfile emission.

## Facts

- Endpoint: POST https://detect.halowerk.com/v1/F-TD2000-DOCUMENTS-06/jvms25-method-descriptor-parameter-local-slot-layout?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-11-04
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/jvm-method-descriptor-parameter-and-local-variable-slot-layout-db082ed7
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_U42tssd5GDTTj0t7R1kNw

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability jvm-method-descriptor-parameter-and-local-variable-slot-layout-db082ed7 -d '<json body>'
```

Example prompt: Parse the JVM method descriptor '(ILjava/lang/String;D)V' for a non-static method and give me the full parameter breakdown with their types, slot counts, local slot indices, and the initial local variable slot count I need for my classfile emitter.

## When to prefer this

Use this endpoint when building JVM bytecode emitters, compilers, or bytecode rewriters that need to programmatically determine local variable slot layout from a raw method descriptor string. It is especially useful when you need the exact local_slot index for each parameter (accounting for long/double double-slot types and the implicit 'this' reference in instance methods) without implementing the JVM spec parsing logic yourself.

## Known failure modes

- Malformed or syntactically invalid JVM descriptor string returns an error
- Descriptor exceeding 1024 characters is rejected by schema validation
- Missing required fields (descriptor or is_static) causes a 400-level error
- Descriptors with more than 255 parameters may be rejected
- Network or service unavailability returns a non-200 response

## How this service works

Reconstruct JVM parameter and return descriptors and initial local-variable slots for a classfile emitter.

## Output

Returns a structured claim object containing: an array of parameters each with descriptor string, resolved type name, array dimensions, slot count (1 or 2), and local_slot index; a return_type object with the same fields minus local_slot; total parameter_slots count; and initial_local_slots count (accounting for implicit 'this' on instance methods).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "artifact": {
   "type": "object",
   "required": [
    "jvmDescriptor"
   ],
   "properties": {
    "jvmDescriptor": {
     "type": "object",
     "required": [
      "data",
      "claim"
     ],
     "properties": {
      "data": {
       "type": "object",
       "required": [
        "descriptor",
        "is_static"
       ],
       "properties": {
        "is_static": {
         "type": "boolean"
        },
        "descriptor": {
         "type": "string",
         "maxLength": 1024,
         "minLength": 1
        }
       },
       "additionalProperties": false
      },
      "claim": {
       "anyOf": [
        {
         "type": "null"
        },
        {
         "type": "object",
         "required": [
          "parameters",
          "return_type",
          "parameter_slots",
          "initial_local_slots"
         ],
         "properties": {
          "parameters": {
           "type": "array",
           "items": {
            "type": "object",
            "required": [
             "descriptor",
             "type",
             "array_dimensions",
             "slots",
             "local_slot"
            ],
            "properties": {
             "type": {
              "type": "string",
              "maxLength": 1024,
              "minLength": 1
             },
             "slots": {
              "type": "integer",
              "maximum": 2,
              "minimum": 0
             },
             "descriptor": {
              "type": "string",
              "maxLength": 1024,
              "minLength": 1
             },
             "local_slot": {
              "type": "integer",
              "maximum": 254,
              "minimum": 0
             },
             "array_dimensions": {
              "type": "integer",
              "maximum": 255,
              "minimum": 0
             }
            },
            "additionalProperties": false
           },
           "maxItems": 255,
           "minItems": 0
          },
          "return_type": {
           "type": "object",
           "required": [
            "descriptor",
            "type",
            "array_dimensions",
            "slots"
           ],
           "properties": {
            "type": {
             "type": "string",
             "maxLength": 1024,
             "minLength": 1
            },
            "slots": {
             "type": "integer",
             "maximum": 2,
             "minimum": 0
            },

… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/jvm-method-descriptor-parameter-and-local-variable-slot-layout-db082ed7/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from detect.halowerk.com](https://www.zero.xyz/host/detect.halowerk.com/llms.txt)
