dshbase

Plugin directory / Developer / dsh-tool-somark

dsh-tool-somark

Verified · install-tested on dsh saurtone

✓ Actively maintained Builds on 8 official DSH packages Pure TypeScript

View on GitHub ↗ ← Back to plugin directory

2Stars
0Forks
0Open issues
TypeScriptLanguage
2026-08-15Last push
Cross-platformPlatform

What it does

SoMark document parser tool (somark_parse) plugin for DeepSeek Harness

✅
Our take
Works — verified, early-stage project

SoMark document parser tool (somark_parse) plugin for DeepSeek Harness It installs cleanly and boots without issues in our testing. It's early-stage but functional.

“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.

README

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.

Field Default Meaning
apiKey unset SoMark API key $SOMARK_API_KEY Empty → the tool errors at execution.
baseURL https://somark.tech/api/v1 API 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.
featureConfig cross-page off, inline image / table image / image understanding on, header-footer off Partial feature-switch overrides.
pollIntervalMs 2000 Delay between status polls.
maxPollAttempts 1000 Maximum polls (≈ 33 minutes at the default interval).
maxFileBytes 209715200 Upload cap; SoMark documents a 200 MB limit.
markdownCapChars 200000 Inclusive cap on the markdown characters returned in one result.
jsonCapChars 200000 Inclusive 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

Install

🧩 Let your agent install it (recommended)

Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:

dsh plugin add dshbase-catalog

Then say "install dsh-tool-somark for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.

This plugin is GitHub source (not published to npm) — install it straight from the repo:

Web profile:

dsh plugin --profile web add github:saurtone/dsh-tool-somark

Headless (CLI) profile:

dsh plugin --profile headless add github:saurtone/dsh-tool-somark

Test report

Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.

When to use it

Extend the agent's coding surface — give it a new tool, workflow, or integration so it handles a dev task it couldn't before.

Who it's for

Developers who want dsh to behave like a teammate on real codebases — editing, running, and verifying changes rather than just answering.

For developers — extending it

The tool/command surface is the seam: expose more of the SDK, add smarter context wiring, or tighten the loop between code changes and verification.

Security: not yet scanned — our daily static scan will cover it shortly.

Share this badge

More in Developer

Browse all 7797 plugins →