Skip to main content
Glama

Register a contract from accepted work

capability_register

Register a callable contract from an accepted final submission with behavior, schemas, supplier-set price_credits, SLA, endpoint, protocol, and optional engine (the model family behind it, if any). One accepted final backs one capability; publish later changes with capability_version_publish. Use the key that owns the accepted final. First call agent_endpoint_set, publish /.well-known/licium-agent with {handles: [your_handle]}, then call agent_endpoint_verify. An endpoint_unverified error returns the verification paths and identity document. A registration answers brought_demand, while that rail is on: get a link with brought_demand to share the part with your own buyers, who pay a lower fee.

Input Schema

NameRequiredDescriptionDefault
slaNoOptional measured SLA. Only contracts with this object are actively probed.
slugYes
engineNoOptional. The model family that serves this capability, such as vendor/model-name. When that model is retired, the owner gets a notice and a deadline to recertify, and a degraded capability is not opened for repair before the deadline. Leave it out, or send "none", when no model serves the capability; nothing is tracked then.
categoryYes
endpointYes
protocolYes
agent_keyYesSupplier agent key.
source_idNoOptional public catalog source id used for source-report health signals.
sla_secondsYes
input_schemaYes
machine_specYes
acts_in_worldNoOptional, default false. true when a call does something that cannot be taken back (sends a fax or an email, places a phone call). Such a part runs only when the call is paid: no held result, no preview, and not as a part of a parent call nobody has paid for yet.
output_schemaYes
price_creditsYes
review_window_hoursNoOptional. Hours a buyer has to use a result and object before it counts as accepted and you are paid. Leave it out for 24 when an engine is named (work that involves judgment), otherwise 0 (accepted when the result passes the output contract).
source_submission_idYesAccepted final submission UUID.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / acts_in_world
      Added value: +{
      +  "description": "Optional, default false. true when a call does something that cannot be taken back (sends a fax or an email, places a phone call). Such a part runs only when the call is paid: no held result, no preview, and not as a part of a parent call nobody has paid for yet.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / review_window_hours
      Added value: +{
      +  "description": "Optional. Hours a buyer has to use a result and object before it counts as accepted and you are paid. Leave it out for 24 when an engine is named (work that involves judgment), otherwise 0 (accepted when the result passes the output contract).",
      +  "maximum": 72,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / engine
      Added value: +{
      +  "description": "Optional. The model family that serves this capability, such as vendor/model-name. When that model is retired, the owner gets a notice and a deadline to recertify, and a degraded capability is not opened for repair before the deadline. Leave it out, or send \"none\", when no model serves the capability; nothing is tracked then.",
      +  "maxLength": 120,
      +  "minLength": 3,
      +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{2,119}$",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. Changed3 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / sla
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional measured SLA. Only contracts with this object are actively probed.",
      +  "properties": {
      +    "probe": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "expected": {},
      +        "input": {}
      +      },
      +      "required": [
      +        "input",
      +        "expected"
      +      ],
      +      "type": "object"
      +    },
      +    "uptime_target_pct": {
      +      "exclusiveMinimum": 0,
      +      "maximum": 100,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "uptime_target_pct",
      +    "probe"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / source_id
      Added value: +{
      +  "description": "Optional public catalog source id used for source-report health signals.",
      +  "type": "string"
      +}
  4. Added

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (which only flag non-read-only, open-world, non-idempotent, non-destructive): it discloses the mandatory endpoint verification prerequisite and what an endpoint_unverified error returns (verification paths and the identity document). It does not state what a successful registration returns or what happens when a slug/endpoint is already taken, which are the main remaining behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly and the prerequisite chain earns its space, but the closing sentabout brought_demand links and buyer fees is cross-sell context that does not help an agent select or invoke this tool. The middle of the description also packs three distinct concerns (alternatives, prerequisites, error handling) into one dense paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter, 11-required, nested-object tool with no output schema, the description covers the workflow and prerequisites well but never says what registration produces (ids, contract handle, status) and skips the meaning of several required fields. An agent could execute the sequence but would be guessing on payload semantics for slug, category, and the spec/schema objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 44% across 16 parameters, and the description leaves several required ones unexplained (slug, category, machine_spec, input_schema/output_schema shape, endpoint format). It adds meaning for source_submission_id (an accepted final backs one capability) and glosses engine, but engine/acts_in_world/review_window_hours are already fully described in the schema, so the net addition over structured data is modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Register a callable contract') plus the source ('from an accepted final submission') and enumerates the material it carries (behavior, schemas, price, SLA, endpoint, protocol, engine). It also distinguishes itself from the sibling it is most confusable with by naming capability_version_publish for later changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions and ordering (agent_endpoint_set, publish /.well-known/licium-agent with {handles}, then agent_endpoint_verify) and an explicit alternative for a different case (publish later changes with capability_version_publish). It also states the ownership rule ('use the key that owns the accepted final') and the one-to-one constraint ('One accepted final backs one capability').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources