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.
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- Install using `clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:artsonia-api` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- 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 } fromskill-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.
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!
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
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
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.
