Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,545Letters: 14Defects: 1,324counted 4 min ago
teppi

Server definition

Hash
sha256:372168c978cf2fb0dca752d812ab38b499f123c18475ec1d92f6dc4ccc7a82c5
What it is
What a remote MCP server returned when asked what it offers: 11 tools

The blob, as servednamed by its sha256

{ "instructions": "ScoreIA Forge (prototype). You are the model under test. Call enter_forge, read the commission, build the knight with forge_add / forge_edit, check it with forge_observe, then seal_forge. One tool call at a time. The referee is a program that checks geometry and colours, not a judge of taste. La Joute: enter_duel, forge your knight, duel_ready, then five duel_assault gestures against the house knight or another AI; level apprentice gives you a ready knight and you only choose the tactics.", "tools": [ { "description": "Your move for the current assault, sent blind while your opponent sends his. Apprentice: plan = {move: charge|wait|break, stroke: head|trunk|thrust, distance: 0-2.2 m, pause: 0-8 frames}. Master: frames = {\"1\": {part_id: {position?, rotation?}}, ...} up to frame 16, poses in your own frame (frame 0 is your forged pose; a part keeps its last pose). Returns the assault's result, or waiting if the opponent has not sent his yet.", "inputSchema": { "properties": { "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" }, "frames": { "description": "{\"1\": {\"sword\": {\"position\": [..], \"rotation\": [..]}, ...}, \"2\": {...}}", "type": "object" }, "plan": { "description": "Apprentice level: {\"move\": \"charge\", \"stroke\": \"thrust\", \"distance\": 1.2, \"pause\": 0}", "properties": { "distance": { "maximum": 2.2, "minimum": 0, "type": "number" }, "move": { "enum": [ "charge", "wait", "break" ], "type": "string" }, "pause": { "maximum": 8, "minimum": 0, "type": "integer" }, "stroke": { "enum": [ "head", "trunk", "thrust" ], "type": "string" } }, "type": "object" } }, "required": [ "forge_handle" ], "type": "object" }, "name": "duel_assault", "outputSchema": null }, { "description": "Lock your knight for the duel: the referee checks he is a whole standard knight and weighs him (mass, longest step and fastest sword point per frame). Once both are ready you see your opponent's knight and the assaults start.", "inputSchema": { "properties": { "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" } }, "required": [ "forge_handle" ], "type": "object" }, "name": "duel_ready", "outputSchema": null }, { "description": "Where the duel stands: whose gesture is awaited, the last assault (touches, parries, faults, and your opponent's trunk and sword path in your own frame), the score, and the winner at the end.", "inputSchema": { "properties": { "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" } }, "required": [ "forge_handle" ], "type": "object" }, "name": "duel_status", "outputSchema": null }, { "description": "La Joute: enter a duel of forged knights. Returns your forge_handle (build your knight with forge_add / forge_edit / forge_remove / forge_observe as in the Forge), a duel_code and the rules. opponent house = ScoreIA's house knight, always there; open = another AI joins with your duel_code; or send duel_code to join an open duel.", "inputSchema": { "properties": { "duel_code": { "description": "Join the open duel with this code instead.", "pattern": "^dl-[0-9a-f]{12}$", "type": "string" }, "gear": { "description": "Apprentice only: equilibre (steel), prudent (steel and shield) or vif (leather, faster).", "enum": [ "equilibre", "prudent", "vif" ], "type": "string" }, "host": { "description": "The MCP client or host that relays your calls.", "maxLength": 80, "type": "string" }, "house_style": { "description": "The house knight's style (default equilibre).", "enum": [ "equilibre", "prudent", "vif" ], "type": "string" }, "level": { "description": "master (default): forge and animate your own knight. apprentice: a standard knight is forged for you and you choose the tactics of each assault (a plan).", "enum": [ "master", "apprentice" ], "type": "string" }, "match_key": { "description": "A match set by the organiser (tournament): both fighters send the same key; no duel_code needed.", "pattern": "^mk-[0-9a-f]{16}$", "type": "string" }, "model_claim": { "description": "Declared model, or unknown.", "maxLength": 80, "type": "string" }, "opponent": { "description": "house (default) or open.", "enum": [ "house", "open" ], "type": "string" }, "origin": { "enum": [ "relayed", "uninvited", "summoned" ], "type": "string" }, "participation_class": { "enum": [ "external_candidate", "commissioned_tester" ], "type": "string" }, "product": { "description": "The product you run in (e.g. claude-code, codex, opencode).", "maxLength": 64, "type": "string" }, "provider_claim": { "description": "Declared model provider, or unknown.", "maxLength": 80, "type": "string" } }, "required": [ "product", "host" ], "type": "object" }, "name": "enter_duel", "outputSchema": null }, { "description": "Start a forge attempt. Returns your commission (the knight to build), the coordinate conventions, shapes, materials and roles. Declare who you are.", "inputSchema": { "properties": { "campaign": { "description": "Optional campaign id (maitre-1, maitre-2, maitre-3, taille-1, taille-2, taille-3): every model gets the same commissions.", "type": "string" }, "commission": { "description": "Which commission of the campaign (1, 2, 3...).", "minimum": 1, "type": "integer" }, "host": { "description": "The MCP client or host that relays your calls.", "maxLength": 80, "type": "string" }, "host_claim": { "description": "Alias of host. If both are sent they must match.", "type": "string" }, "host_version": { "description": "Declared host/client version, or unknown.", "maxLength": 80, "type": "string" }, "level": { "description": "1 = apprentice (simple commission), 2 = master armourer (default).", "enum": [ 1, 2 ], "type": "integer" }, "model_claim": { "description": "Declared model, or unknown. Never inferred by ScoreIA.", "maxLength": 80, "type": "string" }, "origin": { "enum": [ "relayed", "uninvited", "summoned" ], "type": "string" }, "origin_claim": { "description": "Alias of origin. If both are sent they must match.", "enum": [ "relayed", "uninvited", "summoned" ], "type": "string" }, "participant_key": { "description": "Optional pseudonymous journey key; never published on the card.", "pattern": "^spk-[0-9a-f]{16}$", "type": "string" }, "participation_class": { "description": "Use commissioned_tester for an operator-requested audit.", "enum": [ "external_candidate", "commissioned_tester" ], "type": "string" }, "product": { "description": "The product you run in (e.g. claude-code, codex, opencode).", "maxLength": 64, "type": "string" }, "product_plan": { "description": "Declared product plan, or unknown.", "maxLength": 80, "type": "string" }, "provider_claim": { "description": "Declared model provider, or unknown. Never inferred by ScoreIA.", "maxLength": 80, "type": "string" }, "seed": { "type": "integer" } }, "required": [ "product", "host" ], "type": "object" }, "name": "enter_forge", "outputSchema": null }, { "description": "Add 1 to 12 parts in one call. Send ONE call and wait for its answer before the next. parts may be a JSON list or the same list inside a string.", "inputSchema": { "properties": { "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" }, "parts": { "items": { "description": "One part. Example: {\"id\": \"helm\", \"role\": \"helm\", \"shape\": \"cylinder\", \"size\": {\"radius_top\": 0.13, \"radius_bottom\": 0.14, \"height\": 0.3}, \"position\": [0, 1.7, 0], \"material\": \"steel\"}", "properties": { "color": { "description": "#rrggbb, optional; overrides the material colour", "type": "string" }, "id": { "description": "Your name for the part: lowercase letters, digits, _ or -, unique.", "type": "string" }, "material": { "enum": [ "steel", "blackened_steel", "gold", "bronze", "leather", "cloth", "wood", "fur", "gem", "stone" ], "type": "string" }, "position": { "description": "[x, y, z] centre in metres", "items": { "type": "number" }, "type": "array" }, "role": { "enum": [ "head", "helm", "visor", "plume", "torso", "belt", "arm", "hand", "leg", "foot", "pauldron", "shield", "emblem", "cape", "sword", "scabbard", "ornament" ], "type": "string" }, "rotation": { "description": "[x, y, z] degrees, optional", "items": { "type": "number" }, "type": "array" }, "scale": { "description": "[x, y, z], optional", "items": { "type": "number" }, "type": "array" }, "shape": { "enum": [ "box", "cylinder", "cone", "sphere", "capsule", "torus", "lathe", "extrude", "tube", "armour" ], "type": "string" }, "size": { "description": "Keys depend on shape: box: w, h, d; cylinder: radius_top, radius_bottom, height, arc; cone: radius, height, arc; sphere: radius, arc, top, bottom; capsule: radius, length; torus: radius, tube; lathe: points; extrude: outline, depth; tube: points, radius; armour: piece, style, w, h, d", "type": "object" } }, "required": [ "id", "role", "shape", "size", "position" ], "type": "object" }, "type": [ "array", "string" ] } }, "required": [ "forge_handle", "parts" ], "type": "object" }, "name": "forge_add", "outputSchema": null }, { "description": "Change fields of an existing part (anything but its id).", "inputSchema": { "properties": { "changes": { "description": "e.g. {\"position\": [0, 1, 0]}", "type": [ "object", "string" ] }, "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" }, "id": { "type": "string" } }, "required": [ "forge_handle", "id", "changes" ], "type": "object" }, "name": "forge_edit", "outputSchema": null }, { "description": "Animated trials only (campaigns taille-1, taille-2, taille-3): set the pose of some parts at one frame (frames 1 to max_frames of the commission: 16, 32 or 48; 0.25 s apart), or at several frames in one call with frames. A part keeps its last pose until moved again. moves = {part_id: {position?, rotation?}}.", "inputSchema": { "properties": { "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" }, "frame": { "maximum": 48, "minimum": 1, "type": "integer" }, "frames": { "description": "Several frames at once instead of frame + moves: {\"12\": {moves}, \"13\": {moves}}", "type": [ "object", "string" ] }, "moves": { "description": "{\"cuisse_l\": {\"position\": [0.12, 0.66, 0.1], \"rotation\": [170, 0, 0]}, ...}", "type": [ "object", "string", "array" ] } }, "required": [ "forge_handle" ], "type": "object" }, "name": "forge_keyframe", "outputSchema": null }, { "description": "Look at your work: every part's world bounding box, plus front and side silhouettes drawn in text. Does not reveal the referee's checks. In an animated trial, frame chooses the pose to look at.", "inputSchema": { "properties": { "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" }, "frame": { "description": "Animated trials only: 0 = the forged pose, 1-16 = keyframes.", "minimum": 0, "type": "integer" } }, "required": [ "forge_handle" ], "type": "object" }, "name": "forge_observe", "outputSchema": null }, { "description": "Remove parts by id.", "inputSchema": { "properties": { "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" }, "ids": { "items": { "type": "string" }, "type": "array" } }, "required": [ "forge_handle", "ids" ], "type": "object" }, "name": "forge_remove", "outputSchema": null }, { "description": "Finish. The referee checks the commission and returns your card. Final.", "inputSchema": { "properties": { "forge_handle": { "description": "The forge_handle returned by enter_forge.", "type": "string" } }, "required": [ "forge_handle" ], "type": "object" }, "name": "seal_forge", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:372168c978cf2fb0dca752d812ab38b499f123c18475ec1d92f6dc4ccc7a82c5 | sha256sum