← RedpineCONTENT HISTORY

Update to Redpine

Snapshot Oct 9, 2026 · 18:02 UTC · version 1.0.2

WHAT CHANGED · RULE-BASED ANALYSIS

Payment or plan references changed

Package contents changed in 10 files: .app.json, .codex-plugin/plugin.json, .mcp.json, …. Open the file diff to inspect the edits.

Observed in published text. Live prices and checkout terms have not been verified by this change.

Package file

Before

99e4bc0bc6d305e899f7db9bb294f48c0d1f5924da29937dfe0c4744edd4c264

After

8af0a36b94d47fe851ae8923f7496ea4d797c54d862e04dc93bace040571d11b

Package file

Before

127

After

99

Package file

Before

f1010a87d6dd489f058f598db4c609f81093813f1e6b9689b20b63aec088f27f

After

1d830bf85a291173ae965a6f917011ac1e688a4955395bdc7dec8fbf876f309d

Package file

Before

4238

After

4704

Compare saved observations

Download comparison JSON

skills/redpine-search/references/search.md

--- before
+++ after
@@ -0,0 +1,78 @@
+# Using `search` and `search-<name>` well
+
+Both take the same arguments. `search` needs a `collection` from
+`list_collections`; `search-<name>` has it bound. The authoritative field list
+for `filters` lives in the tool's own schema. Read it with `inspect-tool`; it
+is long and it differs by collection. What follows is how to use it, not what
+is in it.
+
+## Query
+
+- A sentence stating the actual question, up to 1000 characters. Semantic
+  retrieval ranks by meaning; a list of keywords retrieves worse than prose.
+- Constraints go in `filters`, not in the query text. "Nature papers after
+  2020 on X" is `query: "X"` plus a journal and date filter. Leaving the
+  constraint in the prose makes it a soft preference the ranker may ignore.
+- `limit` is 1 to 30, default 10. Preview at the default, then unlock
+  selectively, rather than asking for 30 up front.
+- `include_figures` adds latency. Set it only when the question is about a
+  figure or visual data.
+
+## Filters: which field to reach for
+
+- **A named journal.** Filter on its identifier field, not its name. One
+  journal appears under several spellings; the identifier survives them all.
+  The schema names the field and the formats it accepts.
+- **A subject across publications.** Look for a cross-brand subject field
+  before filtering on journal. If the collection has one, it is the right
+  axis for "by topic" questions.
+- **A kind of article.** Filter on article type (reviews, case reports,
+  protocols) or on section (methods, results) when the user wants a kind of
+  evidence rather than a topic. Section filtering is how you answer "what
+  methods did they use" without reading every chunk.
+- **A date window.** ISO `YYYY-MM-DD`; ranges are detected in any range
+  operator.
+- **Excluding.** There is no separate exclusion syntax. Negate with `not`
+  in the flat form, or `ne` / `not_in` in the structured form.
+- **Journal-level metrics.** Range operators only. The metric is OpenAlex
+  two-year mean citedness. It is **not** the Journal Impact Factor and must
+  not be described as one. A journal with no value is absent from results,
+  not scored zero.
+
+## Two filter formats, never mixed
+
+Flat key-value (preferred; top-level keys are ANDed):
+
+```json
+{"publisher": ["Elsevier", "Springer"],
+ "publication_date": {"gte": "2020-01-01", "lt": "2024-01-01"}}
+```
+
+Structured DSL, only when you need OR or nesting:
+
+```json
+{"or": [{"field": "journal", "eq": "Nature"},
+        {"field": "journal", "eq": "Science"}]}
+```
+
+The server picks the format from the top-level keys. Combinator or `field` at
+the top means DSL; anything else means flat. One request, one format.
+
+## Read the response, not just the results
+
+- `filterWarnings`: you filtered on a field that is not indexed for this
+  collection. The call still ran, as a full scan. Rephrase against an indexed
+  field, and tell the user the filter was not exact.
+- `journalMetricExpansions`: what a metric threshold resolved to. Quote it
+  when the user asked for "high-impact" anything, so they see what that meant
+  in practice.
+- Each chunk carries its source metadata. Cite from it, as a link. Build the
+  URL from whichever identifier the payload provides, in this order:
+  `url` as given; `https://doi.org/<doi>`;
+  `https://pmc.ncbi.nlm.nih.gov/articles/<pmcid>/`;
+  `https://pubmed.ncbi.nlm.nih.gov/<pmid>/`. Do not invent a URL when none of
+  those is present; cite title, publisher, and year and say the record has no
+  resolvable link.
+- Shape of a finished answer: claims with inline links where they are made, a
+  `Sources` list at the end (title, publisher, year, link, one per line), and
+  the charge and remaining balance as the final line.
Full technical diff · 13 changed fields

changed /files/.app.json/sha256

BEFORE
"99e4bc0bc6d305e899f7db9bb294f48c0d1f5924da29937dfe0c4744edd4c264"
AFTER
"8af0a36b94d47fe851ae8923f7496ea4d797c54d862e04dc93bace040571d11b"

changed /files/.app.json/size

BEFORE
127
AFTER
99

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"f1010a87d6dd489f058f598db4c609f81093813f1e6b9689b20b63aec088f27f"
AFTER
"1d830bf85a291173ae965a6f917011ac1e688a4955395bdc7dec8fbf876f309d"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
4238
AFTER
4704

added /files/.mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "17fd688cca7991b2412d1b55692317a2d6a68f3d845a66368b4c28717a844fff",
  "size": 90
}

added /files/assets~1icon.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "b37aa36831366e7c55dd033dc16b703d18f5e0c81f374eb04e7f018612662a72",
  "size": 673
}

removed /files/skills~1redpine-search~1LICENSE

BEFORE
{
  "sha256": "8c29581e7d3f5676b658b024ca03c4226f4da54ba103bc13855856a340d8556e",
  "size": 1078
}
AFTER
Field is absent

changed /files/skills~1redpine-search~1SKILL.md/sha256

BEFORE
"f4bbd3c2483ac3a9f05b4f1c6936a7817230eeafe38964e9436dec584ef5db79"
AFTER
"c7d9228655e16d32ba471d80b57b2adbcb4c6bd11de57bff9c23a39ee7fcc9c4"

changed /files/skills~1redpine-search~1SKILL.md/size

BEFORE
5436
AFTER
9953

added /files/skills~1redpine-search~1references~1billing.md

BEFORE
Field was absent
AFTER
{
  "sha256": "687d4a7dccec5f46aaf96d27ba724fd153a2284d512f606b988251341dc4eead",
  "size": 2161
}

added /files/skills~1redpine-search~1references~1craft.md

BEFORE
Field was absent
AFTER
{
  "sha256": "c10686a0ef700cc4bb7dd659b630fe2b567318dfb6fa5a729bccd8406e112b66",
  "size": 2214
}

added /files/skills~1redpine-search~1references~1search.md

BEFORE
Field was absent
AFTER
{
  "sha256": "94bb8fbb80c399170b579a64038099c4f4303b23a79220cd474640c2fbc8725b",
  "size": 3685
}

added /files/skills~1redpine-search~1references~1troubleshooting.md

BEFORE
Field was absent
AFTER
{
  "sha256": "768a2efadb21ede8820c8568f8a55ae2a63829e1a0390a36921c5a2d27180916",
  "size": 2501
}
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "8af0a36b94d47fe851ae8923f7496ea4d797c54d862e04dc93bace040571d11b",
      "size": 99
    },
    ".codex-plugin/plugin.json": {
      "sha256": "1d830bf85a291173ae965a6f917011ac1e688a4955395bdc7dec8fbf876f309d",
      "size": 4704
    },
    ".mcp.json": {
      "sha256": "17fd688cca7991b2412d1b55692317a2d6a68f3d845a66368b4c28717a844fff",
      "size": 90
    },
    "assets/icon.svg": {
      "sha256": "b37aa36831366e7c55dd033dc16b703d18f5e0c81f374eb04e7f018612662a72",
      "size": 673
    },
    "skills/redpine-search/SKILL.md": {
      "sha256": "c7d9228655e16d32ba471d80b57b2adbcb4c6bd11de57bff9c23a39ee7fcc9c4",
      "size": 9953
    },
    "skills/redpine-search/references/billing.md": {
      "sha256": "687d4a7dccec5f46aaf96d27ba724fd153a2284d512f606b988251341dc4eead",
      "size": 2161
    },
    "skills/redpine-search/references/craft.md": {
      "sha256": "c10686a0ef700cc4bb7dd659b630fe2b567318dfb6fa5a729bccd8406e112b66",
      "size": 2214
    },
    "skills/redpine-search/references/search.md": {
      "sha256": "94bb8fbb80c399170b579a64038099c4f4303b23a79220cd474640c2fbc8725b",
      "size": 3685
    },
    "skills/redpine-search/references/troubleshooting.md": {
      "sha256": "768a2efadb21ede8820c8568f8a55ae2a63829e1a0390a36921c5a2d27180916",
      "size": 2501
    }
  }
}

SHA-256 of public snapshot: 85526d0009f777ad24ea4423a5e11b72c03974e6e6d3a1c5ac413d6cac81a8de