{"mcp_url":"https://app.getsupers.com/sites/agent-tools/mcp","docs_url":"https://app.getsupers.com/sites/agent-tools/docs","tools":[{"slug":"agent-task-graph","title":"Task graph planner","category":"collaboration","description":"Turn a dependency graph into ready tasks, parallel waves, and explicit blockers for collaborating agents.","example":{"tasks":[{"id":"research","status":"completed"},{"id":"build","depends_on":["research"]},{"id":"docs","depends_on":["research"]},{"id":"verify","depends_on":["build","docs"]}]},"notes":"Stateless planning. A dependency wave describes graph topology, not a claim or execution guarantee. Send updated statuses on the next call. Empty graphs are complete.","related":["agent-free-windows","agent-json-merge"],"url":"https://app.getsupers.com/sites/agent-task-graph/","mcp_url":"https://app.getsupers.com/sites/agent-task-graph/mcp","schema":{"name":"plan_task_graph","title":"Task graph planner","description":"Validate a DAG and return ready work, parallel waves, blockers and dependency edges. No tasks are executed or stored.","inputSchema":{"$defs":{"Task":{"properties":{"id":{"minLength":1,"title":"Id","type":"string"},"depends_on":{"items":{"type":"string"},"title":"Depends On","type":"array"},"status":{"default":"pending","enum":["pending","running","completed","failed"],"title":"Status","type":"string"}},"required":["id"],"title":"Task","type":"object"}},"properties":{"tasks":{"items":{"$ref":"#/$defs/Task"},"title":"Tasks","type":"array"}},"required":["tasks"],"title":"plan_task_graphArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"plan_task_graphDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-mesh-transform","title":"Mesh transform and OBJ export","category":"3d","description":"Transform mesh geometry with a 4×4 affine matrix and get bounds, centroid, and a ready-to-save OBJ artifact.","example":{"mesh":{"vertices":[[0,0,0],[1,0,0],[0,1,0]],"faces":[[0,1,2]]},"matrix":[[2,0,0,10],[0,2,0,0],[0,0,2,0],[0,0,0,1]]},"notes":"Row-major matrix multiplied by column vectors [x,y,z,1]. Input faces are zero-based; OBJ faces are one-based. Face winding is preserved, including under reflections. Normals and materials are not included.","related":["agent-mesh-inspect","agent-linear-system"],"url":"https://app.getsupers.com/sites/agent-mesh-transform/","mcp_url":"https://app.getsupers.com/sites/agent-mesh-transform/mcp","schema":{"name":"transform_mesh","title":"Mesh transform and OBJ export","description":"Apply a row-major 4x4 affine matrix to vertices and export OBJ, bounds and centroid. Face indices are zero-based. No filesystem or network access.","inputSchema":{"$defs":{"Mesh":{"properties":{"vertices":{"items":{"maxItems":3,"minItems":3,"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"}],"type":"array"},"minItems":1,"title":"Vertices","type":"array"},"faces":{"items":{"items":{"type":"integer"},"type":"array"},"title":"Faces","type":"array"}},"required":["vertices"],"title":"Mesh","type":"object"}},"properties":{"mesh":{"$ref":"#/$defs/Mesh"},"matrix":{"items":{"items":{"type":"number"},"type":"array"},"title":"Matrix","type":"array"}},"required":["mesh","matrix"],"title":"transform_meshArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"transform_meshDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-linear-system","title":"Exact linear-system solver","category":"math","description":"Solve rational linear equations and return a verifiable solution, nullspace basis, or explicit inconsistency.","example":{"coefficients":[[2,1,-1],[-3,-1,2],[-2,1,2]],"constants":[8,-11,-3]},"notes":"Solves A*x=b. Send integers or quoted decimal/fraction strings; JSON floats are rejected to avoid binary rounding. All numeric results are exact fraction strings. Columns are zero-based. For infinite solutions, x = particular_solution + sum(t_i * nullspace_basis[i]), with arbitrary rational parameters t_i. An inconsistent system has no particular solution or residual; its returned basis still describes the homogeneous system A*x=0. Intended for small exact systems; not a floating-point least-squares solver. Rational arithmetic uses Python fractions: https://docs.python.org/3/library/fractions.html","related":["agent-polynomial-interpolation","agent-mesh-transform","agent-task-graph"],"url":"https://app.getsupers.com/sites/agent-linear-system/","mcp_url":"https://app.getsupers.com/sites/agent-linear-system/mcp","schema":{"name":"solve_linear_system","title":"Exact linear-system solver","description":"Solve A*x=b exactly using rational arithmetic. Input integers or decimal/fraction strings. Return a particular solution, nullspace basis, RREF and exact residual; report inconsistent systems explicitly.","inputSchema":{"properties":{"coefficients":{"items":{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},"title":"Coefficients","type":"array"},"constants":{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"title":"Constants","type":"array"}},"required":["coefficients","constants"],"title":"solve_linear_systemArguments","type":"object"},"outputSchema":{"properties":{"status":{"enum":["unique","infinite","inconsistent"],"title":"Status","type":"string"},"rank":{"title":"Rank","type":"integer"},"variables":{"title":"Variables","type":"integer"},"pivot_columns":{"items":{"type":"integer"},"title":"Pivot Columns","type":"array"},"free_columns":{"items":{"type":"integer"},"title":"Free Columns","type":"array"},"particular_solution":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Particular Solution"},"nullspace_basis":{"items":{"items":{"type":"string"},"type":"array"},"title":"Nullspace Basis","type":"array"},"reduced_augmented_matrix":{"items":{"items":{"type":"string"},"type":"array"},"title":"Reduced Augmented Matrix","type":"array"},"residual":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Residual"}},"required":["status","rank","variables","pivot_columns","free_columns","particular_solution","nullspace_basis","reduced_augmented_matrix","residual"],"title":"LinearResult","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-audio-resample","title":"FFmpeg WAV resampler","category":"media","description":"Convert PCM WAV audio into a chosen sample rate and channel count. Receive an actual WAV artifact and SHA-256 checksum.","example":{"audio_base64":"UklGRsQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","sample_rate":16000,"channels":1},"notes":"Submit plain base64 for an uncompressed integer PCM WAV, mono or stereo, 8/16/24/32-bit. Output is 16-bit PCM WAV at 8, 16, 24 or 48 kHz, mono or stereo. Decode audio_base64 to save the output .wav file. The example is a 10 ms silent fixture. Public execution budget: 524288 decoded input bytes, 15 seconds of audio, 10 seconds processing time. No remote URLs or filesystem paths are accepted. Uploaded metadata is discarded; audio is processed through anonymous pipes and not persisted. Resampling can alter sample values and is not loudness normalization.","related":["agent-wav-inspect","agent-task-graph"],"url":"https://app.getsupers.com/sites/agent-audio-resample/","mcp_url":"https://app.getsupers.com/sites/agent-audio-resample/mcp","schema":{"name":"resample_wav","title":"FFmpeg WAV resampler","description":"Execute FFmpeg to resample a base64 PCM WAV and return a complete 16-bit PCM WAV artifact plus checksum and actual audio metadata. No URLs, paths or shell commands accepted.","inputSchema":{"properties":{"audio_base64":{"title":"Audio Base64","type":"string"},"sample_rate":{"default":16000,"enum":[8000,16000,24000,48000],"title":"Sample Rate","type":"integer"},"channels":{"default":1,"enum":[1,2],"title":"Channels","type":"integer"}},"required":["audio_base64"],"title":"resample_wavArguments","type":"object"},"outputSchema":{"properties":{"mime_type":{"title":"Mime Type","type":"string"},"audio_base64":{"title":"Audio Base64","type":"string"},"sha256":{"title":"Sha256","type":"string"},"sample_rate":{"title":"Sample Rate","type":"integer"},"channels":{"title":"Channels","type":"integer"},"sample_width_bytes":{"title":"Sample Width Bytes","type":"integer"},"frames":{"title":"Frames","type":"integer"},"duration_seconds":{"title":"Duration Seconds","type":"number"},"input_sample_rate":{"title":"Input Sample Rate","type":"integer"},"input_channels":{"title":"Input Channels","type":"integer"},"input_frames":{"title":"Input Frames","type":"integer"}},"required":["mime_type","audio_base64","sha256","sample_rate","channels","sample_width_bytes","frames","duration_seconds","input_sample_rate","input_channels","input_frames"],"title":"AudioResult","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-json-diff","title":"JSON diff and patch generator","category":"data","description":"Compare two JSON states and get an ordered JSON Patch plus explicit old and new values for agent review.","example":{"before":{"task":{"status":"queued","owner":null},"steps":["fetch","draft","obsolete"]},"after":{"task":{"status":"ready","owner":"worker-a"},"steps":["fetch","verify"],"verified":true}},"notes":"Returns RFC 6902 add/remove/replace operations using RFC 6901 JSON Pointer paths. The empty path denotes the document root; ~ and / in keys are escaped. Arrays are compared by position, with tail removals in descending order; this is not a minimal edit script or move detector. Object key order is ignored. Numerically equal JSON numbers compare equal, but booleans and numbers are distinct. Null is a value, distinct from a missing field. Apply patch operations in order to the exact before document; no concurrency precondition is included. This tool only computes a patch and never applies changes to your data.","related":["agent-json-merge","agent-task-graph"],"url":"https://app.getsupers.com/sites/agent-json-diff/","mcp_url":"https://app.getsupers.com/sites/agent-json-diff/mcp","schema":{"name":"diff_json","title":"JSON diff and patch generator","description":"Compare JSON documents and return ordered RFC 6902 add/remove/replace operations, old-value change records and counts. Does not apply changes or access external data.","inputSchema":{"$defs":{"JsonValue":{}},"properties":{"before":{"$ref":"#/$defs/JsonValue"},"after":{"$ref":"#/$defs/JsonValue"}},"required":["before","after"],"title":"diff_jsonArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"diff_jsonDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-json-merge","title":"Three-way JSON merge","category":"collaboration","description":"Combine parallel agent edits against a shared base and expose conflicting changes without silently choosing a winner.","example":{"base":{"task":{"status":"draft","owner":"agent-a"},"labels":["review"]},"left":{"task":{"status":"ready","owner":"agent-a"},"labels":["review"],"checks":{"lint":true}},"right":{"task":{"status":"blocked","owner":"agent-b"},"labels":["review"]}},"notes":"Object members merge recursively. Unchanged sides defer to changed sides, and identical changes are accepted. Arrays are atomic: different edits on both sides conflict instead of guessing element identity. Conflicts use JSON Pointer paths and explicit presence flags, so deleted fields differ from null. With conflicts, merged is null and preview retains base values at conflict paths; newly added conflicting fields are omitted. A conflict-free result may itself be null: check clean, not merged truthiness. No files are modified, no shared state is stored, and no agent claims are acquired.","related":["agent-json-diff","agent-task-graph"],"url":"https://app.getsupers.com/sites/agent-json-merge/","mcp_url":"https://app.getsupers.com/sites/agent-json-merge/mcp","schema":{"name":"merge_json","title":"Three-way JSON merge","description":"Merge independent object edits against a common base. Conflicts retain the base in preview and return each side with presence flags. Arrays are atomic. Never writes external state.","inputSchema":{"$defs":{"JsonValue":{}},"properties":{"base":{"$ref":"#/$defs/JsonValue"},"left":{"$ref":"#/$defs/JsonValue"},"right":{"$ref":"#/$defs/JsonValue"}},"required":["base","left","right"],"title":"merge_jsonArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"merge_jsonDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-mesh-inspect","title":"Triangle mesh inspector","category":"3d","description":"Measure surface area and inspect mesh edges, winding, duplicate triangles, degenerate faces and unused vertices.","example":{"vertices":[[0,0,0],[1,0,0],[1,1,0],[0,1,0]],"triangles":[[0,1,2],[0,2,3]]},"notes":"Triangles use zero-based integer indices. Coordinates determine units: area is in squared coordinate units. This inspects triangle meshes only; triangulate polygons first. Duplicate triangles are reported regardless of winding and still contribute to the total area. Degeneracy means exactly zero computed area or repeated indices; no near-zero tolerance is assumed. Edge closure and consistent winding do not establish a valid watertight solid: self-intersections and non-manifold vertices are not tested. No geometry is changed.","related":["agent-mesh-transform","agent-linear-system"],"url":"https://app.getsupers.com/sites/agent-mesh-inspect/","mcp_url":"https://app.getsupers.com/sites/agent-mesh-inspect/mcp","schema":{"name":"inspect_triangle_mesh","title":"Triangle mesh inspector","description":"Measure triangle surface area and report boundary, over-shared and inconsistently wound edges, degenerate faces, duplicate faces and unused vertices. Does not certify solid validity.","inputSchema":{"properties":{"vertices":{"items":{"maxItems":3,"minItems":3,"prefixItems":[{"type":"number"},{"type":"number"},{"type":"number"}],"type":"array"},"title":"Vertices","type":"array"},"triangles":{"items":{"maxItems":3,"minItems":3,"prefixItems":[{"type":"integer"},{"type":"integer"},{"type":"integer"}],"type":"array"},"title":"Triangles","type":"array"}},"required":["vertices","triangles"],"title":"inspect_triangle_meshArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"inspect_triangle_meshDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-free-windows","title":"Shared free-window finder","category":"collaboration","description":"Find common free windows across agent schedules by combining busy intervals and filtering by required duration.","example":{"window_start":"2026-10-01T09:00:00Z","window_end":"2026-10-01T13:00:00Z","busy_by_agent":{"research":[{"start":"2026-10-01T09:30:00Z","end":"2026-10-01T10:30:00Z"}],"review":[{"start":"2026-10-01T06:00:00-04:00","end":"2026-10-01T07:00:00-04:00"}]},"minimum_minutes":30},"notes":"Provide all known busy intervals for every participant, including an empty list for a fully free agent. Times require explicit UTC offsets or Z and are normalized to UTC. Intervals are half-open: an event ending at 10:00 does not block one starting at 10:00. Busy intervals are clipped to the requested window and overlaps are merged. Results are maximal free intervals meeting the duration, not enumerated appointment start times. There is no recurrence expansion, timezone-name/DST inference, calendar lookup or booking. Incomplete input schedules yield incomplete availability evidence.","related":["agent-task-graph","agent-json-merge"],"url":"https://app.getsupers.com/sites/agent-free-windows/","mcp_url":"https://app.getsupers.com/sites/agent-free-windows/mcp","schema":{"name":"find_shared_free_windows","title":"Shared free-window finder","description":"Find maximal UTC windows where all named agents are free, subject to a minimum duration. Intervals are half-open [start,end). No calendar access or bookings.","inputSchema":{"$defs":{"BusyInterval":{"properties":{"start":{"title":"Start","type":"string"},"end":{"title":"End","type":"string"}},"required":["start","end"],"title":"BusyInterval","type":"object"}},"properties":{"window_start":{"title":"Window Start","type":"string"},"window_end":{"title":"Window End","type":"string"},"busy_by_agent":{"additionalProperties":{"items":{"$ref":"#/$defs/BusyInterval"},"type":"array"},"title":"Busy By Agent","type":"object"},"minimum_minutes":{"default":30,"exclusiveMinimum":0,"title":"Minimum Minutes","type":"number"}},"required":["window_start","window_end","busy_by_agent"],"title":"find_shared_free_windowsArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"find_shared_free_windowsDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-wav-inspect","title":"WAV signal inspector","category":"media","description":"Measure PCM audio format, per-channel sample peak, RMS, DC offset and exact digital silence without changing the audio.","example":{"audio_base64":"UklGRsQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"},"notes":"Accepts plain base64 of mono/stereo uncompressed integer PCM WAV (8/16/24/32-bit), up to 524288 decoded bytes and 15 seconds. Channels are zero-based. Normalize samples by 2^(bits-1); 8-bit WAV uses unsigned samples centered at 128. Null dBFS represents negative infinity for zero amplitude. Digital silence counts exactly zero-valued samples, not quiet speech or background noise. Full-scale sample counts are evidence of rail values, not a clipping diagnosis. No LUFS, true-peak or psychoacoustic loudness claim is made. Bytes are not stored or modified.","related":["agent-audio-resample","agent-json-diff"],"url":"https://app.getsupers.com/sites/agent-wav-inspect/","mcp_url":"https://app.getsupers.com/sites/agent-wav-inspect/mcp","schema":{"name":"inspect_wav","title":"WAV signal inspector","description":"Inspect base64 integer PCM WAV bytes and return format, per-channel sample peak/RMS/DC, full-scale sample counts and exact digital-silence fraction. Not LUFS or true-peak analysis.","inputSchema":{"properties":{"audio_base64":{"title":"Audio Base64","type":"string"}},"required":["audio_base64"],"title":"inspect_wavArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"inspect_wavDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-polynomial-interpolation","title":"Exact polynomial interpolation","category":"math","description":"Recover an exact rational polynomial from sample points, with coefficients, residuals and evaluations.","example":{"points":[[0,1],[1,3],[2,7]],"evaluate_at":["1/2",3]},"notes":"Coefficients are ordered constant first: c[0] + c[1]*x + c[2]*x^2. The unique interpolating polynomial has degree below the number of distinct input x values. All numbers returned are exact fraction strings. JSON floats and booleans are rejected; quote decimal values. Equivalent duplicate x coordinates are rejected even when their y values agree. The zero polynomial has degree null and coefficients [\"0\"]. Residuals follow input point order; evaluations follow query order. Extrapolated flags identify queries outside the sample x range. This is exact interpolation, not noisy-data regression or a guarantee of predictive accuracy. Intended for small exact datasets. Arithmetic: https://docs.python.org/3/library/fractions.html","related":["agent-linear-system","agent-json-diff"],"url":"https://app.getsupers.com/sites/agent-polynomial-interpolation/","mcp_url":"https://app.getsupers.com/sites/agent-polynomial-interpolation/mcp","schema":{"name":"interpolate_polynomial","title":"Exact polynomial interpolation","description":"Interpolate distinct rational (x,y) points; return ascending-power coefficients, exact residuals and evaluations. Integers or quoted rational/decimal strings only.","inputSchema":{"properties":{"points":{"items":{"maxItems":2,"minItems":2,"prefixItems":[{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]}],"type":"array"},"title":"Points","type":"array"},"evaluate_at":{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"title":"Evaluate At","type":"array"}},"required":["points","evaluate_at"],"title":"interpolate_polynomialArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"interpolate_polynomialDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-csv-json","title":"CSV to JSON records","category":"functional","description":"Parse delimited text into string-valued JSON records with explicit headers and source-line locations.","example":{"csv_text":"id,note,amount\n001,\"hello, agent\",12.50\n002,\"two\nlines\",\n","delimiter":","},"notes":"The first nonblank record is the header. Exact duplicate names and empty or whitespace-only names are rejected. Header case and whitespace are preserved. All cells remain strings, including leading zeros, decimal spelling, null text, formula text and empty values. Blank physical records are skipped and reported; a quoted empty field is not a blank record. One leading Unicode BOM is removed and reported. Supports comma, semicolon, tab or pipe delimiters; double quotes delimit quoted fields and doubled quotes escape quotes. Uses Python csv.reader strict mode with no dialect guessing, backslash escaping, trimming or type inference. This is not a full RFC conformance validator; quotes within unquoted fields follow Python CSV behavior. Ragged rows or parser errors fail the entire call without partial records. Source line ranges are one-based and include multiline quoted fields. Formula text is data and is never executed. Parser field-size limits remain the runtime defaults. https://docs.python.org/3/library/csv.html","related":["agent-json-diff","agent-json-merge"],"url":"https://app.getsupers.com/sites/agent-csv-json/","mcp_url":"https://app.getsupers.com/sites/agent-csv-json/mcp","schema":{"name":"parse_csv_records","title":"CSV to JSON records","description":"Parse CSV with a required unique header into string-valued JSON records. Reject ragged records, empty headers, duplicate headers and CSV parser errors.","inputSchema":{"properties":{"csv_text":{"title":"Csv Text","type":"string"},"delimiter":{"default":",","enum":[",",";","\t","|"],"title":"Delimiter","type":"string"}},"required":["csv_text"],"title":"parse_csv_recordsArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"parse_csv_recordsDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-ray-mesh","title":"Exact ray-mesh intersections","category":"3d","description":"Find forward ray hits on triangle meshes, with exact positions, face indices and barycentric coordinates.","example":{"vertices":[[0,0,0],[2,0,0],[0,2,0]],"triangles":[[0,1,2]],"origin":["1/2","1/2",2],"direction":[0,0,-2]},"notes":"Ray equation: origin + t*direction, with t >= 0; direction need not be normalized. Parameter t is not Euclidean distance. Send integers or quoted decimal/fraction strings; JSON floats and booleans are rejected. Both face sides are tested. Edge, vertex and t=0 hits are included; shared-edge or overlapping-face hits remain separate per-face records. Barycentric weights correspond to the three vertex indices in each face. front_facing means the ray direction opposes the face normal from its index order. Degenerate triangles are reported and skipped. A ray in a triangle plane is reported as coplanar even if it misses the triangle; coplanar overlap is not resolved. isolated_hits_complete is false whenever coplanar faces exist; nearest_hit is only the nearest reported isolated hit. Empty hits alone do not prove no coplanar overlap. This is a linear scan for small meshes, not a spatially accelerated renderer or solid-containment test. Rational arithmetic: https://docs.python.org/3/library/fractions.html","related":["agent-mesh-inspect","agent-mesh-transform","agent-linear-system"],"url":"https://app.getsupers.com/sites/agent-ray-mesh/","mcp_url":"https://app.getsupers.com/sites/agent-ray-mesh/mcp","schema":{"name":"intersect_ray_mesh","title":"Exact ray-mesh intersections","description":"Intersect a forward ray origin+t*direction, t>=0, with both sides of indexed triangles. Return exact fraction-string hits sorted by ray parameter; flag degenerate and coplanar faces separately.","inputSchema":{"properties":{"vertices":{"items":{"maxItems":3,"minItems":3,"prefixItems":[{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]}],"type":"array"},"title":"Vertices","type":"array"},"triangles":{"items":{"maxItems":3,"minItems":3,"prefixItems":[{"type":"integer"},{"type":"integer"},{"type":"integer"}],"type":"array"},"title":"Triangles","type":"array"},"origin":{"maxItems":3,"minItems":3,"prefixItems":[{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]}],"title":"Origin","type":"array"},"direction":{"maxItems":3,"minItems":3,"prefixItems":[{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]}],"title":"Direction","type":"array"}},"required":["vertices","triangles","origin","direction"],"title":"intersect_ray_meshArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"intersect_ray_meshDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-critical-path","title":"Critical-path timing analysis","category":"collaboration","description":"Compute workflow timing, total slack and critical dependency edges from exact task durations.","example":{"tasks":[{"id":"research","duration":2},{"id":"build","duration":5,"depends_on":["research"]},{"id":"docs","duration":3,"depends_on":["research"]},{"id":"verify","duration":1,"depends_on":["build","docs"]}]},"notes":"Planning only: does not run tasks, reserve workers or persist state. All tasks are unstarted at time zero. Dependencies are finish-to-start with no lag. Assume unlimited parallel resources, no calendars, release dates or deadlines. Use one consistent duration unit; all timing values are exact fraction strings in that unit. Integers or quoted decimal/fraction strings are accepted; JSON floats and booleans are rejected. Zero-duration milestones are allowed. Each terminal task must finish by the overall earliest project completion. Total slack is how far that task can shift while preserving that completion under these assumptions. Critical tasks have zero slack; critical_edges includes only tight dependencies between them, representing all critical routes without enumerating exponentially many paths. Disconnected components are included. Duplicate IDs, duplicate/unknown dependencies, cycles and negative durations fail explicitly. This is not a resource-constrained schedule or a promise of real completion time.","related":["agent-task-graph","agent-free-windows"],"url":"https://app.getsupers.com/sites/agent-critical-path/","mcp_url":"https://app.getsupers.com/sites/agent-critical-path/mcp","schema":{"name":"analyze_critical_path","title":"Critical-path timing analysis","description":"Compute earliest/latest start/finish and total slack for a finish-to-start DAG using exact durations. Assume unlimited resources, all tasks unstarted, no lags or calendars.","inputSchema":{"$defs":{"TimedTask":{"properties":{"id":{"minLength":1,"title":"Id","type":"string"},"duration":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Duration"},"depends_on":{"items":{"type":"string"},"title":"Depends On","type":"array"}},"required":["id","duration"],"title":"TimedTask","type":"object"}},"properties":{"tasks":{"items":{"$ref":"#/$defs/TimedTask"},"title":"Tasks","type":"array"}},"required":["tasks"],"title":"analyze_critical_pathArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"analyze_critical_pathDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-wav-trim","title":"Frame-exact WAV trimmer","category":"media","description":"Extract a PCM audio frame range without resampling and receive an actual WAV file with checksums.","example":{"audio_base64":"UklGRsQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","start_frame":20,"end_frame":60},"notes":"Provide plain base64 PCM WAV and zero-based start_frame/end_frame. The start is included and the end is excluded; one frame contains one sample for each channel. Require 0 <= start_frame < end_frame <= input_frames; invalid ranges fail instead of being clamped. Sample bytes, rate, channel count and sample width are preserved. WAV container metadata is discarded and the container is rebuilt. Decode audio_base64 to save the actual .wav output. sha256 hashes the entire returned WAV; pcm_sha256 hashes only selected interleaved sample bytes. Supports mono/stereo integer PCM 8/16/24/32-bit, up to 524288 decoded upload bytes and 15 input seconds. The example extracts 40 frames, or 5 ms, from a silent 8 kHz fixture. Arbitrary cuts may click; this tool does not fade, resample, normalize, trim by silence, or preserve metadata. No URLs or paths are accepted and uploads are not stored.","related":["agent-wav-inspect","agent-audio-resample"],"url":"https://app.getsupers.com/sites/agent-wav-trim/","mcp_url":"https://app.getsupers.com/sites/agent-wav-trim/mcp","schema":{"name":"trim_wav_frames","title":"Frame-exact WAV trimmer","description":"Extract PCM frames in [start_frame,end_frame), preserving sample bytes, channels, width and rate. Return a complete WAV artifact and SHA-256. Frame indices are zero-based.","inputSchema":{"properties":{"audio_base64":{"title":"Audio Base64","type":"string"},"start_frame":{"title":"Start Frame","type":"integer"},"end_frame":{"title":"End Frame","type":"integer"}},"required":["audio_base64","start_frame","end_frame"],"title":"trim_wav_framesArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"trim_wav_framesDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-text-span","title":"Unicode text span converter","category":"functional","description":"Convert text spans between UTF-8 bytes, UTF-16 units and Unicode code points, with exact selected text.","example":{"text":"Aé𝄞\nZ","start":1,"end":4,"unit":"utf16_units"},"notes":"Offsets are zero-based and half-open: start included, end excluded. Empty spans are allowed. UTF-8 counts encoded bytes without a BOM; UTF-16 counts 16-bit units without a BOM. Both endpoints must lie on Unicode scalar boundaries; a split multibyte sequence or surrogate pair is rejected. Returned line and code-point column positions are one-based; only LF starts a new line, so CR in CRLF counts as a character on the preceding line. End position describes the exclusive endpoint. Combining marks remain separate code points: this tool does not segment grapheme clusters or count visual cursor columns. Text is never normalized, trimmed or newline-converted. Unpaired surrogate values are rejected. Useful for translating parser, JavaScript and byte-oriented tool offsets. Input text is processed without persistence.","related":["agent-csv-json","agent-json-diff"],"url":"https://app.getsupers.com/sites/agent-text-span/","mcp_url":"https://app.getsupers.com/sites/agent-text-span/mcp","schema":{"name":"convert_text_span","title":"Unicode text span converter","description":"Resolve a half-open text span and return equivalent code-point, UTF-8 byte and UTF-16 code-unit offsets plus line/column positions. Reject endpoints inside encoded characters.","inputSchema":{"properties":{"text":{"title":"Text","type":"string"},"start":{"title":"Start","type":"integer"},"end":{"title":"End","type":"integer"},"unit":{"default":"code_points","enum":["code_points","utf8_bytes","utf16_units"],"title":"Unit","type":"string"}},"required":["text","start","end"],"title":"convert_text_spanArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"convert_text_spanDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-success-count","title":"Exact success-count probabilities","category":"math","description":"Compute exact probabilities for how many independent events succeed, including unequal event probabilities.","example":{"probabilities":["1/2","1/3","3/4"],"threshold":2},"notes":"Each event is a Bernoulli trial: success or failure. Events must be independent; shared failures and correlated outcomes invalidate this model. Probabilities are supplied assumptions, not estimates inferred from observations. This computes the Poisson-binomial distribution with rational arithmetic. Supply integer 0/1 or quoted fraction/decimal strings; JSON floats and booleans are rejected. Threshold is an integer; at_least and at_most are inclusive. Thresholds outside 0..trial_count return the corresponding zero/one tails and zero exact mass. An empty trial list has probability one of zero successes. All probabilities, expectation and variance are exact fraction strings. Distribution includes zero-mass counts. Intended for small probability lists; runtime grows quadratically with trial count. No sampling or external data is used.","related":["agent-critical-path","agent-linear-system"],"url":"https://app.getsupers.com/sites/agent-success-count/","mcp_url":"https://app.getsupers.com/sites/agent-success-count/mcp","schema":{"name":"success_count_distribution","title":"Exact success-count probabilities","description":"Compute the count distribution for independent Bernoulli trials with possibly unequal probabilities. Return exact fractions and inclusive threshold tails.","inputSchema":{"properties":{"probabilities":{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"title":"Probabilities","type":"array"},"threshold":{"title":"Threshold","type":"integer"}},"required":["probabilities","threshold"],"title":"success_count_distributionArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"success_count_distributionDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-polyline-nearest","title":"Closest point on a 3D polyline","category":"3d","description":"Project a point onto a 3D path and return exact nearest positions, segment parameters and squared distance.","example":{"vertices":[[0,0,0],[4,0,0],[4,4,0]],"query":[2,1,3]},"notes":"Segments connect consecutive vertices in the supplied order; the path is open. To close a path, repeat its first vertex at the end. Indices are zero-based. A segment point is start + parameter*(end-start), with parameter in [0,1]; this is not normalized path length. Return all exactly tied nearest segments in index order, including shared vertices and overlaps. A zero-length segment is treated as a point with parameter 0 and is also listed in degenerate_segments. Squared Euclidean distance stays exact; ordinary distance is its square root and may be irrational. Inputs are integers or quoted decimal/fraction strings; JSON floats and booleans are rejected. Coordinates use one common Cartesian unit; no geographic, geodesic or curved-path interpretation is applied. Uses rational arithmetic and scans every segment; intended for small exact geometry tasks.","related":["agent-ray-mesh","agent-mesh-transform","agent-mesh-inspect"],"url":"https://app.getsupers.com/sites/agent-polyline-nearest/","mcp_url":"https://app.getsupers.com/sites/agent-polyline-nearest/mcp","schema":{"name":"nearest_polyline_point","title":"Closest point on a 3D polyline","description":"Project a 3D query onto each consecutive segment of an open polyline. Return every exactly tied nearest segment with rational coordinates and squared Euclidean distance.","inputSchema":{"properties":{"vertices":{"items":{"maxItems":3,"minItems":3,"prefixItems":[{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]}],"type":"array"},"title":"Vertices","type":"array"},"query":{"maxItems":3,"minItems":3,"prefixItems":[{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]},{"anyOf":[{"type":"integer"},{"type":"string"}]}],"title":"Query","type":"array"}},"required":["vertices","query"],"title":"nearest_polyline_pointArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"nearest_polyline_pointDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}},{"slug":"agent-json-pointer","title":"Batch JSON Pointer lookup","category":"functional","description":"Extract selected JSON values with explicit missing-path diagnostics and preserved null values.","example":{"document":{"agents":[{"name":"builder","result":null}],"a/b":{"~key":42}},"pointers":["/agents/0/name","/agents/0/result","/agents/1","/a~1b/~0key"]},"notes":"Uses the RFC 6901 JSON string form: empty string selects the root; slash separates tokens; ~1 means slash and ~0 means tilde. URI fragments beginning # are not accepted and percent escapes are not decoded. Object keys are exact and never normalized. Arrays require zero-based ASCII indices without leading zeros. The dash array token refers to a nonexistent append position and cannot be read. Each requested pointer produces one ordered result, including duplicates. Check found: a successful null includes value:null; an unresolved pointer omits value and includes an error. token_index is zero-based and identifies the first failing decoded token. Invalid pointer syntax is reported per item without aborting other lookups. Input is an already parsed JSON value, so duplicate keys discarded by an upstream parser cannot be recovered. No writes, wildcard queries, expression evaluation or remote fetching occurs. Specification: https://www.rfc-editor.org/rfc/rfc6901","related":["agent-json-diff","agent-json-merge","agent-csv-json"],"url":"https://app.getsupers.com/sites/agent-json-pointer/","mcp_url":"https://app.getsupers.com/sites/agent-json-pointer/mcp","schema":{"name":"resolve_json_pointers","title":"Batch JSON Pointer lookup","description":"Resolve JSON Pointer strings without modifying the document. Return found/value or a per-pointer error; null is a successful value. URI-fragment form is not supported.","inputSchema":{"$defs":{"JsonValue":{}},"properties":{"document":{"$ref":"#/$defs/JsonValue"},"pointers":{"items":{"type":"string"},"title":"Pointers","type":"array"}},"required":["document","pointers"],"title":"resolve_json_pointersArguments","type":"object"},"outputSchema":{"additionalProperties":true,"title":"resolve_json_pointersDictOutput","type":"object"},"icons":null,"annotations":{"title":null,"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"meta":null,"execution":null}}]}