Skip to main content
Glama
cinii-mcp

cinii-mcp

by ckgerteis

cinii_search_all

Read-onlyIdempotent

Search all CiNii Research content types in one query and return a unified envelope, labeling each record by its type.

Instructions

Cross-type search across all CiNii content. Returns the unified envelope.

The cross search mixes types. Each record's type is taken from its own dc:type (article, book, dataset, dissertation, project, researcher); a record without one is reported as 'article'.

Input Schema

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changedv3.3.0
    • addedInput schema / $defs / CrossSearchInput / properties / data_source
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Data source(s), comma-separated, e.g. 'JALC', 'IRDB', 'CROSSREF', 'NDL_SEARCH', 'NACSIS_CAT', 'KAKEN', 'CIA', 'CIB', 'DATACITE', 'JDCAT'. Sent as dataSourceType. Unknown values are refused here, because CiNii answers them with zero records.",
      +  "title": "Data Source"
      +}
    • addedInput schema / $defs / CrossSearchInput / properties / has_fulltext
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "true: only records CiNii links to full text; false: only records it does not. Sent as hasLinkToFullText.",
      +  "title": "Has Fulltext"
      +}
    • addedInput schema / $defs / CrossSearchInput / properties / language
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Language(s) of the records, as ISO 639-1 codes, comma-separated: 'ja', 'en', 'zh', 'ko', or 'ja,en'. Sent as languageType. Filters by the language catalogued for the record, not the language of the query.",
      +  "title": "Language"
      +}
    • addedInput schema / $defs / CrossSearchInput / properties / query / anyOf
      Added value: +[
      +  {
      +    "maxLength": 2000,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / $defs / CrossSearchInput / properties / query / default
      Added value: +null
    • addedInput schema / $defs / CrossSearchInput / properties / query / description
      Added value: +"Free-text search terms (Japanese or English). Optional when another criterion (an identifier, a title, a filter) is given."
    • removedInput schema / $defs / CrossSearchInput / properties / query / maxLength
      Removed value: -2000
    • removedInput schema / $defs / CrossSearchInput / properties / query / minLength
      Removed value: -1
    • removedInput schema / $defs / CrossSearchInput / properties / query / type
      Removed value: -"string"
    • addedInput schema / $defs / CrossSearchInput / properties / researcher_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 2000,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Researcher identifier(s), comma-separated: a KAKEN researcher number, an NRID, a CiNii author ID (DA…) or a researcher CRID. Sent as researcherId.",
      +  "title": "Researcher Id"
      +}
    • addedInput schema / $defs / CrossSearchInput / properties / sort
      Added value: +{
      +  "$ref": "#/$defs/SortOrder",
      +  "default": "4",
      +  "description": "Sort order. NEWEST/OLDEST = by year (publication, degree award or project start); RELEVANCE (default); CITATIONS_DESC = citation count, articles only; CRID_ASC = by CRID, cross search only; NAME_ASC/NAME_DESC, PROJECTS_DESC/PROJECTS_ASC and PRODUCTS_DESC/PRODUCTS_ASC = researcher name, number of related projects and number of related research products, researcher search only (which does not accept OLDEST)."
      +}
    • addedInput schema / $defs / CrossSearchInput / properties / start / maximum
      Added value: +10000
    • removedInput schema / $defs / CrossSearchInput / required
      Removed value: -[
      -  "query"
      -]
    • addedInput schema / $defs / SortOrder
      Added value: +{
      +  "description": "CiNii Research OpenSearch v2 `sortorder` codes.\n\nNot every code is valid for every search type, and CiNii does not refuse\none that is not: sortorder=5 on articles is silently ignored and the\nresults come back in relevance order, a page that says it is sorted when\nit is not. Each input model therefore checks its sort against _SORT_SCOPE.",
      +  "enum": [
      +    "0",
      +    "1",
      +    "4",
      +    "5",
      +    "6",
      +    "10",
      +    "20",
      +    "21",
      +    "30",
      +    "31",
      +    "40"
      +  ],
      +  "title": "SortOrder",
      +  "type": "string"
      +}
  2. Changed1 schema field changedv3.2.0
    • addedInput schema / $defs / CrossSearchInput / properties / query / maxLength
      Added value: +2000
  3. First observedv3.0.0

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, open-world behavior, so the description earns credit for disclosing something structured fields cannot: that records carry mixed types drawn from each record's own dc:type and that a missing dc:type is reported as 'article'. This is non-obvious, agent-relevant output behavior.

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?

Three short sentences, front-loaded with the core purpose and the return shape, then the type caveat. No filler, though the second sentence ('The cross search mixes types') partly restates the first.

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?

An output schema exists, so return values need not be explained, and the type-mapping note is a useful completion. However, for a broad multi-filter search with a notoriously silent-ignore sort parameter, the description gives no guidance on result ordering caveats or how the filters interact with the mixed types.

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

Parameters2/5

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

Reported schema description coverage is 0%, so the description carries the burden of compensating for undocumented parameters, and it adds nothing at all about sort codes, query, date ranges, data_source, or researcher_id. The nested schema does describe most of these fields in reality, but the description itself contributes no parameter meaning.

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

Purpose4/5

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

States a clear verb and resource: 'Cross-type search across all CiNii content', which implicitly distinguishes it from the type-specific siblings (cinii_search_articles, cinii_search_books, etc.). It does not name any sibling explicitly, so the differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

The word 'cross-type' and 'all CiNii content' imply the tool is for broad queries where the type is unknown or mixed, but the description never says when to prefer it over the nine typed siblings, nor whether filters behave differently here. Usage is only implied.

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