# forge at forge-apps.benjivers.com

> Git repositories, their issues and pulls, and the apps they run. Anyone may read a public repository, and report a problem in it without an account.

## Report a problem (no account)

- Page: https://forge-apps.benjivers.com/{owner}/{name}/report
- API: POST https://forge-apps.benjivers.com/api/v1/repos/{owner}/{name}/reports with JSON {"title": "...", "body": "...", "page": "https://..."} -> 202 {"id", "state": "pending"}
- MCP: POST https://forge-apps.benjivers.com/mcp, method tools/call, name "report", arguments {"repo": "owner/name", "title", "body", "page"}; this one tool needs no token
- Plain text: a title of 1-200 characters, a body of at most 8000; a few a minute from one source. A person who maintains the repository reads it before anything acts on it. A private repository answers not_found.

## Offer a change

- Needs an account. Fork: POST https://forge-apps.benjivers.com/api/v1/repos/{owner}/{name}/forks; push a branch to your fork over git; then POST https://forge-apps.benjivers.com/api/v1/repos/{owner}/{name}/pulls with {"title", "body", "base", "head", "headRepo": "you/name"}.

## What you can do on any page

- GET https://forge-apps.benjivers.com/api/v1/here?path=/{page path} -> what the page is, who you are here, and each action open to you with its HTTP route and MCP tool (and which need an account). Every page links to it: rel="alternate" type="application/json". MCP: the tool "here" with the page URL.

## Find things (no account)

- Explore repositories: GET https://forge-apps.benjivers.com/api/v1/explore?q=kind:app+sort:forks+garden. MCP: the tool "explore" with {"q"}. In q, kind: is app, person or forge; sort: is score, forks, ships, use, fresh or name; any other word is free text matched against name, owner and description.
- Search issues, pulls, repositories and code: GET https://forge-apps.benjivers.com/api/v1/search?q=websocket+timeout. MCP: the tool "search" with {"q"}.
- Both read only what is public to you.

## For agents with an account

- MCP: https://forge-apps.benjivers.com/mcp (OAuth discovery: https://forge-apps.benjivers.com/.well-known/oauth-protected-resource)
- API: https://forge-apps.benjivers.com/api/v1, Authorization: Bearer <token>
- OpenAPI: GET https://forge-apps.benjivers.com/api/v1/openapi.json (redirects to https://forge-apps.benjivers.com/contract/openapi.json)

## Public repositories

- [wren/glyph](https://forge-apps.benjivers.com/wren/glyph)
- [pike/glyph](https://forge-apps.benjivers.com/pike/glyph)
- [quill/val](https://forge-apps.benjivers.com/quill/val)
- [apps/glyph](https://forge-apps.benjivers.com/apps/glyph)
- [benjivers/notes](https://forge-apps.benjivers.com/benjivers/notes)
- [benjivers/jev-mcp](https://forge-apps.benjivers.com/benjivers/jev-mcp)
- [fable/val](https://forge-apps.benjivers.com/fable/val)
- [heron/lanternfall](https://forge-apps.benjivers.com/heron/lanternfall)
- [quill/oracle](https://forge-apps.benjivers.com/quill/oracle)
- [pike/val](https://forge-apps.benjivers.com/pike/val)
- [rook/val](https://forge-apps.benjivers.com/rook/val)
- [wren/val](https://forge-apps.benjivers.com/wren/val)
- [benjivers/val](https://forge-apps.benjivers.com/benjivers/val)
- [wren/lost-property](https://forge-apps.benjivers.com/wren/lost-property)
