{"id":"01KFFC66JTGWW67M3D5ZP8YXEV","cid":"bafkreiamnmdezm4dlqr6jyfbyrfcihfbreozcm6zjdmjowqmsor52ekpue","type":"agent","properties":{"_profile_version":"v1","actions_required":["file:view","file:create","file:update","entity:view","entity:update"],"description":"Creates large, medium, and thumbnail versions of JPEG images. Supports batch processing for multiple images.","endpoint":"https://image-processor.arke.institute","endpoint_verified_at":"2026-01-21T04:14:51.435Z","input_schema":{"oneOf":[{"required":["entity_id"]},{"required":["entity_ids"]}],"properties":{"entity_id":{"description":"Single JPEG file entity to process (for backward compatibility)","type":"string"},"entity_ids":{"description":"Array of JPEG file entity IDs to process (preferred for batch processing)","items":{"type":"string"},"type":"array"},"options":{"description":"Processing options","properties":{"batch_size":{"default":10,"description":"Number of images per Lambda call (default: 10)","type":"number"},"lambda_concurrency":{"default":5,"description":"Maximum parallel Lambda calls (default: 5)","type":"number"},"quality":{"description":"JPEG quality settings for each version","properties":{"large":{"default":90,"description":"Quality for large version (2400px max)","type":"number"},"medium":{"default":85,"description":"Quality for medium version (1288px max)","type":"number"},"thumbnail":{"default":80,"description":"Quality for thumbnail version (256px max)","type":"number"}},"type":"object"}},"type":"object"}},"required":["entity_id"],"type":"object"},"label":"Image Processor","output_description":"For each input JPEG file entity, creates up to three new file entities — large (2400px max dimension, quality 90), medium (1288px max dimension, quality 85, optimized for OCR), and thumbnail (256px max dimension, quality 80). Each derivative is a separate JPEG file entity uploaded to the same collection as the source. Resizing preserves aspect ratio using a fit-inside strategy, and versions are skipped if the source image's longest side is already at or below the target dimension (no upscaling is performed). Derivative filenames follow the pattern '{original_name}_{suffix}.jpg' where suffix is 'large', 'medium', or 'thumb'. To find a source image's derivatives, follow its 'has_derivative' relationships. To find a derivative's original, follow its 'derived_from' relationship.","output_relationships":["Each derivative file has a 'derived_from' relationship pointing to the source JPEG entity","The source JPEG entity gains a 'has_derivative' relationship pointing to each derivative file","These relationships are bidirectional — created in a single POST to /relationships with source_predicate 'derived_from' and target_predicate 'has_derivative'","To find all resized versions of an image: query the source entity's 'has_derivative' relationships"],"output_tree_example":"source JPEG 'manuscript_page_042.jpg' (4800x3600)\n├── file 'manuscript_page_042_large.jpg' (2400x1800, ~quality 90)\n├── file 'manuscript_page_042_medium.jpg' (1288x966, ~quality 85)\n└── file 'manuscript_page_042_thumb.jpg' (256x192, ~quality 80)\n\nIf the source were smaller, e.g. 'photo.jpg' (1000x800):\n├── file 'photo_thumb.jpg' (256x205, ~quality 80)\n└── (large and medium skipped — source already smaller than 2400px and 1288px)","status":"active"},"relationships":[{"peer":"01KFF0H1KSR4SHHDQ7T2HXQEK6","peer_type":"collection","predicate":"collection"}],"ver":7,"created_at":"2026-01-21T04:14:47.102Z","ts":"2026-01-30T02:42:30.920Z","edited_by":{"method":"manual","user_id":"01KDZS52M5F9XS0ZPZQQXGPC9A"}}