Skip to main content
Glama

skkg_search_objects

skkg_search_objects
Read-onlyIdempotent

Search SKKG objects by German keywords and filters; results include IDs, website URLs, and separate image and object rights, with full records available via object lookup.

Instructions

Search SKKG objects by German keywords and filters; the main entry point. The data is German: translate the user's words ("Stillleben", not "still life"). Term filters take a German label or a term id; an unknown label is refused, with similar labels if there are any and the skkg_find_terms call that lists them all. Each result carries its id, website_url, image_license (the primary image) and object_copyright (the object itself): quote both, they are separate rights. For the full record of one object (production, acquisition, provenance chain, images), use skkg_get_object. A search with neither query nor filter is refused.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "skkg_search_objects"
  }
}

Input Schema

NameRequiredDescriptionDefault
langNoLanguage of vocabulary labels. Most vocabularies, materials and object types among them, have German labels only, which are returned whatever the language; titles and texts stay as recordedde
sortNorelevance (default with a query), inventory_number (default without), date_asc, date_desc, or acquisition_date (oldest SKKG acquisition first)
epochNoEpoch label as SKKG dates objects, e.g. "19. Jh.", "1. Hälfte 20. Jh.". A term id ("type/…") or a German label, matched exactly except for case.
limitNo
queryNoGerman keywords over titles, inscriptions, object texts, and inventory numbers. Every word must occur; "a phrase" matches in order; a trailing * matches a prefix; OR between two words matches either; NOT before a word excludes it. Umlauts may be written ä or ae
scopeNoWhere the query matches: all (default), title, inscription, text (descriptions), or inventory_numberall
offsetNo
creatorNoCreator: an actor id ("person/41") or a name ("Anker", "Albert Anker"). A name matches every person whose name contains all its words; applied_filters lists them
date_toNoLatest year of production; see date_from
part_ofNoObject id (its parts) or object group id (its members)
materialNoMaterial, e.g. "Holz", "Papier", "Silber". A term id ("type/…") or a German label, matched exactly except for case.
date_fromNoEarliest year of production. Matches objects whose dating overlaps the range; undated objects never match
has_imageNoOnly objects with (true) or without (false) a published image
techniqueNoTechnique, e.g. "bemalt", "vergoldet", "geschnitzt". A term id ("type/…") or a German label, matched exactly except for case.
exhibitionNoExhibition id: only objects shown in it
literatureNoLiterature id: only objects it refers to
attributionNoAttribution qualifier, e.g. "zugeschrieben", "nach", "Kopie nach". Applies to the same creator row as `creator`. A term id ("type/…") or a German label, matched exactly except for case.
object_typeNoObject type, e.g. "Zeichnung" or "Malerei". A term id ("type/…") or a German label, matched exactly except for case.
creator_roleNoRole of the creator, e.g. "Künstler:in", "Verlag", "Stecher:in". Applies to the same creator row as `creator`. A term id ("type/…") or a German label, matched exactly except for case.
acquired_fromNoWho SKKG acquired the object from: an actor id or a name, as for `creator`
image_licenseNoLicence of the object's primary image: "CC0 1.0", "CC BY 4.0", or "©". A term id ("type/…") or a German label, matched exactly except for case.
acquisition_typeNoHow SKKG acquired the object, e.g. "Auktion", "Ankauf", "Schenkung". A term id ("type/…") or a German label, matched exactly except for case.
include_narrowerNoTerm filters also match narrower terms, e.g. "Malerei" includes "Malerei auf Papier". Default true
object_copyrightNoCopyright status of the object itself: "gemeinfrei" or "Copyright". A term id ("type/…") or a German label, matched exactly except for case.
provenance_statusNoProvenance research status: "klar", "geklärt", or "ungeklärt". A term id ("type/…") or a German label, matched exactly except for case.
acquisition_year_toNoLatest year of SKKG's acquisition
exclude_attributionsNoAttribution labels or ids; leaves out objects with a creator so attributed. With `creator`, `creator_role`, or `attribution`, only the creator row those match counts, e.g. ["nach", "Kopie nach"] for works by the creator rather than after them
has_provenance_chainNoOnly objects with (true) or without (false) a provenance chain before SKKG
acquisition_year_fromNoEarliest year of SKKG's acquisition

Output Schema

NameRequiredDescriptionDefault
sortYes
totalYes
offsetYes
resultsYes
has_moreYes
returnedYes
warningsNo
data_as_ofNo
next_offsetNo
applied_filtersNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld=false), and the description adds behavior they do not: unknown term labels are refused with similar-label suggestions, empty searches are rejected, and the two distinct rights fields must be quoted separately. That is concrete failure-mode and output-handling context beyond structured data.

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?

Front-loaded with purpose and then tightly packed with routing, error, and output-caution sentences, none of which is filler. It is dense and reads as one long paragraph, and restating the four returned fields mildly duplicates the existing output schema, costing a point.

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

Completeness5/5

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

For a 29-parameter search tool with 93% schema coverage, full annotations, and an output schema, the description supplies exactly what the structured fields cannot: translation duty, term-resolution failure behavior, sibling routing, and licensing caution. Pagination and sort defaults are left to the schema, which documents them adequately.

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

Parameters4/5

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

Schema description coverage is 93%, so the baseline is 3, and the description clears it by telling the agent the data is German and that user wording must be translated ("Stillleben", not "still life") — a usage rule the schema's lang parameter does not spell out. It restates the label-or-id convention already documented per-parameter rather than adding to it, so it stops short of a 5.

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?

States a specific verb and resource ("Search SKKG objects") and immediately scopes the domain ("by German keywords and filters; the main entry point"). It also names the sibling it is not (skkg_get_object for a full record), so the agent can separate search from retrieval without opening another schema.

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 alternatives and the condition that selects them: skkg_find_terms when a term label is unknown, skkg_get_object for the full record of one object. It also states a hard precondition — a search with neither query nor filter is refused — which is guidance no schema encodes.

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