DeepSeek Harness plugin

dsh-tool-somark

Model-facing SoMark document parser tool (somark_parse) for DeepSeek Harness

Jump to install

Source facts

Repository
saurtone/dsh-tool-somark
Latest update
Aug 14, 2026
Category
Models & Providers
GitHub stars
2
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/saurtone/dsh-tool-somark
Plugin: dsh-tool-somark
Author: saurtone

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer2 files
README.mdSource · read only

dsh-tool-somark

A DeepSeek Harness plugin that gives the model a somark_parse tool: parse PDFs, images, Word, and PowerPoint files into structure-preserving Markdown and JSON through the SoMark document-parsing API, with page and token counts.

The document read goes through ctx.fs, so any mounted filesystem policy applies to the read. Parsed content is returned as data and must never be executed.

Install

# from npm (once published)
dsh plugin --profile <name> add dsh-tool-somark

# from a tarball
dsh plugin --profile <name> add ./dsh-tool-somark-0.1.0.tgz

# from git (requires the package's `prepare` build; see the harness docs)
dsh plugin --profile <name> add github:you/dsh-tool-somark

Then boot the profile; the somark_parse tool registers automatically. The plugin is also usable as a plain library dependency for programmatic parsing (src/client.ts exports the API client).

Requirements

  • A DeepSeek Harness profile with the base bundle (@deepseek-ai/dsh-base), which provides ctx.tools and ctx.fs.
  • A SoMark API key. Set SOMARK_API_KEY in the environment or configure apiKey below. SoMark is an external paid service and receives the uploaded document contents.

Config

All fields optional; defaults apply when omitted.

FieldDefaultMeaning
apiKeyunsetSoMark API key $SOMARK_API_KEY Empty → the tool errors at execution.
baseURLhttps://somark.tech/api/v1API base; /parse/async and /parse/async_check append.
outputFormats['markdown', 'json']Formats requested when a call omits outputFormats.
elementFormats{ image: 'url', formula: 'latex', table: 'html', cs: 'image' }Partial per-element rendering-format overrides.
featureConfigcross-page off, inline image / table image / image understanding on, header-footer offPartial feature-switch overrides.
pollIntervalMs2000Delay between status polls.
maxPollAttempts1000Maximum polls (≈ 33 minutes at the default interval).
maxFileBytes209715200Upload cap; SoMark documents a 200 MB limit.
markdownCapChars200000Inclusive cap on the markdown characters returned in one result.
jsonCapChars200000Inclusive cap on the stringified JSON characters returned in one result.

Example profile patch (cordis.patch.yml in the profile, or a --patch overlay):

- id: tool-somark
  config:
    apiKey: 'sk-…'

Invalid element/feature/output-format values fail the plugin load with a CONFIG_INVALID error rather than being silently accepted.

The tool

somark_parse takes a required path (absolute path to the document) and an optional outputFormats array. It returns the parsed Markdown (capped by markdownCapChars, flagged truncated), the page/token counts, and the structured JSON when requested and within jsonCapChars (otherwise flagged jsonOmitted).

Failures carry machine-routable codes on the tool result: NO_API_KEY, DOCUMENT_NOT_FOUND, DOCUMENT_NOT_A_FILE, UNSUPPORTED_EXTENSION, FILE_TOO_LARGE, CONFIG_INVALID, SUBMIT_FAILED, TASK_FAILED, POLL_TIMEOUT, ABORTED, REQUEST_FAILED, INVALID_RESPONSE.

Development

pnpm install
pnpm test        # vitest (79 tests, 100% src coverage)
pnpm build       # tsc → lib/
pnpm pack        # tarball for dsh plugin add

Known Limitations and Deferred Work

  • No batch/directory parsing — one path per call; callers loop the tool.
  • Element and feature formats are deployment config, not per-call arguments.
  • No artifact persistence — the result returns content; consumers can persist via tool/result.
  • Oversized JSON is omitted (jsonOmitted), not spilled.

License

MIT