{"openapi":"3.1.0","info":{"title":"Lumeratio API","version":"0.1.0","description":"A fully local exposure-triangle (ISO/aperture/shutter speed) calculator and cheat sheet: solves for a changed setting, generates equivalent-exposure tables, computes stops and Exposure Value, applies the Sunny 16 rule, and gives a hand-curated reference of starting settings for common scenes.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://lumeratio.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/lumeratio/docs"},"termsOfService":"https://connectorbay.com/lumeratio/terms"},"servers":[{"url":"https://lumeratio.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/lumeratio/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/adjust_exposure":{"post":{"operationId":"adjust_exposure","summary":"Given a correctly-exposed ISO/aperture/shutter baseline, one setting that changed, and which remaining","description":"Given a correctly-exposed ISO/aperture/shutter baseline, one setting that changed, and which remaining\n    setting to solve for (the third stays fixed), returns the new value needed to keep the same exposure. Use\n    for \"I'm at f/8 1/125 ISO 100, what shutter speed do I need at f/16\", \"correct exposure is ISO 400 1/60 f/4\n    — what ISO do I need at 1/250 if aperture stays the same\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"current_iso":{"description":"A correctly-exposed ISO.","examples":[100],"exclusiveMinimum":0,"maximum":6553600,"title":"Current Iso","type":"number"},"current_aperture":{"description":"Correctly-exposed aperture, as an f-number.","examples":[8],"exclusiveMinimum":0,"maximum":90,"title":"Current Aperture","type":"number"},"current_shutter":{"description":"Correctly-exposed shutter speed: '1/125', '2', '0.5'.","examples":["1/125"],"title":"Current Shutter","type":"string"},"changed_setting":{"description":"Which setting changed: 'iso', 'aperture', or 'shutter'.","examples":["aperture"],"title":"Changed Setting","type":"string"},"new_value":{"description":"The new value for changed_setting.","examples":["16"],"title":"New Value","type":"string"},"solve_for":{"description":"Which of the remaining two settings to solve for: 'iso', 'aperture', or 'shutter'.","examples":["shutter"],"title":"Solve For","type":"string"}},"required":["current_iso","current_aperture","current_shutter","changed_setting","new_value","solve_for"],"title":"adjust_exposureArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/equivalent_exposure_table":{"post":{"operationId":"equivalent_exposure_table","summary":"Generates a cheat-sheet table of equivalent full-stop aperture/shutter pairs at a fixed ISO, centered on","description":"Generates a cheat-sheet table of equivalent full-stop aperture/shutter pairs at a fixed ISO, centered on\n    a baseline. Use for \"give me equivalent exposures to f/4 1/500 at ISO 200\", \"cheat sheet around f/8 1/125\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"iso":{"description":"ISO to hold fixed.","examples":[100],"exclusiveMinimum":0,"maximum":6553600,"title":"Iso","type":"number"},"aperture":{"description":"Baseline aperture.","examples":[8],"exclusiveMinimum":0,"maximum":90,"title":"Aperture","type":"number"},"shutter":{"description":"Baseline shutter speed.","examples":["1/125"],"title":"Shutter","type":"string"},"steps":{"default":3,"description":"How many full stops wider and narrower to list.","maximum":6,"minimum":1,"title":"Steps","type":"integer"}},"required":["iso","aperture","shutter"],"title":"equivalent_exposure_tableArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/stops_between":{"post":{"operationId":"stops_between","summary":"How many stops separate two values of the same kind (ISO, aperture f-number, or shutter speed in","description":"How many stops separate two values of the same kind (ISO, aperture f-number, or shutter speed in\n    seconds), and which direction is more light. Use for \"how many stops between f/2.8 and f/8\", \"stops from\n    ISO 100 to ISO 3200\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_value":{"description":"Starting value.","examples":[2.8],"exclusiveMinimum":0,"title":"From Value","type":"number"},"to_value":{"description":"Ending value.","examples":[8],"exclusiveMinimum":0,"title":"To Value","type":"number"},"kind":{"description":"'iso', 'aperture', or 'shutter'.","examples":["aperture"],"title":"Kind","type":"string"}},"required":["from_value","to_value","kind"],"title":"stops_betweenArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/exposure_value":{"post":{"operationId":"exposure_value","summary":"Computes the Exposure Value (EV) for an aperture/shutter/ISO combination, both at ISO 100 (the standard","description":"Computes the Exposure Value (EV) for an aperture/shutter/ISO combination, both at ISO 100 (the standard\n    EV reference) and at the given ISO. Use for \"what's the EV of f/8 at 1/125\", \"exposure value at ISO 400 f/4\n    1/60\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"aperture":{"description":"Aperture as an f-number.","examples":[8],"exclusiveMinimum":0,"maximum":90,"title":"Aperture","type":"number"},"shutter":{"description":"Shutter speed.","examples":["1/125"],"title":"Shutter","type":"string"},"iso":{"default":100,"description":"ISO.","exclusiveMinimum":0,"maximum":6553600,"title":"Iso","type":"number"}},"required":["aperture","shutter"],"title":"exposure_valueArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ev_to_settings":{"post":{"operationId":"ev_to_settings","summary":"Converts an Exposure Value back into a matching aperture or shutter speed, given the other setting fixed","description":"Converts an Exposure Value back into a matching aperture or shutter speed, given the other setting fixed\n    and an ISO. Use for \"EV 12 at f/8, what shutter speed\", \"EV 9 at 1/60, what aperture\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ev":{"description":"An Exposure Value.","examples":[12],"title":"Ev","type":"number"},"iso":{"default":100,"description":"ISO.","exclusiveMinimum":0,"maximum":6553600,"title":"Iso","type":"number"},"fixed":{"default":"aperture","description":"Which setting to hold fixed: 'aperture' or 'shutter'.","title":"Fixed","type":"string"},"fixed_value":{"default":"8","description":"The fixed setting's value.","examples":["8"],"title":"Fixed Value","type":"string"}},"required":["ev"],"title":"ev_to_settingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/scene_preset":{"post":{"operationId":"scene_preset","summary":"A hand-curated recommended starting ISO/aperture/shutter for a named scene, with a plain-language note.","description":"A hand-curated recommended starting ISO/aperture/shutter for a named scene, with a plain-language note.\n    Use for \"starting settings for astrophotography\", \"what settings for an indoor low-light shot\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"scene":{"description":"A scene name.","examples":["night city street","golden hour","indoor low light"],"minLength":1,"title":"Scene","type":"string"}},"required":["scene"],"title":"scene_presetArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_scenes":{"post":{"operationId":"list_scenes","summary":"Every scene preset Lumeratio covers, with its recommended settings. Use for \"what scenes do you have","description":"Every scene preset Lumeratio covers, with its recommended settings. Use for \"what scenes do you have\n    presets for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_scenesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/sunny16_calculator":{"post":{"operationId":"sunny16_calculator","summary":"Applies the classic Sunny 16 rule (f/16 at 1/ISO in full sun, opening a stop per step of cloudier light)","description":"Applies the classic Sunny 16 rule (f/16 at 1/ISO in full sun, opening a stop per step of cloudier light)\n    to compute the correct shutter speed for a desired aperture and light condition, without a meter. Use for\n    \"Sunny 16 shutter speed for overcast light at f/8\", \"no meter, full sun, what shutter speed at f/11\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"light_condition":{"description":"'full sun', 'slight overcast', 'overcast', 'heavy overcast', or 'open shade'.","examples":["overcast"],"title":"Light Condition","type":"string"},"desired_aperture":{"description":"The aperture you want to shoot at.","examples":[8],"exclusiveMinimum":0,"maximum":90,"title":"Desired Aperture","type":"number"},"iso":{"default":100,"description":"ISO.","exclusiveMinimum":0,"maximum":6553600,"title":"Iso","type":"number"}},"required":["light_condition","desired_aperture"],"title":"sunny16_calculatorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/exposure_glossary":{"post":{"operationId":"exposure_glossary","summary":"Definitions of core exposure terms: stop, exposure value, exposure triangle, reciprocity, Sunny 16 rule,","description":"Definitions of core exposure terms: stop, exposure value, exposure triangle, reciprocity, Sunny 16 rule,\n    ISO invariance, full stop, latitude, the 500 rule, base ISO. Use for \"what does reciprocity mean\", \"what's\n    ISO invariance\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"exposure_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}