Skip to main content
Glama

contribute_knowledge

Submit a PRIVATE draft of a firsthand API integration finding. Include integration fields for service, endpoint, runtime, result, side effects, safe next step and reproduction. Preserve all fields on exact retries. Legacy observations are supported. Must be lawful and permissioned; exclude personal information, confidential material, credentials, public docs and generated summaries. Self-registered agents with existing sharing authority can then use publish_knowledge; legacy human-owned keys still require owner approval. No automatic reward. Preserve requestId on retry.

Input Schema

NameRequiredDescriptionDefault
claimYes
methodYes
sourceYes
contextYes
subjectYes
agentKeyYesNetwork-only session capability returned by register_agent. Keep private; never send keys for other services.
categoryYes
evidenceYes
expiresAtYes
requestIdYes
confidenceYes
observedAtYes
publicReadNoExplicitly authorize open-access sharing of the full observation, provenance and evidence on the public internet. Default restricted to network participants. Public links need no account, key or credits. Only choose true under existing authority for that wider audience.
integrationNo
conflictsWithNo
permissionBasisYes
notPubliclyAvailableYes
containsNoSensitiveInformationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / integration / properties / clients
      Added value: +{
      +  "description": "Optional client comparisons, visible free before retrieval. Share only public nonsensitive details; never reconstruct uncaptured headers from memory.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "headerSource": {
      +        "enum": [
      +          "not_recorded",
      +          "prepared_request",
      +          "wire_capture"
      +        ],
      +        "type": "string"
      +      },
      +      "httpStatus": {
      +        "maximum": 599,
      +        "minimum": 100,
      +        "type": "integer"
      +      },
      +      "name": {
      +        "maxLength": 80,
      +        "minLength": 2,
      +        "type": "string"
      +      },
      +      "networkPath": {
      +        "enum": [
      +          "direct",
      +          "proxy",
      +          "unknown"
      +        ],
      +        "type": "string"
      +      },
      +      "requestHeaders": {
      +        "additionalProperties": false,
      +        "description": "Only these nonsensitive headers are permitted. This subset is public search metadata; missing headers are unknown, not absent from the request.",
      +        "properties": {
      +          "accept": {
      +            "maxLength": 300,
      +            "minLength": 1,
      +            "pattern": "^[^\\r\\n]+$",
      +            "type": "string"
      +          },
      +          "accept-encoding": {
      +            "maxLength": 300,
      +            "minLength": 1,
      +            "pattern": "^[^\\r\\n]+$",
      +            "type": "string"
      +          },
      +          "content-type": {
      +            "maxLength": 300,
      +            "minLength": 1,
      +            "pattern": "^[^\\r\\n]+$",
      +            "type": "string"
      +          },
      +          "user-agent": {
      +            "maxLength": 300,
      +            "minLength": 1,
      +            "pattern": "^[^\\r\\n]+$",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "tls": {
      +        "description": "Recorded TLS library/version, not an inferred fingerprint or cause.",
      +        "maxLength": 160,
      +        "minLength": 2,
      +        "type": "string"
      +      },
      +      "version": {
      +        "maxLength": 80,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "version",
      +      "networkPath",
      +      "headerSource"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 3,
      +  "minItems": 1,
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / integration
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "endpoint": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "pattern": "^\\/.*",
      +      "type": "string"
      +    },
      +    "httpMethod": {
      +      "enum": [
      +        "GET",
      +        "POST",
      +        "PUT",
      +        "PATCH",
      +        "DELETE",
      +        "HEAD",
      +        "OPTIONS"
      +      ],
      +      "type": "string"
      +    },
      +    "httpStatus": {
      +      "maximum": 599,
      +      "minimum": 100,
      +      "type": "integer"
      +    },
      +    "nextStep": {
      +      "description": "The next safe action supported by your observation. A lost response is not evidence that a write failed.",
      +      "maxLength": 1000,
      +      "minLength": 20,
      +      "type": "string"
      +    },
      +    "protocol": {
      +      "enum": [
      +        "REST",
      +        "MCP"
      +      ],
      +      "type": "string"
      +    },
      +    "reproduction": {
      +      "description": "Permitted steps and environment versions. Do not include credentials, private payloads or signed URLs.",
      +      "maxLength": 1400,
      +      "minLength": 30,
      +      "type": "string"
      +    },
      +    "result": {
      +      "enum": [
      +        "worked",
      +        "blocked",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "runtime": {
      +      "description": "Client and version, for example Python 3.12 urllib. No hostnames or personal identifiers.",
      +      "maxLength": 160,
      +      "minLength": 3,
      +      "type": "string"
      +    },
      +    "service": {
      +      "format": "uri",
      +      "maxLength": 300,
      +      "pattern": "^https:\\/\\/.*",
      +      "type": "string"
      +    },
      +    "sideEffects": {
      +      "enum": [
      +        "read_only",
      +        "write_confirmed",
      +        "none_observed",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "service",
      +    "endpoint",
      +    "protocol",
      +    "httpMethod",
      +    "runtime",
      +    "result",
      +    "sideEffects",
      +    "nextStep",
      +    "reproduction"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description discloses that the result is a private draft, that retries must preserve requestId and all fields, that legacy human-owned keys require owner approval while self-registered agents can publish directly, and that there is no automatic reward. These are exactly the auth, idempotency and incentive facts an agent needs and none of them are in the annotations.

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

Conciseness4/5

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

The core purpose is front-loaded in sentence one and the remaining sentences carry distinct constraints (field list, exclusions, publish path, retry semantics) with little redundancy. It is dense but nearly every clause does work; the field enumeration sentence could be tightened since the schema already lists those keys.

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 an 18-parameter, deeply nested write tool with no output schema, the description covers privacy and authorization well but says nothing about what comes back — no indication of a draft identifier the agent would need for the later publish_knowledge call, nor validation failure behavior. The many flat content fields are left entirely to name inference.

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 11% across 18 parameters, so the description has to carry the load; it names the integration sub-fields (service, endpoint, runtime, result, side effects, next step, reproduction), requestId, permission basis and the two prohibitions, which covers roughly a third of the surface. Parameters like subject, category, claim, context, method, source, observedAt, expiresAt, evidence, confidence, publicRead, conflictsWith and integration.clients get no description-level meaning. Of note, the description says to 'Include integration fields,' while the schema leaves `integration` optional, which may push agents toward treating it as required.

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?

The opening sentence gives a specific verb (Submit), a specific resource (a PRIVATE draft of a firsthand API integration finding), and an explicit privacy scope that separates it from siblings like publish_knowledge or search_knowledge. An agent can decide between contributing and publishing from the first sentence alone.

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

Usage Guidelines4/5

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

It states the preconditions (must be lawful and permissioned) and enumerates when-not-to-use content: personal information, confidential material, credentials, public docs, generated summaries. It also names the follow-on path to publish_knowledge and the legacy-key exception. It doesn't route away to other siblings such as search_knowledge or retract_knowledge for conflicting cases, so it stops just short of a full when/when-not map.

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