agentCLAWHUBUnverified

artsonia-api

Access Artsonia (artsonia.com) student-art portfolios, comments, fans, teacher feedback, and downloads from a shell with curl instead of running the artsonia-mcp server — log in with a username/password form POST to get a session cookie, then curl the server-rendered member pages. Use when you want Artsonia data without the MCP, in a script, or on a machine where the MCP isn't installed.

OpenClaw

Rank

62

Safety

84

Downloads

1.6k

Updated

Oct 10, 2026

Version

1.3.0

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 10, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 10, 2026
Adoption signal
1.6K downloadsadoption · observed Oct 10, 2026
Latest release
1.3.0release · observed Oct 9, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:artsonia-api
  1. Install using `clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:artsonia-api` in an isolated environment before connecting it to live workloads.
  2. No published capability contract is available yet, so validate auth and request/response behavior manually.
  3. Review the upstream CLAWHUB listing at https://clawhub.ai/chrischall/artsonia-api before using production credentials.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-artsonia-api/snapshot"

Documentation

CLAWHUB

146,862 characters of source documentation, loaded on request.

Extracted files

4 files captured from the source.

SKILL.md

---
name: artsonia-api
description: >-
  Access Artsonia (artsonia.com) student-art portfolios, comments, fans,
  teacher feedback, and downloads from a shell with curl instead of running
  the artsonia-mcp server — log in with a username/password form POST to get
  a session cookie, then curl the server-rendered member pages. Use when you
  want Artsonia data without the MCP, in a script, or on a machine where the
  MCP isn't installed.
---

# Artsonia via curl (no MCP)

Artsonia is a classic server-rendered `.asp` site — no public API, no JSON
store, no bot wall. All the data (students, portfolios, comments, fans,
feedback, awards, profile) lives in server-rendered HTML, and auth is a real
**username + password form POST** that hands back an HttpOnly session
cookie. No browser, no ContextMint Bridge extension, no `fpx` bridge is needed —
`curl` with a cookie jar reaches everything a signed-in parent account can.
(The MCP keeps `@fetchproxy/server` as an optional fallback transport for
some future walled endpoint, but nothing documented here needs it.)

This is the same data the `artsonia_*` MCP tools return, reached with `curl`
instead of a running server.

## One-time setup

```sh
export [email protected]
export ARTSONIA_PASSWORD='your-password'   # or: op read "op://Private/Artsonia/password"
JAR=~/.cache/artsonia-cookies.txt
mkdir -p ~/.cache   # ensure the jar's directory exists on a fresh box
: > "$JAR"   # fresh jar
```

## Log in (get the session cookie)

Read the password from stdin (`Password@-`) instead of putting it on the
command line — `--data-urlencode name=value` puts `value` in curl's argv,
which any local user can read via `ps`/`/proc` while the process runs. This
mirrors how the MCP itself sends the password: only in the POST body, never
on a command line.

```sh
printf '%s' "$ARTSONIA_PASSWORD" | curl -s -c "$JAR" -b "$JAR" -L \
  --data-urlencode "Username=$ARTSONIA_USERNAME" \
  --data-urlencode "Password@-" \
  --data-urlencode "TargetUrl=/members/" \
  --data-urlencode "Action=login" \
  -o /tmp/artsonia-login.html -w '%{http_code} %{url_effective}\n' \
  https://www.artsonia.com/members/login.asp
```

A successful login redirects away from `login.asp` (final URL ends in
`.../members/`) and leaves cookies in `$JAR`. If `url_effective` still ends
in `login.asp`, or `/tmp/artsonia-login.html` matches `You need to log
in|Parent \(or Fan\) Login`, the credentials are wrong — Artsonia has no
CSRF/`__VIEWSTATE` token, so a bad login is the only reason this fails.
Magic-link-only accounts can't use this (there's no password to POST).

Re-run this exact command any time a later request looks logged-out (see
"Session expiry" below) — `curl -c` overwrites the jar with a fresh session.

## Core call pattern

Every read is a `GET` through the jar; every write is a form-urlencoded
`POST` through the jar. Fetch to a file, then extract:

```sh
curl -s -b "$JAR" -c "$JAR" 'https://www.artsonia.com/members/' -o /tmp/dash.h

_meta.json

{
  "ownerId": "kn700jq4sjtf2anb0rk3ft4p7n856872",
  "slug": "artsonia-api",
  "version": "1.3.0",
  "publishedAt": 1791588227153
}

references/endpoints.md

# Artsonia endpoints — curl + parser recipes

All paths are relative to `https://www.artsonia.com`. `$JAR` is the cookie
jar from `SKILL.md`'s login step. All parsing functions below are the
MCP's own live-verified `src/parse.ts` (built to `dist/parse.js`) — build
once with `npm install && npm run build` in the repo, then reuse the
`node --input-type=module` one-liner shown per endpoint. Swap in
`grep -oP '(?<=KEY=)\d+'` on the raw HTML instead if you only need an id and
don't want to build the repo.

Shorthand used below: `$REPO` = the absolute path to this clone of
`artsonia-mcp` (e.g. `~/git/artsonia-mcp`); `$ID` = a resolved `artist_id`;
`$ART` = a resolved `artwork_id`.

```sh
# generic shape of every parse call — swap the function name + input path
node --input-type=module -e "
import { readFileSync } from 'node:fs';
import { parseStudents as fn } from '$REPO/dist/parse.js';
console.log(JSON.stringify(fn(readFileSync('/tmp/page.html', 'utf8'))));
" | jq '.'
```

## Reads

### list_students — GET `/members/`

```sh
curl -s -b "$JAR" -c "$JAR" 'https://www.artsonia.com/members/' -o /tmp/dash.html
node --input-type=module -e "
import { readFileSync } from 'node:fs';
import { parseStudents } from '$REPO/dist/parse.js';
console.log(JSON.stringify(parseStudents(readFileSync('/tmp/dash.html','utf8'))));
" | jq -r '.[] | "\(.artist_id)\t\(.name)\t\(.school)\tgrade \(.grade)\t\(.artwork_count) artworks"'
```
Fields: `artist_id`, `name`, `school`, `grade`, `artwork_count`,
`fan_count`, `comment_count`, `feedback_count`, `award_count`,
`portfolio_path`. Selector: `.artist-card`.

### get_activity — GET `/members/` (notifications)

Same fetch as above, different parser:

```sh
node --input-type=module -e "
import { readFileSync } from 'node:fs';
import { parseNotifications } from '$REPO/dist/parse.js';
console.log(JSON.stringify(parseNotifications(readFileSync('/tmp/dash.html','utf8'))));
" | jq '.'
```
Shape: `{ count, items: [{ title, body, href }] }`. Selectors:
`.textSubhead` (text `Notifications (N)`) + `div.notice`.

### get_portfolio — GET `/artists/portfolio.asp?id=$ID`

```sh
curl -s -b "$JAR" -c "$JAR" "https://www.artsonia.com/artists/portfolio.asp?id=$ID" -o /tmp/portfolio.html
node --input-type=module -e "
import { readFileSync } from 'node:fs';
import { parsePortfolio } from '$REPO/dist/parse.js';
console.log(JSON.stringify(parsePortfolio(readFileSync('/tmp/portfolio.html','utf8'))));
" | jq -r '.[] | "\(.artwork_id)\t\(.is_private)\t\(.thumbnail)"'
```
Fields: `artwork_id`, `is_private`, `thumbnail` (derived
`images.artsonia.com/art/small/<id>.jpg`). Selector: `.grid-item` that
contains an `a[href*="art.asp"]` (the first `.grid-item` is a non-artwork
section header — no art link — and is dropped by that filter).

### get_artwork / list_comments — GET `/museum/art.asp?id=$ART`

```sh
curl -s -b "$JAR" -c "$JAR" "https://www.artsonia.com/museum/art.asp?id=$ART" -o /tmp/artwork.html
node --input-type=module -e "
import { readFileSync } from

skill-card.md

## Description:

Guides agents in accessing Artsonia student portfolios, comments, fans, feedback, and artwork through authenticated curl requests without running the Artsonia MCP server.

This skill is ready for commercial/non-commercial use.

## Publisher:

[chrischall](https://clawhub.ai/user/chrischall)

### License/Terms of Use:

MIT-0

## Use Case:

Developers and authorized Artsonia account holders use this skill to retrieve student artwork and account information or manage comments, fan invitations, feedback, and notification settings with curl.

### Deployment Geography for Use:

Global

## Known Risks and Mitigations:

Risk: Private student artwork may be accessible through direct image links and bulk downloads.

Mitigation: Access only accounts and artwork you are authorized to use; avoid bulk or private downloads without explicit permission.

Risk: Form submissions can change live account state or send invitation emails.

Mitigation: Review each POST before sending it, use only authorized recipients, and verify changes against the affected page.

Risk: Login credentials, session cookies, and downloaded pages can expose account or student information.

Mitigation: Use a trusted machine, protect the cookie jar and temporary files, and clear them when finished.

## Reference(s):

- [Artsonia endpoint recipes](references/endpoints.md)
- [ClawHub skill listing](https://clawhub.ai/chrischall/skills/artsonia-api)
- [Artsonia](https://www.artsonia.com)

## Skill Output:

**Output Type(s):** [Shell commands, Guidance]

**Output Format:** [Markdown with curl and shell command examples]

**Output Parameters:** [1D]

**Other Properties Related to Output:** [Authenticated reads and live form submissions; artwork download commands can create image files.]

## Skill Version(s):

1.3.0 (source: ClawHub release evidence)

## Ethical Considerations:

Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
Github ReposUpdated 15h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/chrischall/skills/artsonia-api",
      "sourceUrl": "https://clawhub.ai/chrischall/skills/artsonia-api",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T08:15:15.075Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-artsonia-api/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-artsonia-api/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-10T08:15:15.075Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.6K downloads",
      "href": "https://clawhub.ai/chrischall/artsonia-api",
      "sourceUrl": "https://clawhub.ai/chrischall/artsonia-api",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T08:15:15.075Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.3.0",
      "href": "https://clawhub.ai/chrischall/artsonia-api",
      "sourceUrl": "https://clawhub.ai/chrischall/artsonia-api",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:23:47.153Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-artsonia-api/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-artsonia-api/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.3.0",
      "description": "- Removed the file: skill-card.md. - No changes to user-facing documentation or functionality.",
      "href": "https://clawhub.ai/chrischall/artsonia-api",
      "sourceUrl": "https://clawhub.ai/chrischall/artsonia-api",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:23:47.153Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to artsonia-api and adjacent AI workflows.